@tylertech/forge 2.1.0 → 2.3.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.
Files changed (161) hide show
  1. package/README.md +26 -12
  2. package/dist/esm/accordion/index.js +5 -5
  3. package/dist/esm/app-bar/help-button/index.js +7 -7
  4. package/dist/esm/app-bar/index.js +13 -13
  5. package/dist/esm/app-bar/menu-button/index.js +4 -4
  6. package/dist/esm/app-bar/notification-button/index.js +4 -4
  7. package/dist/esm/app-bar/profile-button/index.js +6 -6
  8. package/dist/esm/app-bar/search/index.js +3 -3
  9. package/dist/esm/autocomplete/index.js +9 -9
  10. package/dist/esm/banner/index.js +4 -4
  11. package/dist/esm/bottom-sheet/index.js +4 -4
  12. package/dist/esm/busy-indicator/index.js +3 -2
  13. package/dist/esm/button/index.js +2 -1
  14. package/dist/esm/calendar/calendar-dropdown/index.js +1 -1
  15. package/dist/esm/calendar/calendar-menu/index.js +1 -1
  16. package/dist/esm/calendar/index.js +5 -5
  17. package/dist/esm/checkbox/index.js +1 -1
  18. package/dist/esm/chip-field/index.js +6 -6
  19. package/dist/esm/chips/chip/index.js +4 -4
  20. package/dist/esm/chips/chip-set/index.js +4 -4
  21. package/dist/esm/chips/index.js +5 -5
  22. package/dist/esm/chunks/{chunk.AYOZGYGO.js → chunk.3AK3VGRT.js} +2 -2
  23. package/dist/esm/chunks/{chunk.AYOZGYGO.js.map → chunk.3AK3VGRT.js.map} +0 -0
  24. package/dist/esm/chunks/{chunk.52F6VUCF.js → chunk.3VR7VHL5.js} +26 -2
  25. package/dist/esm/chunks/{chunk.52F6VUCF.js.map → chunk.3VR7VHL5.js.map} +2 -2
  26. package/dist/esm/chunks/{chunk.D4XU5MZN.js → chunk.47D77ELY.js} +2 -2
  27. package/dist/esm/chunks/{chunk.D4XU5MZN.js.map → chunk.47D77ELY.js.map} +0 -0
  28. package/dist/esm/chunks/{chunk.FBUQQD2T.js → chunk.4ZBBOR4H.js} +2 -2
  29. package/dist/esm/chunks/{chunk.FBUQQD2T.js.map → chunk.4ZBBOR4H.js.map} +0 -0
  30. package/dist/esm/chunks/{chunk.OQRMHHPB.js → chunk.5CZWANU6.js} +3 -3
  31. package/dist/esm/chunks/{chunk.OQRMHHPB.js.map → chunk.5CZWANU6.js.map} +0 -0
  32. package/dist/esm/chunks/{chunk.7KILTPJ6.js → chunk.5INCRYSV.js} +2 -2
  33. package/dist/esm/chunks/{chunk.7KILTPJ6.js.map → chunk.5INCRYSV.js.map} +0 -0
  34. package/dist/esm/chunks/{chunk.NQOD2XB3.js → chunk.5VNEDRVC.js} +3 -3
  35. package/dist/esm/chunks/{chunk.NQOD2XB3.js.map → chunk.5VNEDRVC.js.map} +0 -0
  36. package/dist/esm/chunks/{chunk.2FXYTBYG.js → chunk.7M3P4QES.js} +6 -6
  37. package/dist/esm/chunks/{chunk.2FXYTBYG.js.map → chunk.7M3P4QES.js.map} +0 -0
  38. package/dist/esm/chunks/{chunk.EA7XMXI5.js → chunk.B425FZOZ.js} +2 -2
  39. package/dist/esm/chunks/{chunk.EA7XMXI5.js.map → chunk.B425FZOZ.js.map} +0 -0
  40. package/dist/esm/chunks/{chunk.COF6DD6T.js → chunk.BORNGK7Q.js} +2 -2
  41. package/dist/esm/chunks/{chunk.COF6DD6T.js.map → chunk.BORNGK7Q.js.map} +1 -1
  42. package/dist/esm/chunks/{chunk.J6LOWXOG.js → chunk.C44LSSHS.js} +2 -2
  43. package/dist/esm/chunks/{chunk.J6LOWXOG.js.map → chunk.C44LSSHS.js.map} +0 -0
  44. package/dist/esm/chunks/{chunk.2LSEVYAC.js → chunk.D4VIYWFB.js} +2 -2
  45. package/dist/esm/chunks/{chunk.2LSEVYAC.js.map → chunk.D4VIYWFB.js.map} +0 -0
  46. package/dist/esm/chunks/{chunk.KRW2IAIU.js → chunk.DKHOY6QU.js} +2 -2
  47. package/dist/esm/chunks/{chunk.KRW2IAIU.js.map → chunk.DKHOY6QU.js.map} +0 -0
  48. package/dist/esm/chunks/{chunk.MAGJQ2PP.js → chunk.DVYPTR7X.js} +3 -3
  49. package/dist/esm/chunks/{chunk.MAGJQ2PP.js.map → chunk.DVYPTR7X.js.map} +0 -0
  50. package/dist/esm/chunks/{chunk.O6UHX6FK.js → chunk.DWURTRGM.js} +6 -6
  51. package/dist/esm/chunks/{chunk.O6UHX6FK.js.map → chunk.DWURTRGM.js.map} +0 -0
  52. package/dist/esm/chunks/{chunk.SKISCNSC.js → chunk.EQCPRLUV.js} +2 -2
  53. package/dist/esm/chunks/{chunk.SKISCNSC.js.map → chunk.EQCPRLUV.js.map} +0 -0
  54. package/dist/esm/chunks/{chunk.D5DMZ7ZG.js → chunk.FF2RETWV.js} +3 -3
  55. package/dist/esm/chunks/{chunk.D5DMZ7ZG.js.map → chunk.FF2RETWV.js.map} +0 -0
  56. package/dist/esm/chunks/{chunk.XEF6G5NS.js → chunk.H3WRHPWA.js} +3 -3
  57. package/dist/esm/chunks/{chunk.XEF6G5NS.js.map → chunk.H3WRHPWA.js.map} +0 -0
  58. package/dist/esm/chunks/{chunk.XIDZXGD4.js → chunk.HFELDK4X.js} +4 -4
  59. package/dist/esm/chunks/{chunk.XIDZXGD4.js.map → chunk.HFELDK4X.js.map} +0 -0
  60. package/dist/esm/chunks/{chunk.4BG22DGY.js → chunk.HNKH3ZP5.js} +38 -38
  61. package/dist/esm/chunks/{chunk.4BG22DGY.js.map → chunk.HNKH3ZP5.js.map} +0 -0
  62. package/dist/esm/chunks/{chunk.ETP6HSXO.js → chunk.HVD3BBQG.js} +2 -2
  63. package/dist/esm/chunks/{chunk.ETP6HSXO.js.map → chunk.HVD3BBQG.js.map} +0 -0
  64. package/dist/esm/chunks/{chunk.RR7HDQU6.js → chunk.HWWCD755.js} +3 -3
  65. package/dist/esm/chunks/{chunk.RR7HDQU6.js.map → chunk.HWWCD755.js.map} +0 -0
  66. package/dist/esm/chunks/{chunk.7FC5CPLE.js → chunk.I5JCM7RT.js} +2 -2
  67. package/dist/esm/chunks/{chunk.7FC5CPLE.js.map → chunk.I5JCM7RT.js.map} +0 -0
  68. package/dist/esm/chunks/{chunk.EARNUKJ2.js → chunk.IYOZSEZ3.js} +2 -2
  69. package/dist/esm/chunks/{chunk.EARNUKJ2.js.map → chunk.IYOZSEZ3.js.map} +0 -0
  70. package/dist/esm/chunks/{chunk.XO3XVXWW.js → chunk.KQB2BYBK.js} +3 -3
  71. package/dist/esm/chunks/{chunk.XO3XVXWW.js.map → chunk.KQB2BYBK.js.map} +0 -0
  72. package/dist/esm/chunks/{chunk.BOWCSPCH.js → chunk.L65L5VJ6.js} +3 -3
  73. package/dist/esm/chunks/{chunk.BOWCSPCH.js.map → chunk.L65L5VJ6.js.map} +0 -0
  74. package/dist/esm/chunks/{chunk.ST3R6JEE.js → chunk.LKUKESRQ.js} +2 -2
  75. package/dist/esm/chunks/{chunk.ST3R6JEE.js.map → chunk.LKUKESRQ.js.map} +0 -0
  76. package/dist/esm/chunks/{chunk.JQQOZMKQ.js → chunk.MSCWHFJZ.js} +5 -5
  77. package/dist/esm/chunks/{chunk.JQQOZMKQ.js.map → chunk.MSCWHFJZ.js.map} +0 -0
  78. package/dist/esm/chunks/{chunk.CGHKW6S6.js → chunk.NJRPAX7P.js} +4 -4
  79. package/dist/esm/chunks/{chunk.CGHKW6S6.js.map → chunk.NJRPAX7P.js.map} +0 -0
  80. package/dist/esm/chunks/{chunk.ZG4NZM2P.js → chunk.NL6CT7BU.js} +2 -2
  81. package/dist/esm/chunks/{chunk.ZG4NZM2P.js.map → chunk.NL6CT7BU.js.map} +0 -0
  82. package/dist/esm/chunks/{chunk.XGMOOPIE.js → chunk.O7DYWQD7.js} +4 -4
  83. package/dist/esm/chunks/{chunk.XGMOOPIE.js.map → chunk.O7DYWQD7.js.map} +0 -0
  84. package/dist/esm/chunks/{chunk.OJI6ZRYW.js → chunk.OZAKUOZA.js} +2 -2
  85. package/dist/esm/chunks/{chunk.OJI6ZRYW.js.map → chunk.OZAKUOZA.js.map} +0 -0
  86. package/dist/esm/chunks/{chunk.5NXVVSTU.js → chunk.P477KUJ4.js} +16 -1
  87. package/dist/esm/chunks/chunk.P477KUJ4.js.map +7 -0
  88. package/dist/esm/chunks/{chunk.FMMPWQKC.js → chunk.PZ25GQD2.js} +3 -3
  89. package/dist/esm/chunks/{chunk.FMMPWQKC.js.map → chunk.PZ25GQD2.js.map} +0 -0
  90. package/dist/esm/chunks/{chunk.NRI7SWVX.js → chunk.RF5UPII7.js} +6 -6
  91. package/dist/esm/chunks/{chunk.NRI7SWVX.js.map → chunk.RF5UPII7.js.map} +0 -0
  92. package/dist/esm/chunks/{chunk.3KCCCXWS.js → chunk.RMVJBNCY.js} +2 -2
  93. package/dist/esm/chunks/{chunk.3KCCCXWS.js.map → chunk.RMVJBNCY.js.map} +0 -0
  94. package/dist/esm/chunks/{chunk.ETQIBLKP.js → chunk.U7HKGOBR.js} +3 -3
  95. package/dist/esm/chunks/{chunk.ETQIBLKP.js.map → chunk.U7HKGOBR.js.map} +0 -0
  96. package/dist/esm/chunks/{chunk.7Y4NHCJH.js → chunk.UM3J4AZ7.js} +37 -3
  97. package/dist/esm/chunks/chunk.UM3J4AZ7.js.map +7 -0
  98. package/dist/esm/chunks/{chunk.AHQ6QX3J.js → chunk.V3FSZDTW.js} +10 -6
  99. package/dist/esm/chunks/chunk.V3FSZDTW.js.map +7 -0
  100. package/dist/esm/chunks/{chunk.P43Z3YAS.js → chunk.V6TRG2CM.js} +2 -2
  101. package/dist/esm/chunks/{chunk.P43Z3YAS.js.map → chunk.V6TRG2CM.js.map} +0 -0
  102. package/dist/esm/chunks/{chunk.JICZQ2BO.js → chunk.VEC77KBM.js} +2 -2
  103. package/dist/esm/chunks/{chunk.JICZQ2BO.js.map → chunk.VEC77KBM.js.map} +0 -0
  104. package/dist/esm/chunks/{chunk.ZABF5CI6.js → chunk.Y2ORADJS.js} +6 -6
  105. package/dist/esm/chunks/{chunk.ZABF5CI6.js.map → chunk.Y2ORADJS.js.map} +0 -0
  106. package/dist/esm/chunks/{chunk.KI3IHPS2.js → chunk.YKNYR3NX.js} +2 -2
  107. package/dist/esm/chunks/{chunk.KI3IHPS2.js.map → chunk.YKNYR3NX.js.map} +0 -0
  108. package/dist/esm/chunks/{chunk.BZPQIDQP.js → chunk.ZIFMMVW6.js} +3 -3
  109. package/dist/esm/chunks/{chunk.BZPQIDQP.js.map → chunk.ZIFMMVW6.js.map} +0 -0
  110. package/dist/esm/chunks/{chunk.4V5O2CPU.js → chunk.ZPABBQEA.js} +4 -4
  111. package/dist/esm/chunks/{chunk.4V5O2CPU.js.map → chunk.ZPABBQEA.js.map} +0 -0
  112. package/dist/esm/color-picker/index.js +4 -4
  113. package/dist/esm/core/index.js +6 -4
  114. package/dist/esm/core/utils/index.js +5 -3
  115. package/dist/esm/date-picker/index.js +7 -7
  116. package/dist/esm/date-range-picker/index.js +7 -7
  117. package/dist/esm/dialog/index.js +4 -4
  118. package/dist/esm/expansion-panel/index.js +4 -4
  119. package/dist/esm/file-picker/index.js +3 -3
  120. package/dist/esm/icon/index.js +2 -2
  121. package/dist/esm/icon-button/index.js +3 -3
  122. package/dist/esm/index.js +50 -48
  123. package/dist/esm/label-value/index.js +1 -1
  124. package/dist/esm/list-dropdown/index.js +3 -3
  125. package/dist/esm/menu/index.js +5 -5
  126. package/dist/esm/open-icon/index.js +3 -3
  127. package/dist/esm/paginator/index.js +12 -10
  128. package/dist/esm/profile-card/index.js +3 -2
  129. package/dist/esm/quantity-field/index.js +4 -4
  130. package/dist/esm/select/core/index.js +5 -5
  131. package/dist/esm/select/index.js +9 -9
  132. package/dist/esm/select/select/index.js +7 -7
  133. package/dist/esm/select/select-dropdown/index.js +7 -7
  134. package/dist/esm/slider/index.js +1 -1
  135. package/dist/esm/stepper/index.js +4 -4
  136. package/dist/esm/stepper/step/index.js +3 -3
  137. package/dist/esm/stepper/stepper/index.js +4 -4
  138. package/dist/esm/switch/index.js +1 -1
  139. package/dist/esm/table/index.js +5 -5
  140. package/dist/esm/tabs/index.js +4 -4
  141. package/dist/esm/tabs/tab-bar/index.js +4 -4
  142. package/dist/esm/time-picker/index.js +6 -6
  143. package/dist/esm/toast/index.js +5 -5
  144. package/esm/button/button.d.ts +2 -0
  145. package/esm/button/button.js +15 -0
  146. package/esm/core/utils/utils.d.ts +14 -0
  147. package/esm/core/utils/utils.js +32 -0
  148. package/esm/icon-button/icon-button-component-delegate.d.ts +8 -1
  149. package/esm/icon-button/icon-button-component-delegate.js +19 -0
  150. package/esm/icon-button/icon-button.d.ts +2 -0
  151. package/esm/icon-button/icon-button.js +17 -1
  152. package/esm/label-value/label-value.js +1 -1
  153. package/esm/paginator/paginator.js +4 -2
  154. package/package.json +1 -1
  155. package/styles/circular-progress/_mixins.scss +1 -1
  156. package/styles/label-value/_mixins.scss +189 -2
  157. package/styles/label-value/_variables.scss +5 -31
  158. package/styles/label-value/label-value.scss +1 -2
  159. package/dist/esm/chunks/chunk.5NXVVSTU.js.map +0 -7
  160. package/dist/esm/chunks/chunk.7Y4NHCJH.js.map +0 -7
  161. package/dist/esm/chunks/chunk.AHQ6QX3J.js.map +0 -7
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/button/button-constants.ts", "../../src/button/button.ts", "../../src/button/button-component-delegate.ts", "../../src/button/index.ts"],
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}button`;\n\nconst classes = {\n BUTTON: 'forge-button',\n LABEL: 'forge-button__label',\n ICON: 'forge-button__icon',\n BUTTON_RAISED: 'forge-button--raised',\n BUTTON_UNELEVATED: 'forge-button--unelevated',\n BUTTON_OUTLINED: 'forge-button--outlined',\n BUTTON_DENSE: 'forge-button--dense',\n RIPPLE: 'forge-button__ripple'\n};\n\nconst selectors = {\n BUTTON: 'button',\n LABEL: `span:not(.${classes.RIPPLE})`,\n ICON: 'i,forge-icon,[data-forge-button-icon]',\n RIPPLE: `.${classes.RIPPLE}`\n};\n\nconst attributes = {\n TYPE: 'type',\n DISABLED: 'disabled'\n};\n\nexport const BUTTON_CONSTANTS = {\n elementName,\n classes,\n selectors,\n attributes\n};\n", "import { CustomElement, ensureChildren, toggleAttribute } from '@tylertech/forge-core';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport { BUTTON_CONSTANTS } from './button-constants';\nimport { userInteractionListener } from '../core/utils';\nimport { ForgeRipple } from '../ripple';\n\nexport interface IButtonComponent extends IBaseComponent {\n type: string;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-button': IButtonComponent;\n }\n}\n\n/**\n * The custom element class behind the `<forge-button>` element.\n */\n@CustomElement({\n name: BUTTON_CONSTANTS.elementName\n})\nexport class ButtonComponent extends BaseComponent implements IButtonComponent {\n public static get observedAttributes(): string[] {\n return [BUTTON_CONSTANTS.attributes.TYPE];\n }\n\n private _rippleInstance: ForgeRipple;\n private _buttonElement: HTMLButtonElement;\n private _type: string;\n private _mutationObserver: MutationObserver;\n private _buttonAttrMutationObserver: MutationObserver;\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 public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case BUTTON_CONSTANTS.attributes.TYPE:\n this.type = newValue;\n break;\n }\n }\n\n public disconnectedCallback(): void {\n if (this._rippleInstance) {\n this._rippleInstance.destroy();\n }\n if (this._mutationObserver) {\n this._mutationObserver.disconnect();\n }\n if (this._buttonAttrMutationObserver) {\n this._buttonAttrMutationObserver.disconnect();\n }\n }\n\n /**\n * Sets the type of button decoration.\n * Possible values are: raised, elevated, outlined, and dense.\n * Can be combined as: outlined-dense.\n */\n public get type(): string {\n return this._type;\n }\n public set type(value: string) {\n if (this._type !== value) {\n this._type = value;\n this._applyType(value);\n this.setAttribute(BUTTON_CONSTANTS.attributes.TYPE, this._type);\n }\n }\n\n private _applyType(type: string): void {\n if (this._buttonElement) {\n this._buttonElement.classList.remove(BUTTON_CONSTANTS.classes.BUTTON_RAISED);\n this._buttonElement.classList.remove(BUTTON_CONSTANTS.classes.BUTTON_UNELEVATED);\n this._buttonElement.classList.remove(BUTTON_CONSTANTS.classes.BUTTON_OUTLINED);\n this._buttonElement.classList.remove(BUTTON_CONSTANTS.classes.BUTTON_DENSE);\n\n if (type.includes('raised')) {\n this._buttonElement.classList.add(BUTTON_CONSTANTS.classes.BUTTON_RAISED);\n }\n if (type.includes('unelevated')) {\n this._buttonElement.classList.add(BUTTON_CONSTANTS.classes.BUTTON_UNELEVATED);\n }\n if (type.includes('outlined')) {\n this._buttonElement.classList.add(BUTTON_CONSTANTS.classes.BUTTON_OUTLINED);\n }\n if (type.includes('dense')) {\n this._buttonElement.classList.add(BUTTON_CONSTANTS.classes.BUTTON_DENSE);\n }\n }\n }\n\n private _initialize(): void {\n this._initializeButton();\n this._initializeMutationObserver();\n }\n\n private _initializeButton(): void {\n this._buttonElement = this.querySelector(BUTTON_CONSTANTS.selectors.BUTTON) as HTMLButtonElement;\n if (!this._buttonElement) {\n return;\n }\n\n if (this.hasAttribute(BUTTON_CONSTANTS.attributes.TYPE)) {\n this._type = this.getAttribute(BUTTON_CONSTANTS.attributes.TYPE) as string;\n this._applyType(this._type);\n }\n this._buttonElement.classList.add(BUTTON_CONSTANTS.classes.BUTTON);\n\n this._syncDisabledState();\n this._initializeButtonChildren();\n\n // We wait to initialize the ripple instance until the user interacts with the component to avoid unnecessary performance overhead\n this._deferRippleInitialization();\n }\n\n private async _deferRippleInitialization(): Promise<void> {\n const type = await userInteractionListener(this._buttonElement);\n if (!this._rippleInstance) {\n this._initRipple();\n if (type === 'focusin') {\n // eslint-disable-next-line @typescript-eslint/dot-notation\n (this._rippleInstance as ForgeRipple)['foundation'].handleFocus();\n }\n }\n }\n\n private _initRipple(): void {\n if (this._rippleInstance) {\n this._rippleInstance.destroy();\n }\n this._rippleInstance = new ForgeRipple(this._buttonElement);\n }\n\n private _initializeButtonChildren(): void {\n if (!this._buttonElement.querySelector(BUTTON_CONSTANTS.selectors.RIPPLE)) {\n const rippleElement = document.createElement('span');\n rippleElement.classList.add(BUTTON_CONSTANTS.classes.RIPPLE);\n this._buttonElement.appendChild(rippleElement);\n }\n\n const labelElement = this.querySelector(BUTTON_CONSTANTS.selectors.LABEL);\n if (labelElement) {\n labelElement.classList.add(BUTTON_CONSTANTS.classes.LABEL);\n }\n\n const iconElements = Array.from(this.querySelectorAll(BUTTON_CONSTANTS.selectors.ICON));\n iconElements.forEach(iconElement => {\n iconElement.classList.add(BUTTON_CONSTANTS.classes.ICON);\n if (!iconElement.hasAttribute('aria-hidden')) {\n iconElement.setAttribute('aria-hidden', 'true');\n }\n });\n }\n\n private _initializeMutationObserver(): void {\n if (!this._mutationObserver) {\n const config: MutationObserverInit = { childList: true, subtree: true };\n const callback: MutationCallback = mutationList => {\n if (this._buttonWasAdded(mutationList)) {\n this._initializeButton();\n } else if (mutationList.some(mutation => mutation.addedNodes.length)) {\n this._initializeButtonChildren();\n }\n };\n this._mutationObserver = new MutationObserver(callback);\n this._mutationObserver.observe(this, config);\n \n if (this._buttonElement) {\n // Watch attributes on the `<button>` element\n this._buttonAttrMutationObserver = new MutationObserver(mutationList => {\n if (mutationList.some(mutation => mutation.attributeName === 'disabled')) {\n this._syncDisabledState();\n }\n });\n this._buttonAttrMutationObserver.observe(this._buttonElement, { attributes: true, attributeFilter: ['disabled'] });\n }\n }\n }\n\n private _buttonWasAdded(mutationList: MutationRecord[]): boolean {\n return mutationList.some(mutation => {\n return Array.from(mutation.addedNodes)\n .some(node => node.nodeName.toLowerCase() === BUTTON_CONSTANTS.selectors.BUTTON);\n });\n }\n\n private _syncDisabledState(): void {\n toggleAttribute(this, this._buttonElement.disabled, BUTTON_CONSTANTS.attributes.DISABLED);\n }\n}\n\n", "import { BaseComponentDelegate, IBaseComponentDelegateConfig, IBaseComponentDelegateOptions } from '../core/delegates/base-component-delegate';\nimport { IButtonComponent } from './button';\nimport { BUTTON_CONSTANTS } from './button-constants';\n\nexport type ButtonComponentDelegateProps = Partial<IButtonComponent>;\nexport interface IButtonComponentDelegateOptions extends IBaseComponentDelegateOptions {\n type?: 'button' | 'submit';\n text?: string;\n}\nexport interface IButtonComponentDelegateConfig extends IBaseComponentDelegateConfig<IButtonComponent, IButtonComponentDelegateOptions> {}\n\nexport class ButtonComponentDelegate extends BaseComponentDelegate<IButtonComponent, IButtonComponentDelegateOptions> {\n private _buttonElement?: HTMLButtonElement;\n\n constructor(config?: IButtonComponentDelegateConfig) {\n super(config);\n }\n\n public override destroy(): void {\n this._buttonElement = undefined;\n }\n\n public get buttonElement(): HTMLButtonElement | undefined {\n return this._buttonElement;\n }\n\n protected _build(): IButtonComponent {\n const component = document.createElement(BUTTON_CONSTANTS.elementName);\n\n this._buttonElement = document.createElement('button');\n this._buttonElement.type = this._config.options?.type || 'button';\n this._buttonElement.textContent = this._config.options?.text || '';\n component.appendChild(this._buttonElement);\n\n return component;\n }\n\n public onClick(listener: (evt: MouseEvent) => void): void {\n this._buttonElement?.addEventListener('click', listener);\n }\n\n public onFocus(listener: (evt: Event) => void): void {\n this._buttonElement?.addEventListener('focus', evt => listener(evt));\n }\n\n public onBlur(listener: (evt: Event) => void): void {\n this._buttonElement?.addEventListener('blur', evt => listener(evt));\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\nimport { ButtonComponent } from './button';\n\nexport * from './button';\nexport * from './button-constants';\nexport * from './button-component-delegate';\n\nexport function defineButtonComponent(): void {\n defineCustomElement(ButtonComponent);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -6,7 +6,7 @@
6
6
  import {
7
7
  PROFILE_CARD_CONSTANTS,
8
8
  ProfileCardComponent
9
- } from "./chunk.3KCCCXWS.js";
9
+ } from "./chunk.RMVJBNCY.js";
10
10
  import {
11
11
  AVATAR_CONSTANTS,
12
12
  AvatarComponent
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk.5EEEKOOK.js";
18
18
  import {
19
19
  IconButtonComponent
20
- } from "./chunk.7Y4NHCJH.js";
20
+ } from "./chunk.UM3J4AZ7.js";
21
21
  import {
22
22
  TooltipComponent
23
23
  } from "./chunk.2F6PST3N.js";
@@ -436,4 +436,4 @@ export {
436
436
  AppBarProfileButtonComponent,
437
437
  defineAppBarProfileButtonComponent
438
438
  };
439
- //# sourceMappingURL=chunk.FMMPWQKC.js.map
439
+ //# sourceMappingURL=chunk.PZ25GQD2.js.map
@@ -15,14 +15,14 @@ import {
15
15
  } from "./chunk.WAJDLUSQ.js";
16
16
  import {
17
17
  CHIP_FIELD_CONSTANTS
18
- } from "./chunk.EARNUKJ2.js";
18
+ } from "./chunk.IYOZSEZ3.js";
19
19
  import {
20
20
  ListDropdownAware
21
- } from "./chunk.ST3R6JEE.js";
21
+ } from "./chunk.LKUKESRQ.js";
22
22
  import {
23
23
  ListDropdown,
24
24
  ListDropdownAwareFoundation
25
- } from "./chunk.D4XU5MZN.js";
25
+ } from "./chunk.47D77ELY.js";
26
26
  import {
27
27
  SkeletonComponent
28
28
  } from "./chunk.EL6B2ODN.js";
@@ -50,13 +50,13 @@ import {
50
50
  IconComponent,
51
51
  IconComponentDelegate,
52
52
  IconRegistry
53
- } from "./chunk.P43Z3YAS.js";
53
+ } from "./chunk.V6TRG2CM.js";
54
54
  import {
55
55
  FormFieldComponentDelegate
56
56
  } from "./chunk.HZISALRH.js";
57
57
  import {
58
58
  highlightTextHTML
59
- } from "./chunk.52F6VUCF.js";
59
+ } from "./chunk.3VR7VHL5.js";
60
60
  import {
61
61
  BaseAdapter
62
62
  } from "./chunk.KZATVOA6.js";
@@ -1344,4 +1344,4 @@ export {
1344
1344
  AutocompleteComponentDelegate,
1345
1345
  defineAutocompleteComponent
1346
1346
  };
1347
- //# sourceMappingURL=chunk.NRI7SWVX.js.map
1347
+ //# sourceMappingURL=chunk.RF5UPII7.js.map
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk.ZUM5YLB2.js";
12
12
  import {
13
13
  ButtonComponent
14
- } from "./chunk.5NXVVSTU.js";
14
+ } from "./chunk.P477KUJ4.js";
15
15
  import {
16
16
  BaseAdapter
17
17
  } from "./chunk.KZATVOA6.js";
@@ -341,4 +341,4 @@ export {
341
341
  ProfileCardComponent,
342
342
  defineProfileCardComponent
343
343
  };
344
- //# sourceMappingURL=chunk.3KCCCXWS.js.map
344
+ //# sourceMappingURL=chunk.RMVJBNCY.js.map
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import {
7
7
  IconButtonComponent
8
- } from "./chunk.7Y4NHCJH.js";
8
+ } from "./chunk.UM3J4AZ7.js";
9
9
  import {
10
10
  tylIconUnfoldMore
11
11
  } from "./chunk.GS2AXUCN.js";
@@ -15,7 +15,7 @@ import {
15
15
  import {
16
16
  IconComponent,
17
17
  IconRegistry
18
- } from "./chunk.P43Z3YAS.js";
18
+ } from "./chunk.V6TRG2CM.js";
19
19
  import {
20
20
  BaseAdapter
21
21
  } from "./chunk.KZATVOA6.js";
@@ -975,4 +975,4 @@ export {
975
975
  ColorPickerComponent,
976
976
  defineColorPickerComponent
977
977
  };
978
- //# sourceMappingURL=chunk.ETQIBLKP.js.map
978
+ //# sourceMappingURL=chunk.U7HKGOBR.js.map
@@ -8,7 +8,10 @@ import {
8
8
  } from "./chunk.C2MR3RDF.js";
9
9
  import {
10
10
  ICON_CONSTANTS
11
- } from "./chunk.P43Z3YAS.js";
11
+ } from "./chunk.V6TRG2CM.js";
12
+ import {
13
+ userInteractionListener
14
+ } from "./chunk.3VR7VHL5.js";
12
15
  import {
13
16
  BaseComponentDelegate
14
17
  } from "./chunk.WT4W2IFT.js";
@@ -181,6 +184,18 @@ var IconButtonComponent = class extends BaseComponent {
181
184
  if (this._toggle) {
182
185
  this._initializeToggle();
183
186
  }
187
+ this._deferRippleInitialization();
188
+ }
189
+ async _deferRippleInitialization() {
190
+ const type = await userInteractionListener(this._buttonElement);
191
+ if (!this._rippleInstance) {
192
+ this._initRipple();
193
+ if (type === "focusin") {
194
+ this._rippleInstance["foundation"].handleFocus();
195
+ }
196
+ }
197
+ }
198
+ _initRipple() {
184
199
  if (this._rippleInstance) {
185
200
  this._rippleInstance.destroy();
186
201
  }
@@ -227,7 +242,8 @@ var IconButtonComponent = class extends BaseComponent {
227
242
  }
228
243
  const icons = Array.from(this._buttonElement.querySelectorAll(ICON_BUTTON_CONSTANTS.selectors.ICON));
229
244
  if (icons.length !== 2) {
230
- throw new Error('You must specify two icons, one for "on" and one for "off".');
245
+ console.error('You must specify two icons, one for "on" and one for "off".');
246
+ return;
231
247
  }
232
248
  icons.forEach((icon) => icon.classList.add(ICON_BUTTON_CONSTANTS.classes.ICON));
233
249
  if (!icons.some((icon) => icon.classList.contains(ICON_BUTTON_CONSTANTS.classes.ICON_ON))) {
@@ -270,10 +286,19 @@ var IconButtonComponentDelegate = class extends BaseComponentDelegate {
270
286
  super(config);
271
287
  }
272
288
  _build() {
289
+ var _a;
273
290
  const component = document.createElement(ICON_BUTTON_CONSTANTS.elementName);
274
291
  this._buttonElement = document.createElement("button");
275
292
  this._buttonElement.type = "button";
276
293
  component.appendChild(this._buttonElement);
294
+ if ((_a = this._config.options) == null ? void 0 : _a.tooltip) {
295
+ const tooltip = document.createElement("forge-tooltip");
296
+ tooltip.textContent = this._config.options.tooltip;
297
+ if (this._config.options.tooltipPosition) {
298
+ tooltip.position = this._config.options.tooltipPosition;
299
+ }
300
+ component.appendChild(tooltip);
301
+ }
277
302
  return component;
278
303
  }
279
304
  get iconElement() {
@@ -288,6 +313,9 @@ var IconButtonComponentDelegate = class extends BaseComponentDelegate {
288
313
  get butttonElement() {
289
314
  return this._buttonElement;
290
315
  }
316
+ get buttonElement() {
317
+ return this._buttonElement;
318
+ }
291
319
  _configure() {
292
320
  this._configureIcon();
293
321
  }
@@ -306,6 +334,12 @@ var IconButtonComponentDelegate = class extends BaseComponentDelegate {
306
334
  case "component":
307
335
  this._iconElement = document.createElement(ICON_CONSTANTS.elementName);
308
336
  this._iconElement.name = this._config.options.iconName;
337
+ if (this._config.options.iconExternal !== void 0) {
338
+ this._iconElement.external = !!this._config.options.iconExternal;
339
+ }
340
+ if (this._config.options.iconExternalType) {
341
+ this._iconElement.externalType = this._config.options.iconExternalType;
342
+ }
309
343
  if (this._config.options.iconClass) {
310
344
  addClass(this._config.options.iconClass, this._iconElement);
311
345
  }
@@ -335,4 +369,4 @@ export {
335
369
  IconButtonComponentDelegate,
336
370
  defineIconButtonComponent
337
371
  };
338
- //# sourceMappingURL=chunk.7Y4NHCJH.js.map
372
+ //# sourceMappingURL=chunk.UM3J4AZ7.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/icon-button/icon-button-constants.ts", "../../src/icon-button/icon-button.ts", "../../src/icon-button/icon-button-component-delegate.ts", "../../src/icon-button/index.ts"],
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}icon-button`;\n\nconst attributes = {\n TOGGLE: 'toggle',\n IS_ON: 'is-on',\n ICON_ON: 'forge-icon-button-on',\n DENSE: 'dense',\n DENSITY_LEVEL: 'density-level'\n};\n\nconst selectors = {\n BUTTON: 'button',\n ICON: 'i, span, svg, img, forge-icon'\n};\n\nconst classes = {\n BUTTON: 'forge-icon-button',\n BUTTON_ON: 'forge-icon-button--on',\n BUTTON_DENSE: 'forge-icon-button--dense',\n ICON: 'forge-icon-button__icon',\n ICON_ON: 'forge-icon-button__icon--on',\n DENSITY: [\n 'forge-icon-button--dense-1',\n 'forge-icon-button--dense-2',\n 'forge-icon-button--dense-3',\n 'forge-icon-button--dense-4',\n 'forge-icon-button--dense-5',\n 'forge-icon-button--dense-6'\n ]\n};\n\nconst events = {\n CHANGE: `${elementName}-change`\n};\n\nexport const ICON_BUTTON_CONSTANTS = {\n elementName,\n attributes,\n selectors,\n classes,\n events\n};\n", "import { coerceBoolean, coerceNumber, CustomElement, emitEvent, ensureChild, toggleClass } from '@tylertech/forge-core';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport { ForgeRipple } from '../ripple';\nimport { userInteractionListener } from '../core/utils';\nimport { ICON_BUTTON_CONSTANTS } from './icon-button-constants';\n\nexport interface IIconButtonComponent extends IBaseComponent {\n toggle: boolean;\n isOn: boolean;\n dense: boolean;\n densityLevel: number;\n layout(): void;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-icon-button': IIconButtonComponent;\n }\n\n interface HTMLElementEventMap {\n 'forge-icon-button-change': CustomEvent<boolean>;\n }\n}\n\n/**\n * The custom element class behind the `<forge-icon-button>` element.\n */\n@CustomElement({\n name: ICON_BUTTON_CONSTANTS.elementName\n})\nexport class IconButtonComponent extends BaseComponent implements IIconButtonComponent {\n public static get observedAttributes(): string[] {\n return [\n ICON_BUTTON_CONSTANTS.attributes.IS_ON,\n ICON_BUTTON_CONSTANTS.attributes.DENSE,\n ICON_BUTTON_CONSTANTS.attributes.DENSITY_LEVEL,\n ICON_BUTTON_CONSTANTS.attributes.TOGGLE\n ];\n }\n\n private _rippleInstance: ForgeRipple;\n private _buttonElement: HTMLButtonElement;\n private _toggle = false;\n private _isOn = false;\n private _dense = false;\n private _densityLevel = 5;\n private _toggleHandler: (event: Event) => void;\n\n constructor() {\n super();\n }\n\n public connectedCallback(): void {\n if (this.querySelector(ICON_BUTTON_CONSTANTS.selectors.BUTTON)) {\n this._initialize();\n } else {\n ensureChild(this, ICON_BUTTON_CONSTANTS.selectors.BUTTON).then(() => this._initialize());\n }\n }\n\n public disconnectedCallback(): void {\n if (this._rippleInstance) {\n this._rippleInstance.destroy();\n }\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case ICON_BUTTON_CONSTANTS.attributes.IS_ON:\n this.isOn = coerceBoolean(newValue);\n break;\n case ICON_BUTTON_CONSTANTS.attributes.DENSE:\n this.dense = coerceBoolean(newValue);\n break;\n case ICON_BUTTON_CONSTANTS.attributes.DENSITY_LEVEL:\n this.densityLevel = coerceNumber(newValue);\n break;\n case ICON_BUTTON_CONSTANTS.attributes.TOGGLE:\n this.toggle = coerceBoolean(newValue);\n break;\n }\n }\n\n /** Gets/sets whether the button is togglable. */\n public get toggle(): boolean {\n return this._toggle;\n }\n public set toggle(value: boolean) {\n this._toggle = value;\n\n if (this._toggle) {\n this._initializeToggle();\n } else {\n this._destroyToggle();\n }\n }\n\n /** Gets/sets the toggled state of the icon button. Only applies when `toggle = true`. */\n public get isOn(): boolean {\n return this._isOn;\n }\n public set isOn(value: boolean) {\n if (this._isOn !== value) {\n this._isOn = value;\n this._applyToggle();\n }\n }\n\n /** Gets/sets whether the icon button is dense. */\n public get dense(): boolean {\n return this._dense;\n }\n public set dense(value: boolean) {\n if (this._dense !== value) {\n this._dense = value;\n this._applyDensity();\n }\n }\n\n /** Controls the density level. 1 (least dense) to 6 (most dense). */\n public get densityLevel(): number {\n return this._densityLevel;\n }\n public set densityLevel(value: number) {\n if (this._densityLevel !== value) {\n this._densityLevel = value;\n\n if (this._densityLevel <= 0) {\n this._densityLevel = 1;\n } else if (this._densityLevel > 6) {\n this._densityLevel = 6;\n } else if (typeof this._densityLevel !== 'number') {\n this._densityLevel = 5;\n }\n\n this._applyDensity();\n }\n }\n\n private _initialize(): void {\n this._buttonElement = this.querySelector(ICON_BUTTON_CONSTANTS.selectors.BUTTON) as HTMLButtonElement;\n if (!this._buttonElement) {\n return;\n }\n\n this._buttonElement.classList.add(ICON_BUTTON_CONSTANTS.classes.BUTTON);\n this._applyToggle();\n this._applyDensity();\n this._toggleHandler = () => {\n this._toggleValue();\n emitEvent(this, ICON_BUTTON_CONSTANTS.events.CHANGE, this._isOn, true);\n };\n\n if (this._toggle) {\n this._initializeToggle();\n }\n\n // We wait to initialize the ripple instance until the user interacts with the component to avoid unnecessary performance overhead\n this._deferRippleInitialization();\n }\n\n private async _deferRippleInitialization(): Promise<void> {\n const type = await userInteractionListener(this._buttonElement);\n if (!this._rippleInstance) {\n this._initRipple();\n if (type === 'focusin') {\n // eslint-disable-next-line @typescript-eslint/dot-notation\n (this._rippleInstance as ForgeRipple)['foundation'].handleFocus();\n }\n }\n }\n\n private _initRipple(): void {\n if (this._rippleInstance) {\n this._rippleInstance.destroy();\n }\n this._rippleInstance = new ForgeRipple(this._buttonElement);\n this._rippleInstance.unbounded = true;\n }\n\n private _toggleValue(): void {\n this._isOn = !this._isOn;\n this._applyToggle();\n }\n\n private _applyToggle(): void {\n if (!this._buttonElement) {\n return;\n }\n toggleClass(this._buttonElement, this._isOn, ICON_BUTTON_CONSTANTS.classes.BUTTON_ON);\n if (this._toggle) {\n this._buttonElement.setAttribute('aria-pressed', `${this._isOn}`);\n }\n }\n\n private _applyDensity(): void {\n if (!this._buttonElement) {\n return;\n }\n\n // Remove all other density classes first\n ICON_BUTTON_CONSTANTS.classes.DENSITY.forEach(c => this._buttonElement.classList.remove(c));\n\n if (this._dense) {\n this.setAttribute(ICON_BUTTON_CONSTANTS.attributes.DENSE, '');\n this._buttonElement.classList.add(ICON_BUTTON_CONSTANTS.classes.BUTTON_DENSE);\n\n // 5 is the default density level (we apply 5 implicitly in the regular dense class)\n // Exclude 5 since its already covered by dense class\n if (this._densityLevel < 7 && this._densityLevel > 0 && this.densityLevel !== 5) {\n const densityLevelClass = ICON_BUTTON_CONSTANTS.classes.DENSITY[this._densityLevel - 1];\n this._buttonElement.classList.add(densityLevelClass);\n this.setAttribute(ICON_BUTTON_CONSTANTS.attributes.DENSITY_LEVEL, this._densityLevel.toString());\n }\n } else {\n this.removeAttribute(ICON_BUTTON_CONSTANTS.attributes.DENSE);\n this._buttonElement.classList.remove(ICON_BUTTON_CONSTANTS.classes.BUTTON_DENSE);\n }\n\n // re-layout the ripple for cases where dense was changed after initial layout\n if (this._rippleInstance) {\n this._rippleInstance.layout();\n }\n }\n\n private _initializeToggle(): void {\n if (!this._buttonElement) {\n return;\n }\n const icons = Array.from(this._buttonElement.querySelectorAll(ICON_BUTTON_CONSTANTS.selectors.ICON));\n\n // We require two icon/image elements to be specified for the \"on\" and \"off\" states\n if (icons.length !== 2) {\n console.error('You must specify two icons, one for \"on\" and one for \"off\".');\n return;\n }\n\n // Add the icon class to each icon\n icons.forEach(icon => icon.classList.add(ICON_BUTTON_CONSTANTS.classes.ICON));\n\n // If there are no icons that specify the \"on\" class, then automatically choose the first icon as the \"on\" icon and add the class,\n // alternatively we check for the existence of a `forge-icon-button-on` attribute on any of the icons and use that.\n if (!icons.some(icon => icon.classList.contains(ICON_BUTTON_CONSTANTS.classes.ICON_ON))) {\n const requestedOnIcon = icons.find(icon => icon.hasAttribute(ICON_BUTTON_CONSTANTS.attributes.ICON_ON));\n if (requestedOnIcon) {\n requestedOnIcon.classList.add(ICON_BUTTON_CONSTANTS.classes.ICON_ON);\n } else {\n icons[0].classList.add(ICON_BUTTON_CONSTANTS.classes.ICON_ON);\n }\n }\n\n this._buttonElement.addEventListener('click', this._toggleHandler);\n\n // Wait a frame to ensure the value of the `on` property has been set\n window.requestAnimationFrame(() => {\n if (this._isOn) {\n this._buttonElement.classList.add(ICON_BUTTON_CONSTANTS.classes.BUTTON_ON);\n this._buttonElement.setAttribute('aria-pressed', `${this._isOn}`);\n }\n });\n }\n\n private _destroyToggle(): void {\n if (!this._buttonElement) {\n return;\n }\n this._buttonElement.removeEventListener('click', this._toggleHandler);\n }\n\n public layout(): void {\n if (this._rippleInstance) {\n this._rippleInstance.layout();\n }\n }\n}\n", "import { addClass } from '@tylertech/forge-core';\nimport { IconExternalType, ICON_CONSTANTS, IIconComponent } from '../icon';\nimport { ICON_CLASS_NAME } from '../constants';\nimport { BaseComponentDelegate, IBaseComponentDelegateConfig, IBaseComponentDelegateOptions } from '../core/delegates/base-component-delegate';\nimport { IIconButtonComponent } from './icon-button';\nimport { ICON_BUTTON_CONSTANTS } from './icon-button-constants';\nimport { PopupPlacement } from '../popup';\n\nexport type IconButtonComponentDelegateProps = Partial<IIconButtonComponent>;\nexport interface IIconButtonComponentDelegateOptions extends IBaseComponentDelegateOptions {\n iconName?: string;\n iconExternal?: boolean;\n iconExternalType?: IconExternalType;\n iconType?: 'font' | 'component';\n iconClass?: string | string[];\n tooltip?: string;\n tooltipPosition?: PopupPlacement;\n}\nexport interface IIconButtonComponentDelegateConfig extends IBaseComponentDelegateConfig<IIconButtonComponent, IIconButtonComponentDelegateOptions> {}\n\nexport class IconButtonComponentDelegate extends BaseComponentDelegate<IIconButtonComponent, IIconButtonComponentDelegateOptions> {\n private _buttonElement: HTMLButtonElement;\n private _iconElement?: IIconComponent;\n\n constructor(config?: IIconButtonComponentDelegateConfig) {\n super(config);\n }\n\n protected _build(): IIconButtonComponent {\n const component = document.createElement(ICON_BUTTON_CONSTANTS.elementName);\n this._buttonElement = document.createElement('button');\n this._buttonElement.type = 'button';\n component.appendChild(this._buttonElement);\n\n if (this._config.options?.tooltip) {\n const tooltip = document.createElement('forge-tooltip');\n tooltip.textContent = this._config.options.tooltip;\n \n if (this._config.options.tooltipPosition) {\n tooltip.position = this._config.options.tooltipPosition;\n }\n\n component.appendChild(tooltip);\n }\n\n return component;\n }\n\n public get iconElement(): IIconComponent | undefined {\n return this._iconElement;\n }\n\n public get disabled(): boolean {\n return !!this._buttonElement.disabled;\n }\n public set disabled(value: boolean) {\n this._buttonElement.disabled = value;\n }\n\n /** @deprecated Use buttonElement instead. */\n public get butttonElement(): HTMLButtonElement | undefined {\n return this._buttonElement;\n }\n\n public get buttonElement(): HTMLButtonElement | undefined {\n return this._buttonElement;\n }\n\n protected _configure(): void {\n this._configureIcon();\n }\n\n private _configureIcon(): void {\n if (!this._config.options?.iconName) {\n return;\n }\n\n const type = this._config.options?.iconType || 'component';\n\n switch (type) {\n case 'font':\n const classes = Array.isArray(this._config.options.iconClass) ? this._config.options.iconClass : [ICON_CLASS_NAME];\n addClass(classes, this._buttonElement);\n this._buttonElement.textContent = this._config.options.iconName;\n break;\n case 'component':\n this._iconElement = document.createElement(ICON_CONSTANTS.elementName);\n this._iconElement.name = this._config.options.iconName;\n if (this._config.options.iconExternal !== undefined) {\n this._iconElement.external = !!this._config.options.iconExternal;\n }\n if (this._config.options.iconExternalType) {\n this._iconElement.externalType = this._config.options.iconExternalType;\n }\n if (this._config.options.iconClass) {\n addClass(this._config.options.iconClass, this._iconElement);\n }\n this._buttonElement.appendChild(this._iconElement);\n break;\n }\n }\n\n public onClick(listener: (evt: MouseEvent) => void): void {\n this._buttonElement.addEventListener('click', listener);\n }\n\n public onFocus(listener: (evt: Event) => void): void {\n this._buttonElement.addEventListener('focus', evt => listener(evt));\n }\n\n public onBlur(listener: (evt: Event) => void): void {\n this._buttonElement.addEventListener('blur', evt => listener(evt));\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { IconButtonComponent } from './icon-button';\n\nexport * from './icon-button-constants';\nexport * from './icon-button';\nexport * from './icon-button-component-delegate';\n\nexport function defineIconButtonComponent(): void {\n defineCustomElement(IconButtonComponent);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -5,20 +5,23 @@
5
5
  */
6
6
  import {
7
7
  SelectComponent
8
- } from "./chunk.CGHKW6S6.js";
8
+ } from "./chunk.NJRPAX7P.js";
9
9
  import {
10
10
  IconButtonComponent
11
- } from "./chunk.7Y4NHCJH.js";
11
+ } from "./chunk.UM3J4AZ7.js";
12
12
  import {
13
13
  tylIconFirstPage,
14
14
  tylIconKeyboardArrowLeft,
15
15
  tylIconKeyboardArrowRight,
16
16
  tylIconLastPage
17
17
  } from "./chunk.GS2AXUCN.js";
18
+ import {
19
+ TooltipComponent
20
+ } from "./chunk.2F6PST3N.js";
18
21
  import {
19
22
  IconComponent,
20
23
  IconRegistry
21
- } from "./chunk.P43Z3YAS.js";
24
+ } from "./chunk.V6TRG2CM.js";
22
25
  import {
23
26
  BaseAdapter
24
27
  } from "./chunk.KZATVOA6.js";
@@ -584,7 +587,7 @@ var PaginatorAdapter = class extends BaseAdapter {
584
587
  };
585
588
 
586
589
  // dist/build/lib/staging/src/paginator/paginator.ts
587
- var template = '<template><div class="forge-paginator" part="root"><div class="forge-paginator__container" part="container"><div class="forge-paginator__label" part="label"></div><forge-select class="forge-paginator__page-size-options" aria-label="Choose page size" density="dense" part="page-size-options"></forge-select><div class="forge-paginator__range-label" part="range-label"></div><forge-icon-button class="forge-paginator__first-page" part="first-page-button"><button aria-label="First Page" part="first-page-button-element"><forge-icon name="first_page" part="first-page-icon"></forge-icon></button></forge-icon-button><forge-icon-button class="forge-paginator__previous-page" part="previous-page-button"><button aria-label="Previous Page" part="previous-page-button-element"><forge-icon name="keyboard_arrow_left" part="previous-page-button-icon"></forge-icon></button></forge-icon-button><div class="forge-paginator__range-label--alternative" part="range-label-alternative"></div><forge-icon-button class="forge-paginator__next-page" part="next-page-button"><button aria-label="Next Page" part="next-page-button-element"><forge-icon name="keyboard_arrow_right" part="next-page-icon"></forge-icon></button></forge-icon-button><forge-icon-button class="forge-paginator__last-page" part="last-page-button"><button aria-label="Last Page" part="last-page-button-element"><forge-icon name="last_page" part="last-page-icon"></forge-icon></button></forge-icon-button></div></div></template>';
590
+ var template = '<template><div class="forge-paginator" part="root"><div class="forge-paginator__container" part="container"><div class="forge-paginator__label" part="label"></div><forge-select class="forge-paginator__page-size-options" aria-label="Choose page size" density="dense" part="page-size-options"></forge-select><div class="forge-paginator__range-label" part="range-label"></div><forge-icon-button class="forge-paginator__first-page" part="first-page-button"><button aria-label="First Page" part="first-page-button-element"><forge-icon name="first_page" part="first-page-icon"></forge-icon></button><forge-tooltip position="top">Go to the first page</forge-tooltip></forge-icon-button><forge-icon-button class="forge-paginator__previous-page" part="previous-page-button"><button aria-label="Previous Page" part="previous-page-button-element"><forge-icon name="keyboard_arrow_left" part="previous-page-button-icon"></forge-icon></button><forge-tooltip position="top">Go to the previous page</forge-tooltip></forge-icon-button><div class="forge-paginator__range-label--alternative" part="range-label-alternative"></div><forge-icon-button class="forge-paginator__next-page" part="next-page-button"><button aria-label="Next Page" part="next-page-button-element"><forge-icon name="keyboard_arrow_right" part="next-page-icon"></forge-icon></button><forge-tooltip position="top">Go to the next page</forge-tooltip></forge-icon-button><forge-icon-button class="forge-paginator__last-page" part="last-page-button"><button aria-label="Last Page" part="last-page-button-element"><forge-icon name="last_page" part="last-page-icon"></forge-icon></button><forge-tooltip position="top">Go to the last page</forge-tooltip></forge-icon-button></div></div></template>';
588
591
  var styles = '.forge-icon-button{display:-webkit-inline-box;display:inline-flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border:none;outline:0;background-color:transparent;fill:currentColor;color:inherit;font-size:24px;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:48px;height:48px;padding:12px}.forge-icon-button forge-icon,.forge-icon-button img,.forge-icon-button svg{width:24px;height:24px}.forge-icon-button:disabled{color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38))}.forge-icon-button:disabled{cursor:default;pointer-events:none}.forge-icon-button__icon{display:inline-block}.forge-icon-button__icon.forge-icon-button__icon--on{display:none}.forge-icon-button--on .forge-icon-button__icon{display:none}.forge-icon-button--on .forge-icon-button__icon.forge-icon-button__icon--on{display:inline-block}@-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}}.forge-icon-button{--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}.forge-icon-button::after,.forge-icon-button::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:""}.forge-icon-button::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)}.forge-icon-button::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.forge-icon-button.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.forge-icon-button.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.forge-icon-button.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.forge-icon-button.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}.forge-icon-button.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))}.forge-icon-button::after,.forge-icon-button::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.forge-icon-button.mdc-ripple-upgraded::after,.forge-icon-button.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%)}.forge-icon-button.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.forge-icon-button::after,.forge-icon-button::before{background-color:#000;background-color:var(--mdc-ripple-color,var(--mdc-theme-on-surface,#000))}.forge-icon-button.mdc-ripple-surface--hover::before,.forge-icon-button:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-icon-button.mdc-ripple-upgraded--background-focused::before,.forge-icon-button:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-icon-button:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-icon-button:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-icon-button.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}forge-icon-button{position:relative;display:inline-block;overflow:visible}.forge-icon-button--on{color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-icon-button--on::after,.forge-icon-button--on::before{background-color:#3f51b5;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#3f51b5))}.forge-icon-button--on.mdc-ripple-surface--hover::before,.forge-icon-button--on:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-icon-button--on.mdc-ripple-upgraded--background-focused::before,.forge-icon-button--on:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-icon-button--on:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-icon-button--on:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-icon-button--on.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.forge-icon-button--on::before{background-color:#3f51b5;background-color:var(--mdc-theme-primary,#3f51b5);opacity:.08}.forge-icon-button--dense{width:28px;height:28px;padding:2px;padding:0}.forge-icon-button--dense-1{width:44px;height:44px;padding:10px}.forge-icon-button--dense-2{width:40px;height:40px;padding:8px}.forge-icon-button--dense-3{width:36px;height:36px;padding:6px}.forge-icon-button--dense-4{width:32px;height:32px;padding:4px}.forge-icon-button--dense-5{width:28px;height:28px;padding:2px}.forge-icon-button--dense-6{width:24px;height:24px;padding:0}.forge-icon-button--with-badge forge-badge{z-index:1;z-index:var(--forge-z-index-surface,1);pointer-events:none;--forge-badge-max-width:32px;--forge-badge-border:1px solid transparent}.forge-icon-button--with-badge forge-badge[app-bar-context]{--forge-badge-border:2px solid var(--forge-app-bar-theme-background)}.forge-paginator{display:inline-block}.forge-paginator--alternative{display:-webkit-box;display:flex}.forge-paginator--alternative .forge-paginator__label,.forge-paginator--alternative .forge-paginator__page-size-options,.forge-paginator--alternative .forge-paginator__range-label{display:none}.forge-paginator--alternative .forge-paginator__range-label--alternative{display:inline-block;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.875rem;font-size:var(--mdc-typography-body2-font-size, .875rem);line-height:1.25rem;line-height:var(--mdc-typography-body2-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-body2-font-weight,400);letter-spacing:.0178571429em;letter-spacing:var(--mdc-typography-body2-letter-spacing, .0178571429em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body2-text-decoration,inherit);text-decoration:var(--mdc-typography-body2-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body2-text-transform,inherit);margin:0 12px}.forge-paginator__range-label--alternative{display:none}.forge-paginator__container{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}.forge-paginator__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);margin-right:16px}.forge-paginator__page-size-options{margin-right:16px}.forge-paginator__range-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);margin-right:8px}.forge-paginator__first-page,.forge-paginator__last-page,.forge-paginator__next-page,.forge-paginator__previous-page{color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}:host{display:inline-block}:host([hidden]){display:none}:host([alternative]) .forge-paginator--alignment-center .forge-paginator__container{-webkit-box-pack:center;justify-content:center}:host([alternative]) .forge-paginator--alignment-center .forge-paginator__range-label--alternative{margin:0 auto}:host([alternative]) .forge-paginator--alignment-start .forge-paginator__container{-webkit-box-pack:start;justify-content:flex-start}:host([alternative]) .forge-paginator--alignment-end .forge-paginator__container{-webkit-box-pack:end;justify-content:flex-end}:host([alternative]) .forge-paginator .forge-paginator__container{-webkit-box-flex:1;flex:1}';
589
592
  var PaginatorComponent = class extends BaseComponent {
590
593
  constructor() {
@@ -696,7 +699,8 @@ PaginatorComponent = __decorateClass([
696
699
  dependencies: [
697
700
  IconButtonComponent,
698
701
  SelectComponent,
699
- IconComponent
702
+ IconComponent,
703
+ TooltipComponent
700
704
  ]
701
705
  })
702
706
  ], PaginatorComponent);
@@ -713,4 +717,4 @@ export {
713
717
  PaginatorComponent,
714
718
  definePaginatorComponent
715
719
  };
716
- //# sourceMappingURL=chunk.AHQ6QX3J.js.map
720
+ //# sourceMappingURL=chunk.V3FSZDTW.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/paginator/paginator-constants.ts", "../../src/paginator/paginator-foundation.ts", "../../src/paginator/paginator-adapter.ts", "../../src/paginator/paginator.ts", "../../src/paginator/index.ts"],
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}paginator`;\n\nconst classes = {\n LABEL: 'forge-paginator__label',\n PAGE_SIZE_OPTIONS: 'forge-paginator__page-size-options',\n RANGE_LABEL: 'forge-paginator__range-label',\n RANGE_LABEL_ALTERNATIVE: 'forge-paginator__range-label--alternative',\n FIRST_PAGE_BUTTON: 'forge-paginator__first-page',\n PREVIOUS_PAGE_BUTTON: 'forge-paginator__previous-page',\n NEXT_PAGE_BUTTON: 'forge-paginator__next-page',\n LAST_PAGE_BUTTON: 'forge-paginator__last-page',\n ROOT: 'forge-paginator',\n ALTERNATIVE: 'forge-paginator--alternative',\n ALIGNMENT_START: 'forge-paginator--alignment-start',\n ALIGNMENT_SPACE_BETWEEN: 'forge-paginator--alignment-center',\n ALIGNMENT_END: 'forge-paginator--alignment-end'\n};\n\nconst selectors = {\n LABEL: `.${classes.LABEL}`,\n PAGE_SIZE_SELECT: `.${classes.PAGE_SIZE_OPTIONS}`,\n RANGE_LABEL: `.${classes.RANGE_LABEL}`,\n FIRST_PAGE_BUTTON: `.${classes.FIRST_PAGE_BUTTON} > button`,\n FIRST_PAGE_ICON_BUTTON: `.${classes.FIRST_PAGE_BUTTON}`,\n PREVIOUS_PAGE_BUTTON: `.${classes.PREVIOUS_PAGE_BUTTON} > button`,\n NEXT_PAGE_BUTTON: `.${classes.NEXT_PAGE_BUTTON} > button`,\n LAST_PAGE_BUTTON: `.${classes.LAST_PAGE_BUTTON} > button`,\n LAST_PAGE_ICON_BUTTON: `.${classes.LAST_PAGE_BUTTON}`,\n ROOT: `.${classes.ROOT}`,\n RANGE_LABEL_ALTERNATIVE: `.${classes.RANGE_LABEL_ALTERNATIVE}`\n};\n\nconst attributes = {\n PAGE_INDEX: 'page-index',\n PAGE_SIZE: 'page-size',\n OFFSET: 'offset',\n PAGE_SIZE_OPTIONS: 'page-size-options',\n TOTAL: 'total',\n LABEL: 'label',\n FIRST_LAST: 'first-last',\n FIRST: 'first',\n DISABLED: 'disabled',\n ALTERNATIVE: 'alternative',\n ALIGNMENT: 'alignment'\n};\n\nconst events = {\n CHANGE: `${elementName}-change`\n};\n\nconst numbers = {\n DEFAULT_PAGE_INDEX: 0,\n DEFAULT_TOTAL: 0,\n DEFAULT_PAGE_SIZE: 25,\n DEFAULT_PAGE_SIZE_OPTIONS: [5, 15, 25, 50, 100]\n};\n\nconst strings = {\n DEFAULT_LABEL: 'Rows per page:',\n RANGE_SEPARATOR_LABEL: 'of',\n FIRST_PAGE: 'first-page',\n PREVIOUS_PAGE: 'previous-page',\n NEXT_PAGE: 'next-page',\n LAST_PAGE: 'last-page',\n PAGE_SIZE: 'page-size'\n};\n\nexport const PAGINATOR_CONSTANTS = {\n elementName,\n classes,\n selectors,\n attributes,\n events,\n numbers,\n strings\n};\n\nexport type PaginatorAlternativeAlignment = 'start' | 'space-between' | 'end';\nexport interface IPaginatorChangeEvent {\n type: string;\n pageSize: number;\n pageIndex: number;\n offset: number;\n}\n", "import { coerceNumber, ICustomElementFoundation, isArray, isDefined } from '@tylertech/forge-core';\nimport { IPaginatorAdapter } from './paginator-adapter';\nimport { PaginatorAlternativeAlignment, PAGINATOR_CONSTANTS, IPaginatorChangeEvent } from './paginator-constants';\nimport { ISelectOption, ISelectComponent } from '../select';\n\n\nexport interface IPaginatorFoundation extends ICustomElementFoundation {\n pageIndex: number;\n pageSize: number;\n offset: number;\n total: number;\n pageSizeOptions: number[] | boolean;\n pageSizeLabel: string;\n initialize(): void;\n}\n\n/**\n * The foundation class behind the `<forge-paginator>` component.\n */\nexport class PaginatorFoundation {\n // Backing models\n private _pageIndex = PAGINATOR_CONSTANTS.numbers.DEFAULT_PAGE_INDEX;\n private _pageSize = PAGINATOR_CONSTANTS.numbers.DEFAULT_PAGE_SIZE;\n private _total = PAGINATOR_CONSTANTS.numbers.DEFAULT_TOTAL;\n private _pageSizeOptions: ISelectOption[] = [];\n private _label = PAGINATOR_CONSTANTS.strings.DEFAULT_LABEL;\n private _firstLast = false;\n private _first = false;\n private _disabled = false;\n private _alternative: boolean;\n private _alignment: PaginatorAlternativeAlignment = 'space-between';\n\n // Listeners\n private _firstPageListener: (evt: Event) => void;\n private _previousPageListener: (evt: Event) => void;\n private _nextPageListener: (evt: Event) => void;\n private _lastPageListener: (evt: Event) => void;\n private _pageSizeListener: (evt: Event) => void;\n\n // State variables\n private _rangeLabel: string;\n\n constructor(private _adapter: IPaginatorAdapter) {\n // Create listeners\n this._pageSizeListener = (evt: CustomEvent) => this._onPageSizeChanged(evt);\n this._firstPageListener = (evt: Event) => this._onFirstPage(evt);\n this._previousPageListener = (evt: Event) => this._onPreviousPage(evt);\n this._nextPageListener = (evt: Event) => this._onNextPage(evt);\n this._lastPageListener = (evt: Event) => this._onLastPage(evt);\n\n this._pageSizeOptions = PAGINATOR_CONSTANTS.numbers.DEFAULT_PAGE_SIZE_OPTIONS.map(o => ({ label: o.toString(), value: o.toString() }));\n }\n\n /** The zero-based page index. Default is 0. */\n public set pageIndex(value: number) {\n if (this._pageIndex !== value) {\n if (isDefined(value)) {\n this._pageIndex = value;\n this._update();\n this._adapter.setHostAttribute(PAGINATOR_CONSTANTS.attributes.PAGE_INDEX, this._pageIndex.toString());\n } else {\n this._adapter.removeHostAttribute(PAGINATOR_CONSTANTS.attributes.PAGE_INDEX);\n }\n }\n }\n public get pageIndex(): number {\n return this._pageIndex;\n }\n\n /** Number of items to display on a page. By default set to 25. */\n public set pageSize(value: number) {\n if (this._pageSize !== value) {\n this._pageSize = value;\n this._adapter.setPageSize(this._pageSize);\n this._update();\n this._adapter.setHostAttribute(PAGINATOR_CONSTANTS.attributes.PAGE_SIZE, this._pageSize.toString());\n }\n }\n public get pageSize(): number {\n return this._pageSize;\n }\n\n /** Sets page index by providing the number of items to skip. */\n public set offset(value: number) {\n if (value >= this._total) {\n if (this._total >= this._pageSize) {\n value = this._total - this._pageSize;\n } else {\n value = 0;\n }\n }\n const clampedValue = Math.min(Math.max(value, 0), this._total);\n this.pageIndex = Math.floor(clampedValue / this._pageSize);\n }\n public get offset(): number {\n return this._pageIndex * this._pageSize;\n }\n\n /** The total number of items to be paginated. Default is 0. */\n public set total(value: number) {\n if (this._total !== value) {\n this._total = value;\n this._update();\n this._adapter.setHostAttribute(PAGINATOR_CONSTANTS.attributes.TOTAL, this._total.toString());\n }\n }\n public get total(): number {\n return this._total;\n }\n\n /** The set of provided page size options to display to the user. */\n public set pageSizeOptions(options: number[] | boolean) {\n if (isArray(options)) {\n this._pageSizeOptions = (options as number[])\n .map(o => ({ label: o.toString(), value: o.toString() }))\n .sort((a, b) => coerceNumber(a.value) - coerceNumber(b.value));\n this._adapter.setPageSizeOptions(this._pageSizeOptions);\n this._adapter.attachPageSizeChangeListener(this._pageSizeListener);\n this._adapter.setPageSizeVisibility(true);\n if (isDefined(this._pageSize) && this._pageSizeOptions.length && !this._pageSizeOptions.find(o => coerceNumber(o.value) === this._pageSize)) {\n this.pageSize = coerceNumber(this._pageSizeOptions[0].value);\n }\n } else if (options.toString().toLowerCase() === 'false') {\n this._adapter.detachPageSizeChangeListener(this._pageSizeListener);\n this._adapter.setPageSizeVisibility(false);\n }\n }\n public get pageSizeOptions(): number[] | boolean {\n return this._pageSizeOptions.map(o => Number(o.value));\n }\n\n /** A label for the paginator. Default is \"Rows per page:\". */\n public set label(value: string) {\n if (this._label !== value) {\n this._label = value;\n this._adapter.setLabel(this._label);\n this._adapter.setHostAttribute(PAGINATOR_CONSTANTS.attributes.LABEL, isDefined(this._label) ? this._label.toString() : '');\n }\n }\n public get label(): string {\n return this._label;\n }\n\n /** Whether to show the first page and last page buttons. Default is false. */\n public set firstLast(value: boolean) {\n if (this._firstLast !== value) {\n this._firstLast = value;\n this._toggleFirstLastButtons();\n\n if (this._firstLast) {\n this._adapter.setHostAttribute(PAGINATOR_CONSTANTS.attributes.FIRST_LAST);\n } else {\n this._adapter.removeHostAttribute(PAGINATOR_CONSTANTS.attributes.FIRST_LAST);\n }\n }\n }\n public get firstLast(): boolean {\n return this._firstLast;\n }\n\n /** Whether to show the first page button. Default is false. */\n public set first(value: boolean) {\n if (this._first !== value) {\n this._first = value;\n this._toggleFirstButton();\n\n if (this._first) {\n this._adapter.setHostAttribute(PAGINATOR_CONSTANTS.attributes.FIRST);\n } else {\n this._adapter.removeHostAttribute(PAGINATOR_CONSTANTS.attributes.FIRST);\n }\n }\n }\n\n public get first(): boolean {\n return this._first;\n }\n\n /** Whether the paginator is disabled. Default is false. */\n public set disabled(value: boolean) {\n if (this._disabled !== value) {\n this._disabled = value;\n this._update();\n\n if (this._disabled) {\n this._adapter.setHostAttribute(PAGINATOR_CONSTANTS.attributes.DISABLED);\n } else {\n this._adapter.removeHostAttribute(PAGINATOR_CONSTANTS.attributes.DISABLED);\n }\n }\n }\n public get disabled(): boolean {\n return this._disabled;\n }\n\n public get alternative(): boolean {\n return this._alternative;\n }\n public set alternative(value: boolean) {\n if (value !== this._alternative) {\n this._alternative = value;\n this._applyAlternative();\n }\n }\n\n public get alignment(): PaginatorAlternativeAlignment {\n return this._alignment;\n }\n public set alignment(value: PaginatorAlternativeAlignment) {\n if (value !== this._alignment) {\n this._alignment = value;\n this._applyAlternativeAlignment();\n }\n }\n\n private _applyAlternativeAlignment(): void {\n this._adapter.setHostAttribute(PAGINATOR_CONSTANTS.attributes.ALIGNMENT, this._alignment);\n this._adapter.setAlignment(this._alignment);\n }\n\n private _applyAlternative(): void {\n this._adapter.toggleHostAttribute(PAGINATOR_CONSTANTS.attributes.ALTERNATIVE, this._alternative);\n this._adapter.setAlternative(this._alternative);\n this._applyAlternativeAlignment();\n }\n\n /**\n * Intializes the internal state when the component loads.\n */\n public initialize(): void {\n this._update();\n this._adapter.setLabel(this._label);\n this._adapter.setPageSizeOptions(this._pageSizeOptions);\n this._adapter.setPageSize(this._pageSize);\n this._attachListeners();\n this._toggleFirstLastButtons();\n }\n\n public disconnect(): void {\n this._detachListeners();\n }\n\n private _attachListeners(): void {\n this._adapter.attachPageSizeChangeListener(this._pageSizeListener);\n this._adapter.attachFirstPageListener(this._firstPageListener);\n this._adapter.attachPreviousPageListener(this._previousPageListener);\n this._adapter.attachNextPageListener(this._nextPageListener);\n this._adapter.attachLastPageListener(this._lastPageListener);\n }\n\n private _detachListeners(): void {\n this._adapter.detachPageSizeChangeListener(this._pageSizeListener);\n this._adapter.detachFirstPageListener(this._firstPageListener);\n this._adapter.detachPreviousPageListener(this._previousPageListener);\n this._adapter.detachNextPageListener(this._nextPageListener);\n this._adapter.detachLastPageListener(this._lastPageListener);\n }\n\n /**\n * Handles clicking the first page button.\n * @param evt The click event.\n */\n private _onFirstPage(evt: Event): void {\n evt.stopPropagation();\n\n if (!this._hasFirstPage()) {\n return;\n }\n\n this.pageIndex = 0;\n this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.FIRST_PAGE);\n }\n\n /**\n * Handles clicking the previous page button.\n * @param evt The click event.\n */\n private _onPreviousPage(evt: Event): void {\n evt.stopPropagation();\n\n if (!this._hasPreviousPage()) {\n return;\n }\n\n this.pageIndex--;\n this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PREVIOUS_PAGE);\n }\n\n /**\n * Handles clicking the next page button.\n * @param evt The click event.\n */\n private _onNextPage(evt: Event): void {\n evt.stopPropagation();\n\n if (!this._hasNextPage()) {\n return;\n }\n\n this.pageIndex++;\n this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.NEXT_PAGE);\n }\n\n /**\n * Handles clicking the last page button.\n * @param evt The click event.\n */\n private _onLastPage(evt: Event): void {\n evt.stopPropagation();\n\n if (!this._hasLastPage()) {\n return;\n }\n\n this.pageIndex = this._getMaxPages();\n this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.LAST_PAGE);\n }\n\n /**\n * Handles selecting a new item in the page size options.\n * @param evt The select custom event.\n */\n private _onPageSizeChanged(evt: CustomEvent): void {\n evt.stopPropagation();\n this.pageIndex = 0;\n this.pageSize = Number((evt.target as ISelectComponent).value);\n this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PAGE_SIZE);\n }\n\n private _emitChangeEvent(type: string): void {\n const detail: IPaginatorChangeEvent = {\n type,\n pageSize: this._pageSize,\n pageIndex: this._pageIndex,\n offset: this._pageIndex * this._pageSize\n };\n this._adapter.emitHostEvent(PAGINATOR_CONSTANTS.events.CHANGE, detail);\n }\n\n /**\n * Returns the max number of pages based on our current parameters.\n */\n private _getMaxPages(): number {\n return Math.ceil(this._total / this._pageSize) - 1;\n }\n\n /**\n * Updates our internal state as well as updating the UI.\n */\n private _update(): void {\n // Create and update the range label\n if (this.pageSize > 1) {\n const startIndex = this._pageIndex * this._pageSize;\n const indexStart = Math.floor(startIndex / this._pageSize) || 0;\n const pageStart = (indexStart * this._pageSize) + 1;\n const pageEnd = startIndex < this._total ? Math.min(startIndex + this._pageSize, this._total) : startIndex + this._pageSize;\n\n this._rangeLabel = `${pageStart}-${pageEnd} ${PAGINATOR_CONSTANTS.strings.RANGE_SEPARATOR_LABEL} ${this._total}`;\n } else {\n this._rangeLabel = `${this._pageIndex + 1} ${PAGINATOR_CONSTANTS.strings.RANGE_SEPARATOR_LABEL} ${this._total}`;\n }\n\n this._adapter.setRangeLabel(this._rangeLabel);\n\n if (this.disabled) {\n this._adapter.disablePageSizeSelect();\n this._adapter.disableFirstPageButton();\n this._adapter.disablePreviousPageButton();\n this._adapter.disableNextPageButton();\n this._adapter.disableLastPageButton();\n } else {\n this._adapter.enablePageSizeSelect();\n // Check if first page button needs to be enabled/disabled\n if (this._hasFirstPage()) {\n this._adapter.enableFirstPageButton();\n } else {\n this._adapter.disableFirstPageButton();\n }\n\n // Check if previous page button needs to be enabled/disabled\n if (this._hasPreviousPage()) {\n this._adapter.enablePreviousPageButton();\n } else {\n this._adapter.disablePreviousPageButton();\n }\n\n // Check if next page button needs to be enabled/disabled\n if (this._hasNextPage()) {\n this._adapter.enableNextPageButton();\n } else {\n this._adapter.disableNextPageButton();\n }\n\n // Check if last page button needs to be enabled/disabled\n if (this._hasLastPage()) {\n this._adapter.enableLastPageButton();\n } else {\n this._adapter.disableLastPageButton();\n }\n }\n }\n\n /**\n * Toggle showing/hiding first and last buttons based on the show first/last buttons flag.\n */\n private _toggleFirstLastButtons(): void {\n this._toggleFirstButton();\n if (this._firstLast) {\n if (!this._adapter.hasLastPageButton()) {\n this._adapter.showLastPageButton();\n }\n } else {\n if (this._adapter.hasLastPageButton()) {\n this._adapter.hideLastPageButton();\n }\n }\n }\n\n /**\n * Toggle showing/hiding first button based on the show first or first/last buttons flags.\n */\n private _toggleFirstButton(): void {\n if (this._first || this._firstLast) {\n if (!this._adapter.hasFirstPageButton()) {\n this._adapter.showFirstPageButton();\n }\n } else {\n if (this._adapter.hasFirstPageButton()) {\n this._adapter.hideFirstPageButton();\n }\n }\n }\n\n /** Checks if a first page exists. */\n private _hasFirstPage(): boolean {\n // same as has previous page\n return this._hasPreviousPage();\n }\n\n /**\n * Checks if a previous page exists.\n */\n private _hasPreviousPage(): boolean {\n return this._pageIndex >= 1 && this._pageSize !== 0;\n }\n\n /** Checks if a next page exists */\n private _hasNextPage(): boolean {\n const maxPages = this._getMaxPages();\n return this._pageIndex < maxPages && this._pageSize !== 0;\n }\n\n /** Checks if a last page exists. */\n private _hasLastPage(): boolean {\n // same as has next page\n return this._hasNextPage();\n }\n}\n", "import { addClass, getShadowElement, removeAllChildren, removeClass, toggleElementPlaceholder, toggleClass } from '@tylertech/forge-core';\nimport { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';\nimport { IIconButtonComponent } from '../icon-button';\nimport { ISelectComponent, ISelectOption } from '../select';\nimport { IPaginatorComponent } from './paginator';\nimport { PaginatorAlternativeAlignment, PAGINATOR_CONSTANTS } from './paginator-constants';\n\nexport interface IPaginatorAdapter extends IBaseAdapter {\n setLabel: (value: string) => void;\n setPageSizeOptions: (options: ISelectOption[]) => void;\n setPageSize: (value: number) => void;\n setRangeLabel: (value: string) => void;\n hasFirstPageButton(): boolean;\n showFirstPageButton(): void;\n hideFirstPageButton(): void;\n hasLastPageButton(): boolean;\n showLastPageButton(): void;\n hideLastPageButton(): void;\n attachPageSizeChangeListener: (listener: (evt: CustomEvent) => void) => void;\n attachFirstPageListener: (listener: (evt: Event) => void) => void;\n attachPreviousPageListener: (listener: (evt: Event) => void) => void;\n attachNextPageListener: (listener: (evt: Event) => void) => void;\n attachLastPageListener: (listener: (evt: Event) => void) => void;\n detachPageSizeChangeListener: (listener: (evt: CustomEvent) => void) => void;\n detachFirstPageListener: (listener: (evt: Event) => void) => void;\n detachPreviousPageListener: (listener: (evt: Event) => void) => void;\n detachNextPageListener: (listener: (evt: Event) => void) => void;\n detachLastPageListener: (listener: (evt: Event) => void) => void;\n disableFirstPageButton: () => void;\n enableFirstPageButton: () => void;\n disablePreviousPageButton: () => void;\n enablePreviousPageButton: () => void;\n disableNextPageButton: () => void;\n enableNextPageButton: () => void;\n disablePageSizeSelect(): void;\n enablePageSizeSelect(): void;\n setPageSizeVisibility(visible: boolean): void;\n disableLastPageButton: () => void;\n enableLastPageButton: () => void;\n setAlternative: (alternative: boolean) => void;\n setAlignment: (alignment: PaginatorAlternativeAlignment) => void;\n}\n\n/**\n * Provides facilities for interacting with the internal DOM of `PaginatorComponent`.\n */\nexport class PaginatorAdapter extends BaseAdapter<IPaginatorComponent> implements IPaginatorAdapter {\n private _labelElement: HTMLElement;\n private _root: HTMLElement;\n private _pageSizeSelect: ISelectComponent;\n private _rangeLabel: HTMLElement;\n private _rangeLabelAlternative: HTMLElement;\n private _firstPageButton: HTMLButtonElement;\n private _firstPageIconButton: IIconButtonComponent;\n private _firstPagePlaceholder: Comment;\n private _previousPageButton: HTMLButtonElement;\n private _nextPageButton: HTMLButtonElement;\n private _lastPageButton: HTMLButtonElement;\n private _lastPageIconButton: IIconButtonComponent;\n private _lastPagePlaceholder: Comment;\n\n constructor(component: IPaginatorComponent) {\n super(component);\n this._labelElement = getShadowElement(component, PAGINATOR_CONSTANTS.selectors.LABEL);\n this._root = getShadowElement(component, PAGINATOR_CONSTANTS.selectors.ROOT);\n this._pageSizeSelect = getShadowElement(component, PAGINATOR_CONSTANTS.selectors.PAGE_SIZE_SELECT) as ISelectComponent;\n this._rangeLabel = getShadowElement(component, PAGINATOR_CONSTANTS.selectors.RANGE_LABEL);\n this._rangeLabelAlternative = getShadowElement(component, PAGINATOR_CONSTANTS.selectors.RANGE_LABEL_ALTERNATIVE);\n this._firstPageButton = getShadowElement(component, PAGINATOR_CONSTANTS.selectors.FIRST_PAGE_BUTTON) as HTMLButtonElement;\n this._firstPageIconButton = getShadowElement(component, PAGINATOR_CONSTANTS.selectors.FIRST_PAGE_ICON_BUTTON) as IIconButtonComponent;\n this._previousPageButton = getShadowElement(component, PAGINATOR_CONSTANTS.selectors.PREVIOUS_PAGE_BUTTON) as HTMLButtonElement;\n this._nextPageButton = getShadowElement(component, PAGINATOR_CONSTANTS.selectors.NEXT_PAGE_BUTTON) as HTMLButtonElement;\n this._lastPageButton = getShadowElement(component, PAGINATOR_CONSTANTS.selectors.LAST_PAGE_BUTTON) as HTMLButtonElement;\n this._lastPageIconButton = getShadowElement(component, PAGINATOR_CONSTANTS.selectors.LAST_PAGE_ICON_BUTTON) as IIconButtonComponent;\n }\n\n public setLabel(value: string): void {\n this._labelElement.textContent = value;\n }\n\n public setPageSizeOptions(options: ISelectOption[]): void {\n removeAllChildren(this._pageSizeSelect);\n this._pageSizeSelect.options = options;\n }\n\n public setPageSize(value: number): void {\n this._pageSizeSelect.value = value.toString();\n }\n\n public setRangeLabel(value: string): void {\n this._rangeLabel.innerText = value;\n this._rangeLabelAlternative.innerText = value;\n }\n\n public hasFirstPageButton(): boolean {\n return !!getShadowElement(this._component, PAGINATOR_CONSTANTS.selectors.FIRST_PAGE_ICON_BUTTON);\n }\n\n public showFirstPageButton(): void {\n this._firstPagePlaceholder = toggleElementPlaceholder(\n this._component,\n true,\n PAGINATOR_CONSTANTS.elementName,\n PAGINATOR_CONSTANTS.selectors.FIRST_PAGE_ICON_BUTTON,\n this._firstPageIconButton,\n this._firstPagePlaceholder\n );\n }\n\n public hideFirstPageButton(): void {\n this._firstPagePlaceholder = toggleElementPlaceholder(\n this._component,\n false,\n PAGINATOR_CONSTANTS.elementName,\n PAGINATOR_CONSTANTS.selectors.FIRST_PAGE_ICON_BUTTON,\n this._firstPageIconButton,\n this._firstPagePlaceholder\n );\n }\n\n public hasLastPageButton(): boolean {\n return !!getShadowElement(this._component, PAGINATOR_CONSTANTS.selectors.LAST_PAGE_ICON_BUTTON);\n }\n\n public showLastPageButton(): void {\n this._lastPagePlaceholder = toggleElementPlaceholder(\n this._component,\n true,\n PAGINATOR_CONSTANTS.elementName,\n PAGINATOR_CONSTANTS.selectors.LAST_PAGE_ICON_BUTTON,\n this._lastPageIconButton,\n this._lastPagePlaceholder\n );\n }\n\n public hideLastPageButton(): void {\n this._lastPagePlaceholder = toggleElementPlaceholder(\n this._component,\n false,\n PAGINATOR_CONSTANTS.elementName,\n PAGINATOR_CONSTANTS.selectors.LAST_PAGE_ICON_BUTTON,\n this._lastPageIconButton,\n this._lastPagePlaceholder\n );\n }\n\n public attachPageSizeChangeListener(listener: (evt: CustomEvent) => void): void {\n this._pageSizeSelect.addEventListener('change', listener);\n }\n\n public attachFirstPageListener(listener: (evt: Event) => void): void {\n this._firstPageButton.addEventListener('click', listener);\n }\n\n public attachPreviousPageListener(listener: (evt: Event) => void): void {\n this._previousPageButton.addEventListener('click', listener);\n }\n\n public attachNextPageListener(listener: (evt: Event) => void): void {\n this._nextPageButton.addEventListener('click', listener);\n }\n\n public attachLastPageListener(listener: (evt: Event) => void): void {\n this._lastPageButton.addEventListener('click', listener);\n }\n\n public detachPageSizeChangeListener(listener: (evt: CustomEvent) => void): void {\n this._pageSizeSelect.removeEventListener('change', listener);\n }\n\n public detachFirstPageListener(listener: (evt: Event) => void): void {\n this._firstPageButton.removeEventListener('click', listener);\n }\n\n public detachPreviousPageListener(listener: (evt: Event) => void): void {\n this._previousPageButton.removeEventListener('click', listener);\n }\n\n public detachNextPageListener(listener: (evt: Event) => void): void {\n this._nextPageButton.removeEventListener('click', listener);\n }\n\n public detachLastPageListener(listener: (evt: Event) => void): void {\n this._lastPageButton.removeEventListener('click', listener);\n }\n\n public disableFirstPageButton(): void {\n this._firstPageButton.setAttribute('disabled', 'disabled');\n }\n\n public enableFirstPageButton(): void {\n this._firstPageButton.removeAttribute('disabled');\n }\n\n public disablePreviousPageButton(): void {\n this._previousPageButton.setAttribute('disabled', 'disabled');\n }\n\n public enablePreviousPageButton(): void {\n this._previousPageButton.removeAttribute('disabled');\n }\n\n public disableNextPageButton(): void {\n this._nextPageButton.setAttribute('disabled', 'disabled');\n }\n\n public enableNextPageButton(): void {\n this._nextPageButton.removeAttribute('disabled');\n }\n\n public disablePageSizeSelect(): void {\n this._pageSizeSelect.setAttribute('disabled', 'disabled');\n }\n\n public enablePageSizeSelect(): void {\n this._pageSizeSelect.removeAttribute('disabled');\n }\n\n public setPageSizeVisibility(visible: boolean): void {\n if (visible) {\n this._pageSizeSelect.style.removeProperty('display');\n } else {\n this._pageSizeSelect.style.display = 'none';\n }\n }\n\n public disableLastPageButton(): void {\n this._lastPageButton.setAttribute('disabled', 'disabled');\n }\n\n public enableLastPageButton(): void {\n this._lastPageButton.removeAttribute('disabled');\n }\n\n public setAlternative(alternative: boolean): void {\n toggleClass(this._root, alternative, PAGINATOR_CONSTANTS.classes.ALTERNATIVE);\n }\n\n public setAlignment(alignment: PaginatorAlternativeAlignment): void {\n removeClass([\n PAGINATOR_CONSTANTS.classes.ALIGNMENT_SPACE_BETWEEN,\n PAGINATOR_CONSTANTS.classes.ALIGNMENT_START,\n PAGINATOR_CONSTANTS.classes.ALIGNMENT_END\n ], this._root);\n\n switch (alignment) {\n case 'start':\n addClass(PAGINATOR_CONSTANTS.classes.ALIGNMENT_START, this._root);\n break;\n case 'end':\n addClass(PAGINATOR_CONSTANTS.classes.ALIGNMENT_END, this._root);\n break;\n case 'space-between':\n default:\n addClass(PAGINATOR_CONSTANTS.classes.ALIGNMENT_SPACE_BETWEEN, this._root);\n break;\n }\n }\n}\n", "import { CustomElement, attachShadowTemplate, FoundationProperty, coerceBoolean } from '@tylertech/forge-core';\nimport { tylIconFirstPage, tylIconLastPage, tylIconKeyboardArrowRight, tylIconKeyboardArrowLeft } from '@tylertech/tyler-icons/standard';\nimport { PaginatorAlternativeAlignment, PAGINATOR_CONSTANTS, IPaginatorChangeEvent } from './paginator-constants';\nimport { PaginatorFoundation } from './paginator-foundation';\nimport { PaginatorAdapter } from './paginator-adapter';\nimport { IconButtonComponent } from '../icon-button';\nimport { SelectComponent } from '../select';\nimport { IconComponent, IconRegistry } from '../icon';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport { TooltipComponent } from '../tooltip';\n\nconst template = '<template><div class=\\\"forge-paginator\\\" part=\\\"root\\\"><div class=\\\"forge-paginator__container\\\" part=\\\"container\\\"><div class=\\\"forge-paginator__label\\\" part=\\\"label\\\"></div><forge-select class=\\\"forge-paginator__page-size-options\\\" aria-label=\\\"Choose page size\\\" density=\\\"dense\\\" part=\\\"page-size-options\\\"></forge-select><div class=\\\"forge-paginator__range-label\\\" part=\\\"range-label\\\"></div><forge-icon-button class=\\\"forge-paginator__first-page\\\" part=\\\"first-page-button\\\"><button aria-label=\\\"First Page\\\" part=\\\"first-page-button-element\\\"><forge-icon name=\\\"first_page\\\" part=\\\"first-page-icon\\\"></forge-icon></button><forge-tooltip position=\\\"top\\\">Go to the first page</forge-tooltip></forge-icon-button><forge-icon-button class=\\\"forge-paginator__previous-page\\\" part=\\\"previous-page-button\\\"><button aria-label=\\\"Previous Page\\\" part=\\\"previous-page-button-element\\\"><forge-icon name=\\\"keyboard_arrow_left\\\" part=\\\"previous-page-button-icon\\\"></forge-icon></button><forge-tooltip position=\\\"top\\\">Go to the previous page</forge-tooltip></forge-icon-button><div class=\\\"forge-paginator__range-label--alternative\\\" part=\\\"range-label-alternative\\\"></div><forge-icon-button class=\\\"forge-paginator__next-page\\\" part=\\\"next-page-button\\\"><button aria-label=\\\"Next Page\\\" part=\\\"next-page-button-element\\\"><forge-icon name=\\\"keyboard_arrow_right\\\" part=\\\"next-page-icon\\\"></forge-icon></button><forge-tooltip position=\\\"top\\\">Go to the next page</forge-tooltip></forge-icon-button><forge-icon-button class=\\\"forge-paginator__last-page\\\" part=\\\"last-page-button\\\"><button aria-label=\\\"Last Page\\\" part=\\\"last-page-button-element\\\"><forge-icon name=\\\"last_page\\\" part=\\\"last-page-icon\\\"></forge-icon></button><forge-tooltip position=\\\"top\\\">Go to the last page</forge-tooltip></forge-icon-button></div></div></template>';\nconst styles = '.forge-icon-button{display:-webkit-inline-box;display:inline-flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border:none;outline:0;background-color:transparent;fill:currentColor;color:inherit;font-size:24px;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:48px;height:48px;padding:12px}.forge-icon-button forge-icon,.forge-icon-button img,.forge-icon-button svg{width:24px;height:24px}.forge-icon-button:disabled{color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38))}.forge-icon-button:disabled{cursor:default;pointer-events:none}.forge-icon-button__icon{display:inline-block}.forge-icon-button__icon.forge-icon-button__icon--on{display:none}.forge-icon-button--on .forge-icon-button__icon{display:none}.forge-icon-button--on .forge-icon-button__icon.forge-icon-button__icon--on{display:inline-block}@-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}}.forge-icon-button{--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}.forge-icon-button::after,.forge-icon-button::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\\\"\\\"}.forge-icon-button::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)}.forge-icon-button::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.forge-icon-button.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.forge-icon-button.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.forge-icon-button.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.forge-icon-button.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}.forge-icon-button.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))}.forge-icon-button::after,.forge-icon-button::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.forge-icon-button.mdc-ripple-upgraded::after,.forge-icon-button.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%)}.forge-icon-button.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.forge-icon-button::after,.forge-icon-button::before{background-color:#000;background-color:var(--mdc-ripple-color,var(--mdc-theme-on-surface,#000))}.forge-icon-button.mdc-ripple-surface--hover::before,.forge-icon-button:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-icon-button.mdc-ripple-upgraded--background-focused::before,.forge-icon-button:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-icon-button:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-icon-button:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-icon-button.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}forge-icon-button{position:relative;display:inline-block;overflow:visible}.forge-icon-button--on{color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-icon-button--on::after,.forge-icon-button--on::before{background-color:#3f51b5;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#3f51b5))}.forge-icon-button--on.mdc-ripple-surface--hover::before,.forge-icon-button--on:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-icon-button--on.mdc-ripple-upgraded--background-focused::before,.forge-icon-button--on:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-icon-button--on:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-icon-button--on:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-icon-button--on.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.forge-icon-button--on::before{background-color:#3f51b5;background-color:var(--mdc-theme-primary,#3f51b5);opacity:.08}.forge-icon-button--dense{width:28px;height:28px;padding:2px;padding:0}.forge-icon-button--dense-1{width:44px;height:44px;padding:10px}.forge-icon-button--dense-2{width:40px;height:40px;padding:8px}.forge-icon-button--dense-3{width:36px;height:36px;padding:6px}.forge-icon-button--dense-4{width:32px;height:32px;padding:4px}.forge-icon-button--dense-5{width:28px;height:28px;padding:2px}.forge-icon-button--dense-6{width:24px;height:24px;padding:0}.forge-icon-button--with-badge forge-badge{z-index:1;z-index:var(--forge-z-index-surface,1);pointer-events:none;--forge-badge-max-width:32px;--forge-badge-border:1px solid transparent}.forge-icon-button--with-badge forge-badge[app-bar-context]{--forge-badge-border:2px solid var(--forge-app-bar-theme-background)}.forge-paginator{display:inline-block}.forge-paginator--alternative{display:-webkit-box;display:flex}.forge-paginator--alternative .forge-paginator__label,.forge-paginator--alternative .forge-paginator__page-size-options,.forge-paginator--alternative .forge-paginator__range-label{display:none}.forge-paginator--alternative .forge-paginator__range-label--alternative{display:inline-block;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body2-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-size:.875rem;font-size:var(--mdc-typography-body2-font-size, .875rem);line-height:1.25rem;line-height:var(--mdc-typography-body2-line-height, 1.25rem);font-weight:400;font-weight:var(--mdc-typography-body2-font-weight,400);letter-spacing:.0178571429em;letter-spacing:var(--mdc-typography-body2-letter-spacing, .0178571429em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body2-text-decoration,inherit);text-decoration:var(--mdc-typography-body2-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body2-text-transform,inherit);margin:0 12px}.forge-paginator__range-label--alternative{display:none}.forge-paginator__container{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}.forge-paginator__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);margin-right:16px}.forge-paginator__page-size-options{margin-right:16px}.forge-paginator__range-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);margin-right:8px}.forge-paginator__first-page,.forge-paginator__last-page,.forge-paginator__next-page,.forge-paginator__previous-page{color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}:host{display:inline-block}:host([hidden]){display:none}:host([alternative]) .forge-paginator--alignment-center .forge-paginator__container{-webkit-box-pack:center;justify-content:center}:host([alternative]) .forge-paginator--alignment-center .forge-paginator__range-label--alternative{margin:0 auto}:host([alternative]) .forge-paginator--alignment-start .forge-paginator__container{-webkit-box-pack:start;justify-content:flex-start}:host([alternative]) .forge-paginator--alignment-end .forge-paginator__container{-webkit-box-pack:end;justify-content:flex-end}:host([alternative]) .forge-paginator .forge-paginator__container{-webkit-box-flex:1;flex:1}';\n\nexport interface IPaginatorComponent extends IBaseComponent {\n pageIndex: number;\n pageSize: number;\n offset: number;\n total: number;\n pageSizeOptions: number[] | boolean;\n label: string;\n firstLast: boolean;\n first: boolean;\n disabled: boolean;\n alternative: boolean;\n alignment: PaginatorAlternativeAlignment;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-paginator': IPaginatorComponent;\n }\n\n interface HTMLElementEventMap {\n 'forge-paginator-change': CustomEvent<IPaginatorChangeEvent>;\n }\n}\n\n/**\n * The custom element class behind the `<forge-paginator>` component.\n */\n@CustomElement({\n name: PAGINATOR_CONSTANTS.elementName,\n dependencies: [\n IconButtonComponent,\n SelectComponent,\n IconComponent,\n TooltipComponent\n ]\n})\nexport class PaginatorComponent extends BaseComponent implements IPaginatorComponent {\n public static get observedAttributes(): string[] {\n return [\n PAGINATOR_CONSTANTS.attributes.PAGE_INDEX,\n PAGINATOR_CONSTANTS.attributes.PAGE_SIZE,\n PAGINATOR_CONSTANTS.attributes.OFFSET,\n PAGINATOR_CONSTANTS.attributes.TOTAL,\n PAGINATOR_CONSTANTS.attributes.PAGE_SIZE_OPTIONS,\n PAGINATOR_CONSTANTS.attributes.LABEL,\n PAGINATOR_CONSTANTS.attributes.FIRST_LAST,\n PAGINATOR_CONSTANTS.attributes.FIRST,\n PAGINATOR_CONSTANTS.attributes.DISABLED,\n PAGINATOR_CONSTANTS.attributes.ALTERNATIVE,\n PAGINATOR_CONSTANTS.attributes.ALIGNMENT\n ];\n }\n\n private _foundation: PaginatorFoundation;\n\n constructor() {\n super();\n IconRegistry.define([\n tylIconFirstPage,\n tylIconKeyboardArrowLeft,\n tylIconKeyboardArrowRight,\n tylIconLastPage\n ]);\n attachShadowTemplate(this, template, styles);\n this._foundation = new PaginatorFoundation(new PaginatorAdapter(this));\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 PAGINATOR_CONSTANTS.attributes.PAGE_INDEX:\n this.pageIndex = Number(newValue) || PAGINATOR_CONSTANTS.numbers.DEFAULT_PAGE_INDEX;\n break;\n case PAGINATOR_CONSTANTS.attributes.PAGE_SIZE:\n this.pageSize = Number(newValue) || PAGINATOR_CONSTANTS.numbers.DEFAULT_PAGE_SIZE;\n break;\n case PAGINATOR_CONSTANTS.attributes.OFFSET:\n this.offset = Number(newValue);\n break;\n case PAGINATOR_CONSTANTS.attributes.TOTAL:\n this.total = Number(newValue) || PAGINATOR_CONSTANTS.numbers.DEFAULT_TOTAL;\n break;\n case PAGINATOR_CONSTANTS.attributes.PAGE_SIZE_OPTIONS:\n this.pageSizeOptions = newValue as any;\n break;\n case PAGINATOR_CONSTANTS.attributes.LABEL:\n this.label = newValue;\n break;\n case PAGINATOR_CONSTANTS.attributes.FIRST_LAST:\n this.firstLast = coerceBoolean(newValue);\n break;\n case PAGINATOR_CONSTANTS.attributes.FIRST:\n this.first = coerceBoolean(newValue);\n break;\n case PAGINATOR_CONSTANTS.attributes.DISABLED:\n this.disabled = coerceBoolean(newValue);\n break;\n case PAGINATOR_CONSTANTS.attributes.ALTERNATIVE:\n this.alternative = coerceBoolean(newValue);\n break;\n case PAGINATOR_CONSTANTS.attributes.ALIGNMENT:\n this.alignment = newValue as PaginatorAlternativeAlignment;\n break;\n }\n }\n\n /** The zero-based page index. Default is 0. */\n @FoundationProperty()\n public pageIndex: number;\n\n /** Number of items to display on a page. By default set to 25. */\n @FoundationProperty()\n public pageSize: number;\n\n /** Sets page index by providing the number of items to skip. The getter for this property returns the number of items to skip. */\n @FoundationProperty()\n public offset: number;\n\n /** The total number of items to be paginated. Default is 0. */\n @FoundationProperty()\n public total: number;\n\n /** The set of provided page size options to display to the user. */\n @FoundationProperty()\n public pageSizeOptions: number[] | boolean;\n\n /** A label for the paginator. Default is \"Rows per page:\". */\n @FoundationProperty()\n public label: string;\n\n /** Whether to show the first page and last page buttons. Default is false. */\n @FoundationProperty()\n public firstLast: boolean;\n\n /** Whether to show the first page button. Default is false. */\n @FoundationProperty()\n public first: boolean;\n\n /** Whether the paginator is disabled. Default is false. */\n @FoundationProperty()\n public disabled: boolean;\n\n @FoundationProperty()\n public alternative: boolean;\n\n @FoundationProperty()\n public alignment: PaginatorAlternativeAlignment;\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { PaginatorComponent } from './paginator';\n\nexport * from './paginator-adapter';\nexport * from './paginator-constants';\nexport * from './paginator-foundation';\nexport * from './paginator';\n\nexport function definePaginatorComponent(): void {\n defineCustomElement(PaginatorComponent);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import {
7
7
  createSvgFromString
8
- } from "./chunk.52F6VUCF.js";
8
+ } from "./chunk.3VR7VHL5.js";
9
9
  import {
10
10
  BaseComponentDelegate
11
11
  } from "./chunk.WT4W2IFT.js";
@@ -504,4 +504,4 @@ export {
504
504
  IconComponentDelegate,
505
505
  defineIconComponent
506
506
  };
507
- //# sourceMappingURL=chunk.P43Z3YAS.js.map
507
+ //# sourceMappingURL=chunk.V6TRG2CM.js.map
@@ -11,7 +11,7 @@ import {
11
11
  ICON_CONSTANTS,
12
12
  IconComponent,
13
13
  IconRegistry
14
- } from "./chunk.P43Z3YAS.js";
14
+ } from "./chunk.V6TRG2CM.js";
15
15
  import {
16
16
  BaseAdapter
17
17
  } from "./chunk.KZATVOA6.js";
@@ -165,4 +165,4 @@ export {
165
165
  OpenIconComponent,
166
166
  defineOpenIconComponent
167
167
  };
168
- //# sourceMappingURL=chunk.JICZQ2BO.js.map
168
+ //# sourceMappingURL=chunk.VEC77KBM.js.map
@@ -9,10 +9,10 @@ import {
9
9
  BaseDatePickerComponent,
10
10
  BaseDatePickerFoundation,
11
11
  createToggleElement
12
- } from "./chunk.MAGJQ2PP.js";
12
+ } from "./chunk.DVYPTR7X.js";
13
13
  import {
14
14
  CalendarComponent
15
- } from "./chunk.JQQOZMKQ.js";
15
+ } from "./chunk.MSCWHFJZ.js";
16
16
  import {
17
17
  CalendarDropdown
18
18
  } from "./chunk.YDPSV74L.js";
@@ -30,7 +30,7 @@ import {
30
30
  } from "./chunk.5EEEKOOK.js";
31
31
  import {
32
32
  IconButtonComponent
33
- } from "./chunk.7Y4NHCJH.js";
33
+ } from "./chunk.UM3J4AZ7.js";
34
34
  import {
35
35
  tylIconDateRange
36
36
  } from "./chunk.GS2AXUCN.js";
@@ -40,7 +40,7 @@ import {
40
40
  import {
41
41
  IconComponent,
42
42
  IconRegistry
43
- } from "./chunk.P43Z3YAS.js";
43
+ } from "./chunk.V6TRG2CM.js";
44
44
  import {
45
45
  FormFieldComponentDelegate
46
46
  } from "./chunk.HZISALRH.js";
@@ -49,7 +49,7 @@ import {
49
49
  } from "./chunk.WIYLQTSX.js";
50
50
  import {
51
51
  isSameDate
52
- } from "./chunk.52F6VUCF.js";
52
+ } from "./chunk.3VR7VHL5.js";
53
53
  import {
54
54
  FoundationProperty
55
55
  } from "./chunk.MMIZOYAS.js";
@@ -757,4 +757,4 @@ export {
757
757
  DateRangeComponentDelegate,
758
758
  defineDateRangePickerComponent
759
759
  };
760
- //# sourceMappingURL=chunk.ZABF5CI6.js.map
760
+ //# sourceMappingURL=chunk.Y2ORADJS.js.map