@tylertech/forge 2.6.0 → 2.7.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.
@@ -54836,7 +54836,7 @@
54836
54836
  "privacy": "private",
54837
54837
  "return": {
54838
54838
  "type": {
54839
- "text": "void"
54839
+ "text": "boolean"
54840
54840
  }
54841
54841
  },
54842
54842
  "parameters": [
@@ -54845,6 +54845,10 @@
54845
54845
  "type": {
54846
54846
  "text": "string"
54847
54847
  }
54848
+ },
54849
+ {
54850
+ "name": "{ pageSize = this._pageSize, pageIndex = this._pageIndex }",
54851
+ "default": "{}"
54848
54852
  }
54849
54853
  ]
54850
54854
  },
@@ -9,7 +9,7 @@ import {
9
9
  ButtonToggleGroupComponent,
10
10
  ButtonToggleGroupFoundation,
11
11
  defineButtonToggleGroupComponent
12
- } from "../../chunks/chunk.GNAIKBO6.js";
12
+ } from "../../chunks/chunk.EUPO2VO2.js";
13
13
  import "../../chunks/chunk.IUNON3UL.js";
14
14
  import "../../chunks/chunk.56BNM7F2.js";
15
15
  import "../../chunks/chunk.4HQ5VELO.js";
@@ -13,7 +13,7 @@ import {
13
13
  ButtonToggleGroupComponent,
14
14
  ButtonToggleGroupFoundation,
15
15
  defineButtonToggleGroupComponent
16
- } from "../chunks/chunk.GNAIKBO6.js";
16
+ } from "../chunks/chunk.EUPO2VO2.js";
17
17
  import {
18
18
  BUTTON_TOGGLE_CONSTANTS,
19
19
  ButtonToggleAdapter,
@@ -238,8 +238,9 @@ var ButtonToggleGroupFoundation = class {
238
238
  this._adapter.emitHostEvent(BUTTON_TOGGLE_GROUP_CONSTANTS.events.CHANGE, this._getValue());
239
239
  }
240
240
  _getValue() {
241
+ var _a;
241
242
  const selections = this._adapter.getSelectedValues();
242
- return this._multiple ? Array.from(new Set(selections)) : selections.slice(0, 1)[0] || null;
243
+ return this._multiple ? Array.from(new Set(selections)) : (_a = selections.slice(0, 1)[0]) != null ? _a : null;
243
244
  }
244
245
  _applyValue(value) {
245
246
  let values = value instanceof Array ? value : [value];
@@ -458,4 +459,4 @@ export {
458
459
  ButtonToggleGroupComponent,
459
460
  defineButtonToggleGroupComponent
460
461
  };
461
- //# sourceMappingURL=chunk.GNAIKBO6.js.map
462
+ //# sourceMappingURL=chunk.EUPO2VO2.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/button-toggle/button-toggle-group/button-toggle-group-constants.ts", "../../src/button-toggle/button-toggle-group/button-toggle-group-adapter.ts", "../../src/button-toggle/button-toggle-group/button-toggle-group-foundation.ts", "../../src/button-toggle/button-toggle-group/button-toggle-group.ts", "../../src/button-toggle/button-toggle-group/index.ts"],
4
- "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}button-toggle-group`;\n\nconst attributes = {\n VALUE: 'value',\n MULTIPLE: 'multiple',\n MANDATORY: 'mandatory',\n VERTICAL: 'vertical',\n STRETCH: 'stretch',\n DISABLED: 'disabled',\n DENSE: 'dense'\n};\n\nconst classes = {\n VERTICAL: 'forge-button-toggle-group--vertical',\n STRETCH: 'forge-button-toggle-group--stretch'\n};\n\nconst selectors = {\n ROOT: '.forge-button-toggle-group'\n};\n\nconst events = {\n CHANGE: `${elementName}-change`\n};\n\nexport const BUTTON_TOGGLE_GROUP_CONSTANTS = {\n elementName,\n attributes,\n classes,\n selectors,\n events\n};\n\nexport type IButtonToggleGroupChangeEventData<T> = T;\n\nexport interface IButtonToggleOption {\n label?: string;\n icon?: string;\n value: any;\n leadingIcon?: string;\n trailingIcon?: string;\n}\n", "import { getShadowElement, removeAllChildren } from '@tylertech/forge-core';\nimport { ICON_CLASS_NAME } from '../../constants';\nimport { BaseAdapter, IBaseAdapter } from '../../core/base/base-adapter';\nimport { IButtonToggleComponent } from '../button-toggle/button-toggle';\nimport { BUTTON_TOGGLE_CONSTANTS } from '../button-toggle/button-toggle-constants';\nimport { IButtonToggleGroupComponent } from './button-toggle-group';\nimport { BUTTON_TOGGLE_GROUP_CONSTANTS, IButtonToggleOption } from './button-toggle-group-constants';\n\nexport interface IButtonToggleGroupAdapter extends IBaseAdapter {\n addListener(type: string, listener: (evt: Event) => void): void;\n removeListener(type: string, listener: (evt: Event) => void): void;\n addSlotChangeListener(listener: (evt: Event) => void): void;\n removeSlotChangeListener(listener: (evt: Event) => void): void;\n deselect(selectedToggle: IButtonToggleComponent): void;\n applyAdjacentSelections(isVertical: boolean): void;\n setVertical(isVertical: boolean): void;\n setStretch(value: boolean): void;\n setDense(value: boolean): void;\n setDisabled(value: boolean): void;\n getSelectedValues(): any[];\n applyValues(values: any[]): void;\n createOptions(options: IButtonToggleOption[]): void;\n}\n\nexport class ButtonToggleGroupAdapter extends BaseAdapter<IButtonToggleGroupComponent> implements IButtonToggleGroupAdapter {\n private _rootElement: HTMLElement;\n private _slotElement: HTMLSlotElement;\n\n constructor(component: IButtonToggleGroupComponent) {\n super(component);\n this._rootElement = getShadowElement(component, BUTTON_TOGGLE_GROUP_CONSTANTS.selectors.ROOT);\n this._slotElement = this._rootElement.querySelector('slot') as HTMLSlotElement;\n }\n\n public addListener(type: string, listener: (evt: Event) => void): void {\n this._rootElement.addEventListener(type, listener);\n }\n\n public removeListener(type: string, listener: (evt: Event) => void): void {\n this._rootElement.removeEventListener(type, listener);\n }\n\n public addSlotChangeListener(listener: EventListener): void {\n this._slotElement.addEventListener('slotchange', listener);\n }\n public removeSlotChangeListener(listener: EventListener): void {\n this._slotElement.addEventListener('slotchange', listener);\n }\n\n public deselect(selectedToggle: IButtonToggleComponent): void {\n const toggles = this._getButtonToggleElements();\n toggles.filter(t => t !== selectedToggle).forEach(t => t.selected = false);\n }\n\n public applyAdjacentSelections(isVertical: boolean): void {\n const toggles = this._getButtonToggleElements();\n for (let i = toggles.length - 1; i > 0; i--) {\n toggles[i].removeAttribute(BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT);\n toggles[i].removeAttribute(BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT_VERTICAL);\n if (toggles[i].selected && toggles[i - 1].selected) {\n const attr = isVertical ? BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT_VERTICAL : BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT;\n toggles[i].setAttribute(attr, '');\n }\n }\n }\n\n public setVertical(isVertical: boolean): void {\n if (isVertical) {\n this._rootElement.classList.add(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.VERTICAL);\n } else {\n this._rootElement.classList.remove(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.VERTICAL);\n }\n }\n\n public setStretch(value: boolean): void {\n if (value) {\n this._rootElement.classList.add(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.STRETCH);\n } else {\n this._rootElement.classList.remove(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.STRETCH);\n }\n\n const toggles = this._getButtonToggleElements();\n toggles.forEach(toggle => {\n if (value) {\n toggle.setAttribute('stretch', '');\n } else {\n toggle.removeAttribute('stretch');\n }\n });\n }\n\n public setDense(value: boolean): void {\n const toggles = this._getButtonToggleElements();\n toggles.forEach(t => t.dense = value);\n }\n\n public setDisabled(value: boolean): void {\n const toggles = this._getButtonToggleElements();\n toggles.forEach(t => t.disabled = value);\n }\n\n public getSelectedValues(): any[] {\n const toggles = this._getButtonToggleElements();\n return toggles.filter(t => t.selected).map(t => t.value);\n }\n\n public applyValues(values: any[]): void {\n const toggles = this._getButtonToggleElements();\n toggles.forEach(t => t.selected = values.indexOf(t.value) >= 0);\n }\n\n public createOptions(options: IButtonToggleOption[]): void {\n removeAllChildren(this._component);\n options.forEach(o => {\n this._component.appendChild(this._createButtonToggle(o));\n });\n }\n\n private _createButtonToggle(option: IButtonToggleOption): IButtonToggleComponent {\n const buttonToggle = document.createElement(BUTTON_TOGGLE_CONSTANTS.elementName) as IButtonToggleComponent;\n buttonToggle.value = option.value;\n\n if (option.label) {\n buttonToggle.textContent = option.label;\n } else if (option.icon) {\n const icon = document.createElement('i');\n icon.textContent = option.icon;\n icon.classList.add(ICON_CLASS_NAME);\n icon.setAttribute('aria-hidden', 'true');\n buttonToggle.appendChild(icon);\n }\n\n if (option.leadingIcon) {\n const leadingIcon = document.createElement('i');\n leadingIcon.slot = 'leading';\n leadingIcon.textContent = option.leadingIcon;\n leadingIcon.classList.add(ICON_CLASS_NAME);\n leadingIcon.setAttribute('aria-hidden', 'true');\n buttonToggle.appendChild(leadingIcon);\n }\n\n if (option.trailingIcon) {\n const trailingIcon = document.createElement('i');\n trailingIcon.slot = 'trailing';\n trailingIcon.textContent = option.trailingIcon;\n trailingIcon.classList.add(ICON_CLASS_NAME);\n trailingIcon.setAttribute('aria-hidden', 'true');\n buttonToggle.appendChild(trailingIcon);\n }\n\n return buttonToggle;\n }\n\n private _getButtonToggleElements(): IButtonToggleComponent[] {\n return Array.from(this._component.querySelectorAll(BUTTON_TOGGLE_CONSTANTS.elementName));\n }\n}\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\nimport { IButtonToggleComponent } from '../button-toggle/button-toggle';\nimport { BUTTON_TOGGLE_CONSTANTS, IButtonToggleSelectEventData } from '../button-toggle/button-toggle-constants';\nimport { IButtonToggleGroupAdapter } from './button-toggle-group-adapter';\nimport { BUTTON_TOGGLE_GROUP_CONSTANTS, IButtonToggleOption } from './button-toggle-group-constants';\n\nexport interface IButtonToggleGroupFoundation extends ICustomElementFoundation {\n value: any;\n multiple: boolean;\n stretch: boolean;\n mandatory: boolean;\n vertical: boolean;\n dense: boolean;\n disabled: boolean;\n options: IButtonToggleOption[];\n}\n\nexport class ButtonToggleGroupFoundation implements IButtonToggleGroupFoundation {\n private _isInitialized = false;\n private _multiple = false;\n private _mandatory = false;\n private _vertical = false;\n private _stretch = false;\n private _dense = false;\n private _disabled = false;\n private _options: IButtonToggleOption[] = [];\n private _values: any[] = [];\n private _originalValue: any;\n private _selectListener: (evt: CustomEvent<IButtonToggleSelectEventData>) => void;\n private _slotListener: () => void;\n\n constructor(private _adapter: IButtonToggleGroupAdapter) {\n this._selectListener = evt => this._onSelect(evt);\n this._slotListener = () => this._synchronize();\n }\n\n public initialize(): void {\n if (this._options && this._options.length) {\n this._applyOptions(false);\n }\n\n this._adapter.addListener(BUTTON_TOGGLE_CONSTANTS.events.SELECT, this._selectListener);\n this._adapter.addSlotChangeListener(this._slotListener);\n this._adapter.setVertical(this._vertical);\n this._adapter.setStretch(this._stretch);\n this._adapter.setDense(this._dense);\n this._adapter.setDisabled(this._disabled);\n this._adapter.applyAdjacentSelections(this._vertical);\n this._isInitialized = true;\n }\n\n public disconnect(): void {\n this._isInitialized = false;\n this._adapter.removeListener(BUTTON_TOGGLE_CONSTANTS.events.SELECT, this._selectListener);\n this._adapter.removeSlotChangeListener(this._slotListener);\n }\n\n private _synchronize(): void {\n if (!this._multiple) {\n const selectedValues = this._adapter.getSelectedValues().concat(this._values);\n this.value = selectedValues.length ? selectedValues[selectedValues.length - 1] : null;\n } else {\n const selectedValues = new Set(this._adapter.getSelectedValues().concat(this._values));\n this._applyValue(Array.from(selectedValues));\n }\n }\n\n private _onSelect(evt: CustomEvent<IButtonToggleSelectEventData>): void {\n const target = evt.target as IButtonToggleComponent;\n\n // When in mandatory mode we need to ensure at least one element is selected. If there are no selections\n // then we need to reselect the target toggle because it was deselected\n if (this._mandatory) {\n const values = this._adapter.getSelectedValues();\n if (!values.length) {\n target.selected = true;\n return;\n }\n }\n\n // When not in multiple mode, we deselect all toggles, except for the one that was just changed\n if (!this._multiple) {\n this._adapter.deselect(target);\n }\n\n this._adapter.applyAdjacentSelections(this._vertical);\n this._adapter.emitHostEvent(BUTTON_TOGGLE_GROUP_CONSTANTS.events.CHANGE, this._getValue());\n }\n\n private _getValue(): any {\n const selections = this._adapter.getSelectedValues();\n return this._multiple ? Array.from(new Set(selections)) : selections.slice(0, 1)[0] || null;\n }\n\n private _applyValue(value: any): void {\n let values = value instanceof Array ? value : [value];\n if (!this._multiple && values.length > 1) {\n values = values[0];\n }\n this._values = values;\n this._adapter.applyValues(values);\n if (this._multiple) {\n this._adapter.applyAdjacentSelections(this._vertical);\n }\n }\n\n private _applyOptions(init = true): void {\n if (this._options) {\n this._adapter.createOptions(this._options);\n\n if (init) {\n this._adapter.setStretch(this._stretch);\n this._adapter.setDense(this._dense);\n this._adapter.setDisabled(this._disabled);\n this._adapter.applyAdjacentSelections(this._vertical);\n }\n }\n }\n\n public get value(): any {\n if (!this._isInitialized) {\n return this._originalValue;\n }\n return this._getValue();\n }\n public set value(value: any) {\n this._originalValue = value;\n this._applyValue(value);\n }\n\n public get multiple(): boolean {\n return this._multiple;\n }\n public set multiple(value: boolean) {\n if (this._multiple !== value) {\n this._multiple = value;\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MULTIPLE, this._multiple as any);\n }\n }\n\n public get mandatory(): boolean {\n return this._mandatory;\n }\n public set mandatory(value: boolean) {\n if (this._mandatory !== value) {\n this._mandatory = value;\n if (this._mandatory) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY);\n }\n }\n }\n\n public get vertical(): boolean {\n return this._vertical;\n }\n public set vertical(value: boolean) {\n if (this._vertical !== value) {\n this._vertical = value;\n this._adapter.setVertical(this._vertical);\n this._adapter.applyAdjacentSelections(this._vertical);\n if (this._vertical) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL);\n }\n }\n }\n\n public get stretch(): boolean {\n return this._stretch;\n }\n public set stretch(value: boolean) {\n if (this._stretch !== value) {\n this._stretch = value;\n this._adapter.setStretch(this._stretch);\n if (this._stretch) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH);\n }\n }\n }\n\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._adapter.setDense(this._dense);\n if (this._dense) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE);\n }\n }\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: boolean) {\n if (this._disabled !== value) {\n this._disabled = value;\n this._adapter.setDisabled(this._disabled);\n if (this._disabled) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED);\n }\n }\n }\n\n public get options(): IButtonToggleOption[] {\n return this._options.map(o => ({ ...o }));\n }\n public set options(value: IButtonToggleOption[]) {\n this._options = value.map(o => ({ ...o }));\n if (this._isInitialized) {\n this._applyOptions();\n }\n }\n}\n", "import { attachShadowTemplate, coerceBoolean, CustomElement, FoundationProperty } from '@tylertech/forge-core';\nimport { BaseComponent, IBaseComponent } from '../../core/base/base-component';\nimport { ButtonToggleComponent } from '../button-toggle/button-toggle';\nimport { ButtonToggleGroupAdapter } from './button-toggle-group-adapter';\nimport { BUTTON_TOGGLE_GROUP_CONSTANTS, IButtonToggleOption } from './button-toggle-group-constants';\nimport { ButtonToggleGroupFoundation } from './button-toggle-group-foundation';\n\nconst template = '<template><div class=\\\"forge-button-toggle-group\\\" role=\\\"group\\\" aria-label=\\\"Button group\\\" part=\\\"root\\\"><slot></slot></div></template>';\nconst styles = '.forge-button-toggle-group{display:-webkit-box;display:flex}.forge-button-toggle-group ::slotted(:not(:last-child)){--forge-button-toggle-border-right-width:0;--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-bottom-left-radius:0;--forge-button-toggle-border-top-right-radius:0;--forge-button-toggle-border-bottom-right-radius:0}.forge-button-toggle-group ::slotted(:first-child){--forge-button-toggle-border-top-left-radius:4px;--forge-button-toggle-border-bottom-left-radius:4px}.forge-button-toggle-group ::slotted(:last-child){--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-bottom-left-radius:0;--forge-button-toggle-border-top-right-radius:4px;--forge-button-toggle-border-bottom-right-radius:4px}.forge-button-toggle-group--vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.forge-button-toggle-group--vertical ::slotted(:not(:last-child)){--forge-button-toggle-border-right-width:1px;--forge-button-toggle-border-bottom-width:0;--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-bottom-left-radius:0;--forge-button-toggle-border-top-right-radius:0;--forge-button-toggle-border-bottom-right-radius:0}.forge-button-toggle-group--vertical ::slotted(:first-child){--forge-button-toggle-border-top-left-radius:4px;--forge-button-toggle-border-top-right-radius:4px}.forge-button-toggle-group--vertical ::slotted(:last-child){--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-top-right-radius:0;--forge-button-toggle-border-bottom-left-radius:4px;--forge-button-toggle-border-bottom-right-radius:4px}.forge-button-toggle-group ::slotted(:only-child){--forge-button-toggle-border-top-left-radius:4px;--forge-button-toggle-border-bottom-left-radius:4px;--forge-button-toggle-border-top-right-radius:4px;--forge-button-toggle-border-bottom-right-radius:4px}.forge-button-toggle-group--stretch{width:100%}:host{display:block}:host([hidden]){display:none}';\n\nexport interface IButtonToggleGroupComponent extends IBaseComponent {\n value: any;\n multiple: boolean;\n stretch: boolean;\n mandatory: boolean;\n vertical: boolean;\n disabled: boolean;\n dense: boolean;\n options: IButtonToggleOption[];\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-button-toggle-group': IButtonToggleGroupComponent;\n }\n}\n\n/**\n * The web component class behind the `<forge-button-toggle-group>` custom element.\n * \n * @tag forge-button-toggle-group\n */\n@CustomElement({\n name: BUTTON_TOGGLE_GROUP_CONSTANTS.elementName,\n dependencies: [ButtonToggleComponent]\n})\nexport class ButtonToggleGroupComponent extends BaseComponent implements IButtonToggleGroupComponent {\n public static get observedAttributes(): string[] {\n return [\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VALUE,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MULTIPLE,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE\n ];\n }\n\n private _foundation: ButtonToggleGroupFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new ButtonToggleGroupFoundation(new ButtonToggleGroupAdapter(this));\n }\n\n public initializedCallback(): 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 BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VALUE:\n this.value = newValue;\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MULTIPLE:\n this.multiple = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY:\n this.mandatory = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL:\n this.vertical = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH:\n this.stretch = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE:\n this.dense = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED:\n this.disabled = coerceBoolean(newValue);\n break;\n }\n }\n\n @FoundationProperty()\n public value: any;\n\n @FoundationProperty()\n public multiple: boolean;\n\n @FoundationProperty()\n public mandatory: boolean;\n\n @FoundationProperty()\n public vertical: boolean;\n\n @FoundationProperty()\n public stretch: boolean;\n\n @FoundationProperty()\n public dense: boolean;\n\n @FoundationProperty()\n public disabled: boolean;\n\n @FoundationProperty()\n public options: IButtonToggleOption[];\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { ButtonToggleGroupComponent } from './button-toggle-group';\n\nexport * from './button-toggle-group-adapter';\nexport * from './button-toggle-group-constants';\nexport * from './button-toggle-group-foundation';\nexport * from './button-toggle-group';\n\nexport function defineButtonToggleGroupComponent(): void {\n defineCustomElement(ButtonToggleGroupComponent);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}button-toggle-group`;\n\nconst attributes = {\n VALUE: 'value',\n MULTIPLE: 'multiple',\n MANDATORY: 'mandatory',\n VERTICAL: 'vertical',\n STRETCH: 'stretch',\n DISABLED: 'disabled',\n DENSE: 'dense'\n};\n\nconst classes = {\n VERTICAL: 'forge-button-toggle-group--vertical',\n STRETCH: 'forge-button-toggle-group--stretch'\n};\n\nconst selectors = {\n ROOT: '.forge-button-toggle-group'\n};\n\nconst events = {\n CHANGE: `${elementName}-change`\n};\n\nexport const BUTTON_TOGGLE_GROUP_CONSTANTS = {\n elementName,\n attributes,\n classes,\n selectors,\n events\n};\n\nexport type IButtonToggleGroupChangeEventData<T> = T;\n\nexport interface IButtonToggleOption {\n label?: string;\n icon?: string;\n value: any;\n leadingIcon?: string;\n trailingIcon?: string;\n}\n", "import { getShadowElement, removeAllChildren } from '@tylertech/forge-core';\nimport { ICON_CLASS_NAME } from '../../constants';\nimport { BaseAdapter, IBaseAdapter } from '../../core/base/base-adapter';\nimport { IButtonToggleComponent } from '../button-toggle/button-toggle';\nimport { BUTTON_TOGGLE_CONSTANTS } from '../button-toggle/button-toggle-constants';\nimport { IButtonToggleGroupComponent } from './button-toggle-group';\nimport { BUTTON_TOGGLE_GROUP_CONSTANTS, IButtonToggleOption } from './button-toggle-group-constants';\n\nexport interface IButtonToggleGroupAdapter extends IBaseAdapter {\n addListener(type: string, listener: (evt: Event) => void): void;\n removeListener(type: string, listener: (evt: Event) => void): void;\n addSlotChangeListener(listener: (evt: Event) => void): void;\n removeSlotChangeListener(listener: (evt: Event) => void): void;\n deselect(selectedToggle: IButtonToggleComponent): void;\n applyAdjacentSelections(isVertical: boolean): void;\n setVertical(isVertical: boolean): void;\n setStretch(value: boolean): void;\n setDense(value: boolean): void;\n setDisabled(value: boolean): void;\n getSelectedValues(): any[];\n applyValues(values: any[]): void;\n createOptions(options: IButtonToggleOption[]): void;\n}\n\nexport class ButtonToggleGroupAdapter extends BaseAdapter<IButtonToggleGroupComponent> implements IButtonToggleGroupAdapter {\n private _rootElement: HTMLElement;\n private _slotElement: HTMLSlotElement;\n\n constructor(component: IButtonToggleGroupComponent) {\n super(component);\n this._rootElement = getShadowElement(component, BUTTON_TOGGLE_GROUP_CONSTANTS.selectors.ROOT);\n this._slotElement = this._rootElement.querySelector('slot') as HTMLSlotElement;\n }\n\n public addListener(type: string, listener: (evt: Event) => void): void {\n this._rootElement.addEventListener(type, listener);\n }\n\n public removeListener(type: string, listener: (evt: Event) => void): void {\n this._rootElement.removeEventListener(type, listener);\n }\n\n public addSlotChangeListener(listener: EventListener): void {\n this._slotElement.addEventListener('slotchange', listener);\n }\n public removeSlotChangeListener(listener: EventListener): void {\n this._slotElement.addEventListener('slotchange', listener);\n }\n\n public deselect(selectedToggle: IButtonToggleComponent): void {\n const toggles = this._getButtonToggleElements();\n toggles.filter(t => t !== selectedToggle).forEach(t => t.selected = false);\n }\n\n public applyAdjacentSelections(isVertical: boolean): void {\n const toggles = this._getButtonToggleElements();\n for (let i = toggles.length - 1; i > 0; i--) {\n toggles[i].removeAttribute(BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT);\n toggles[i].removeAttribute(BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT_VERTICAL);\n if (toggles[i].selected && toggles[i - 1].selected) {\n const attr = isVertical ? BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT_VERTICAL : BUTTON_TOGGLE_CONSTANTS.attributes.SELECTED_ADJACENT;\n toggles[i].setAttribute(attr, '');\n }\n }\n }\n\n public setVertical(isVertical: boolean): void {\n if (isVertical) {\n this._rootElement.classList.add(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.VERTICAL);\n } else {\n this._rootElement.classList.remove(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.VERTICAL);\n }\n }\n\n public setStretch(value: boolean): void {\n if (value) {\n this._rootElement.classList.add(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.STRETCH);\n } else {\n this._rootElement.classList.remove(BUTTON_TOGGLE_GROUP_CONSTANTS.classes.STRETCH);\n }\n\n const toggles = this._getButtonToggleElements();\n toggles.forEach(toggle => {\n if (value) {\n toggle.setAttribute('stretch', '');\n } else {\n toggle.removeAttribute('stretch');\n }\n });\n }\n\n public setDense(value: boolean): void {\n const toggles = this._getButtonToggleElements();\n toggles.forEach(t => t.dense = value);\n }\n\n public setDisabled(value: boolean): void {\n const toggles = this._getButtonToggleElements();\n toggles.forEach(t => t.disabled = value);\n }\n\n public getSelectedValues(): any[] {\n const toggles = this._getButtonToggleElements();\n return toggles.filter(t => t.selected).map(t => t.value);\n }\n\n public applyValues(values: any[]): void {\n const toggles = this._getButtonToggleElements();\n toggles.forEach(t => t.selected = values.indexOf(t.value) >= 0);\n }\n\n public createOptions(options: IButtonToggleOption[]): void {\n removeAllChildren(this._component);\n options.forEach(o => {\n this._component.appendChild(this._createButtonToggle(o));\n });\n }\n\n private _createButtonToggle(option: IButtonToggleOption): IButtonToggleComponent {\n const buttonToggle = document.createElement(BUTTON_TOGGLE_CONSTANTS.elementName) as IButtonToggleComponent;\n buttonToggle.value = option.value;\n\n if (option.label) {\n buttonToggle.textContent = option.label;\n } else if (option.icon) {\n const icon = document.createElement('i');\n icon.textContent = option.icon;\n icon.classList.add(ICON_CLASS_NAME);\n icon.setAttribute('aria-hidden', 'true');\n buttonToggle.appendChild(icon);\n }\n\n if (option.leadingIcon) {\n const leadingIcon = document.createElement('i');\n leadingIcon.slot = 'leading';\n leadingIcon.textContent = option.leadingIcon;\n leadingIcon.classList.add(ICON_CLASS_NAME);\n leadingIcon.setAttribute('aria-hidden', 'true');\n buttonToggle.appendChild(leadingIcon);\n }\n\n if (option.trailingIcon) {\n const trailingIcon = document.createElement('i');\n trailingIcon.slot = 'trailing';\n trailingIcon.textContent = option.trailingIcon;\n trailingIcon.classList.add(ICON_CLASS_NAME);\n trailingIcon.setAttribute('aria-hidden', 'true');\n buttonToggle.appendChild(trailingIcon);\n }\n\n return buttonToggle;\n }\n\n private _getButtonToggleElements(): IButtonToggleComponent[] {\n return Array.from(this._component.querySelectorAll(BUTTON_TOGGLE_CONSTANTS.elementName));\n }\n}\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\nimport { IButtonToggleComponent } from '../button-toggle/button-toggle';\nimport { BUTTON_TOGGLE_CONSTANTS, IButtonToggleSelectEventData } from '../button-toggle/button-toggle-constants';\nimport { IButtonToggleGroupAdapter } from './button-toggle-group-adapter';\nimport { BUTTON_TOGGLE_GROUP_CONSTANTS, IButtonToggleOption } from './button-toggle-group-constants';\n\nexport interface IButtonToggleGroupFoundation extends ICustomElementFoundation {\n value: any;\n multiple: boolean;\n stretch: boolean;\n mandatory: boolean;\n vertical: boolean;\n dense: boolean;\n disabled: boolean;\n options: IButtonToggleOption[];\n}\n\nexport class ButtonToggleGroupFoundation implements IButtonToggleGroupFoundation {\n private _isInitialized = false;\n private _multiple = false;\n private _mandatory = false;\n private _vertical = false;\n private _stretch = false;\n private _dense = false;\n private _disabled = false;\n private _options: IButtonToggleOption[] = [];\n private _values: any[] = [];\n private _originalValue: any;\n private _selectListener: (evt: CustomEvent<IButtonToggleSelectEventData>) => void;\n private _slotListener: () => void;\n\n constructor(private _adapter: IButtonToggleGroupAdapter) {\n this._selectListener = evt => this._onSelect(evt);\n this._slotListener = () => this._synchronize();\n }\n\n public initialize(): void {\n if (this._options && this._options.length) {\n this._applyOptions(false);\n }\n\n this._adapter.addListener(BUTTON_TOGGLE_CONSTANTS.events.SELECT, this._selectListener);\n this._adapter.addSlotChangeListener(this._slotListener);\n this._adapter.setVertical(this._vertical);\n this._adapter.setStretch(this._stretch);\n this._adapter.setDense(this._dense);\n this._adapter.setDisabled(this._disabled);\n this._adapter.applyAdjacentSelections(this._vertical);\n this._isInitialized = true;\n }\n\n public disconnect(): void {\n this._isInitialized = false;\n this._adapter.removeListener(BUTTON_TOGGLE_CONSTANTS.events.SELECT, this._selectListener);\n this._adapter.removeSlotChangeListener(this._slotListener);\n }\n\n private _synchronize(): void {\n if (!this._multiple) {\n const selectedValues = this._adapter.getSelectedValues().concat(this._values);\n this.value = selectedValues.length ? selectedValues[selectedValues.length - 1] : null;\n } else {\n const selectedValues = new Set(this._adapter.getSelectedValues().concat(this._values));\n this._applyValue(Array.from(selectedValues));\n }\n }\n\n private _onSelect(evt: CustomEvent<IButtonToggleSelectEventData>): void {\n const target = evt.target as IButtonToggleComponent;\n\n // When in mandatory mode we need to ensure at least one element is selected. If there are no selections\n // then we need to reselect the target toggle because it was deselected\n if (this._mandatory) {\n const values = this._adapter.getSelectedValues();\n if (!values.length) {\n target.selected = true;\n return;\n }\n }\n\n // When not in multiple mode, we deselect all toggles, except for the one that was just changed\n if (!this._multiple) {\n this._adapter.deselect(target);\n }\n\n this._adapter.applyAdjacentSelections(this._vertical);\n this._adapter.emitHostEvent(BUTTON_TOGGLE_GROUP_CONSTANTS.events.CHANGE, this._getValue());\n }\n\n private _getValue(): any {\n const selections = this._adapter.getSelectedValues();\n return this._multiple ? Array.from(new Set(selections)) : selections.slice(0, 1)[0] ?? null;\n }\n\n private _applyValue(value: any): void {\n let values = value instanceof Array ? value : [value];\n if (!this._multiple && values.length > 1) {\n values = values[0];\n }\n this._values = values;\n this._adapter.applyValues(values);\n if (this._multiple) {\n this._adapter.applyAdjacentSelections(this._vertical);\n }\n }\n\n private _applyOptions(init = true): void {\n if (this._options) {\n this._adapter.createOptions(this._options);\n\n if (init) {\n this._adapter.setStretch(this._stretch);\n this._adapter.setDense(this._dense);\n this._adapter.setDisabled(this._disabled);\n this._adapter.applyAdjacentSelections(this._vertical);\n }\n }\n }\n\n public get value(): any {\n if (!this._isInitialized) {\n return this._originalValue;\n }\n return this._getValue();\n }\n public set value(value: any) {\n this._originalValue = value;\n this._applyValue(value);\n }\n\n public get multiple(): boolean {\n return this._multiple;\n }\n public set multiple(value: boolean) {\n if (this._multiple !== value) {\n this._multiple = value;\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MULTIPLE, this._multiple as any);\n }\n }\n\n public get mandatory(): boolean {\n return this._mandatory;\n }\n public set mandatory(value: boolean) {\n if (this._mandatory !== value) {\n this._mandatory = value;\n if (this._mandatory) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY);\n }\n }\n }\n\n public get vertical(): boolean {\n return this._vertical;\n }\n public set vertical(value: boolean) {\n if (this._vertical !== value) {\n this._vertical = value;\n this._adapter.setVertical(this._vertical);\n this._adapter.applyAdjacentSelections(this._vertical);\n if (this._vertical) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL);\n }\n }\n }\n\n public get stretch(): boolean {\n return this._stretch;\n }\n public set stretch(value: boolean) {\n if (this._stretch !== value) {\n this._stretch = value;\n this._adapter.setStretch(this._stretch);\n if (this._stretch) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH);\n }\n }\n }\n\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._adapter.setDense(this._dense);\n if (this._dense) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE);\n }\n }\n }\n\n public get disabled(): boolean {\n return this._disabled;\n }\n public set disabled(value: boolean) {\n if (this._disabled !== value) {\n this._disabled = value;\n this._adapter.setDisabled(this._disabled);\n if (this._disabled) {\n this._adapter.setHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED);\n } else {\n this._adapter.removeHostAttribute(BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED);\n }\n }\n }\n\n public get options(): IButtonToggleOption[] {\n return this._options.map(o => ({ ...o }));\n }\n public set options(value: IButtonToggleOption[]) {\n this._options = value.map(o => ({ ...o }));\n if (this._isInitialized) {\n this._applyOptions();\n }\n }\n}\n", "import { attachShadowTemplate, coerceBoolean, CustomElement, FoundationProperty } from '@tylertech/forge-core';\nimport { BaseComponent, IBaseComponent } from '../../core/base/base-component';\nimport { ButtonToggleComponent } from '../button-toggle/button-toggle';\nimport { ButtonToggleGroupAdapter } from './button-toggle-group-adapter';\nimport { BUTTON_TOGGLE_GROUP_CONSTANTS, IButtonToggleOption } from './button-toggle-group-constants';\nimport { ButtonToggleGroupFoundation } from './button-toggle-group-foundation';\n\nconst template = '<template><div class=\\\"forge-button-toggle-group\\\" role=\\\"group\\\" aria-label=\\\"Button group\\\" part=\\\"root\\\"><slot></slot></div></template>';\nconst styles = '.forge-button-toggle-group{display:-webkit-box;display:flex}.forge-button-toggle-group ::slotted(:not(:last-child)){--forge-button-toggle-border-right-width:0;--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-bottom-left-radius:0;--forge-button-toggle-border-top-right-radius:0;--forge-button-toggle-border-bottom-right-radius:0}.forge-button-toggle-group ::slotted(:first-child){--forge-button-toggle-border-top-left-radius:4px;--forge-button-toggle-border-bottom-left-radius:4px}.forge-button-toggle-group ::slotted(:last-child){--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-bottom-left-radius:0;--forge-button-toggle-border-top-right-radius:4px;--forge-button-toggle-border-bottom-right-radius:4px}.forge-button-toggle-group--vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.forge-button-toggle-group--vertical ::slotted(:not(:last-child)){--forge-button-toggle-border-right-width:1px;--forge-button-toggle-border-bottom-width:0;--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-bottom-left-radius:0;--forge-button-toggle-border-top-right-radius:0;--forge-button-toggle-border-bottom-right-radius:0}.forge-button-toggle-group--vertical ::slotted(:first-child){--forge-button-toggle-border-top-left-radius:4px;--forge-button-toggle-border-top-right-radius:4px}.forge-button-toggle-group--vertical ::slotted(:last-child){--forge-button-toggle-border-top-left-radius:0;--forge-button-toggle-border-top-right-radius:0;--forge-button-toggle-border-bottom-left-radius:4px;--forge-button-toggle-border-bottom-right-radius:4px}.forge-button-toggle-group ::slotted(:only-child){--forge-button-toggle-border-top-left-radius:4px;--forge-button-toggle-border-bottom-left-radius:4px;--forge-button-toggle-border-top-right-radius:4px;--forge-button-toggle-border-bottom-right-radius:4px}.forge-button-toggle-group--stretch{width:100%}:host{display:block}:host([hidden]){display:none}';\n\nexport interface IButtonToggleGroupComponent extends IBaseComponent {\n value: any;\n multiple: boolean;\n stretch: boolean;\n mandatory: boolean;\n vertical: boolean;\n disabled: boolean;\n dense: boolean;\n options: IButtonToggleOption[];\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-button-toggle-group': IButtonToggleGroupComponent;\n }\n}\n\n/**\n * The web component class behind the `<forge-button-toggle-group>` custom element.\n * \n * @tag forge-button-toggle-group\n */\n@CustomElement({\n name: BUTTON_TOGGLE_GROUP_CONSTANTS.elementName,\n dependencies: [ButtonToggleComponent]\n})\nexport class ButtonToggleGroupComponent extends BaseComponent implements IButtonToggleGroupComponent {\n public static get observedAttributes(): string[] {\n return [\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VALUE,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MULTIPLE,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED,\n BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE\n ];\n }\n\n private _foundation: ButtonToggleGroupFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new ButtonToggleGroupFoundation(new ButtonToggleGroupAdapter(this));\n }\n\n public initializedCallback(): 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 BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VALUE:\n this.value = newValue;\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MULTIPLE:\n this.multiple = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.MANDATORY:\n this.mandatory = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.VERTICAL:\n this.vertical = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.STRETCH:\n this.stretch = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DENSE:\n this.dense = coerceBoolean(newValue);\n break;\n case BUTTON_TOGGLE_GROUP_CONSTANTS.attributes.DISABLED:\n this.disabled = coerceBoolean(newValue);\n break;\n }\n }\n\n @FoundationProperty()\n public value: any;\n\n @FoundationProperty()\n public multiple: boolean;\n\n @FoundationProperty()\n public mandatory: boolean;\n\n @FoundationProperty()\n public vertical: boolean;\n\n @FoundationProperty()\n public stretch: boolean;\n\n @FoundationProperty()\n public dense: boolean;\n\n @FoundationProperty()\n public disabled: boolean;\n\n @FoundationProperty()\n public options: IButtonToggleOption[];\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { ButtonToggleGroupComponent } from './button-toggle-group';\n\nexport * from './button-toggle-group-adapter';\nexport * from './button-toggle-group-constants';\nexport * from './button-toggle-group-foundation';\nexport * from './button-toggle-group';\n\nexport function defineButtonToggleGroupComponent(): void {\n defineCustomElement(ButtonToggleGroupComponent);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -323,47 +323,55 @@ var PaginatorFoundation = class {
323
323
  if (!this._hasFirstPage()) {
324
324
  return;
325
325
  }
326
- this.pageIndex = 0;
327
- this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.FIRST_PAGE);
326
+ const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.FIRST_PAGE, { pageIndex: 0 });
327
+ if (canPage) {
328
+ this.pageIndex = 0;
329
+ }
328
330
  }
329
331
  _onPreviousPage(evt) {
330
332
  evt.stopPropagation();
331
333
  if (!this._hasPreviousPage()) {
332
334
  return;
333
335
  }
334
- this.pageIndex--;
335
- this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PREVIOUS_PAGE);
336
+ const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PREVIOUS_PAGE, { pageIndex: this._pageIndex - 1 });
337
+ if (canPage) {
338
+ this.pageIndex--;
339
+ }
336
340
  }
337
341
  _onNextPage(evt) {
338
342
  evt.stopPropagation();
339
343
  if (!this._hasNextPage()) {
340
344
  return;
341
345
  }
342
- this.pageIndex++;
343
- this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.NEXT_PAGE);
346
+ const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.NEXT_PAGE, { pageIndex: this._pageIndex + 1 });
347
+ if (canPage) {
348
+ this.pageIndex++;
349
+ }
344
350
  }
345
351
  _onLastPage(evt) {
346
352
  evt.stopPropagation();
347
353
  if (!this._hasLastPage()) {
348
354
  return;
349
355
  }
350
- this.pageIndex = this._getMaxPages();
351
- this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.LAST_PAGE);
356
+ const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.LAST_PAGE, { pageIndex: this._getMaxPages() });
357
+ if (canPage) {
358
+ this.pageIndex = this._getMaxPages();
359
+ }
352
360
  }
353
361
  _onPageSizeChanged(evt) {
354
362
  evt.stopPropagation();
355
- this.pageIndex = 0;
356
- this.pageSize = Number(evt.target.value);
357
- this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PAGE_SIZE);
358
- }
359
- _emitChangeEvent(type) {
360
- const detail = {
361
- type,
362
- pageSize: this._pageSize,
363
- pageIndex: this._pageIndex,
364
- offset: this._pageIndex * this._pageSize
365
- };
366
- this._adapter.emitHostEvent(PAGINATOR_CONSTANTS.events.CHANGE, detail);
363
+ const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PAGE_SIZE, { pageIndex: 0, pageSize: Number(evt.detail) });
364
+ if (canPage) {
365
+ this.pageIndex = 0;
366
+ this.pageSize = Number(evt.detail);
367
+ } else {
368
+ evt.preventDefault();
369
+ }
370
+ }
371
+ _emitChangeEvent(type, { pageSize = this._pageSize, pageIndex = this._pageIndex } = {}) {
372
+ const offset = pageIndex * pageSize;
373
+ const detail = { type, pageSize, pageIndex, offset };
374
+ return this._adapter.emitHostEvent(PAGINATOR_CONSTANTS.events.CHANGE, detail, true, true);
367
375
  }
368
376
  _getMaxPages() {
369
377
  return Math.ceil(this._total / this._pageSize) - 1;
@@ -717,4 +725,4 @@ export {
717
725
  PaginatorComponent,
718
726
  definePaginatorComponent
719
727
  };
720
- //# sourceMappingURL=chunk.CMXAORYF.js.map
728
+ //# sourceMappingURL=chunk.HAWYW54W.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 const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.FIRST_PAGE, { pageIndex: 0 });\n if (canPage) {\n this.pageIndex = 0;\n }\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 const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PREVIOUS_PAGE, { pageIndex: this._pageIndex - 1 });\n if (canPage) {\n this.pageIndex--;\n }\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 const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.NEXT_PAGE, { pageIndex: this._pageIndex + 1 });\n if (canPage) {\n this.pageIndex++;\n }\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 const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.LAST_PAGE, { pageIndex: this._getMaxPages() });\n if (canPage) {\n this.pageIndex = this._getMaxPages();\n }\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\n const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PAGE_SIZE, { pageIndex: 0, pageSize: Number(evt.detail) });\n if (canPage) {\n this.pageIndex = 0;\n this.pageSize = Number(evt.detail);\n } else {\n evt.preventDefault();\n }\n }\n\n private _emitChangeEvent(type: string, { pageSize = this._pageSize, pageIndex = this._pageIndex } = {}): boolean {\n const offset = pageIndex * pageSize;\n const detail: IPaginatorChangeEvent = { type, pageSize, pageIndex, offset };\n return this._adapter.emitHostEvent(PAGINATOR_CONSTANTS.events.CHANGE, detail, true, true);\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 * @tag forge-paginator\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
+ }
@@ -44,7 +44,7 @@ import {
44
44
  } from "./chunk.QXZZ2MTF.js";
45
45
  import {
46
46
  PaginatorComponent
47
- } from "./chunk.CMXAORYF.js";
47
+ } from "./chunk.HAWYW54W.js";
48
48
  import {
49
49
  SelectDropdownComponent
50
50
  } from "./chunk.ZLF2G3YT.js";
@@ -143,7 +143,7 @@ import {
143
143
  } from "./chunk.GXTNND2M.js";
144
144
  import {
145
145
  ButtonToggleGroupComponent
146
- } from "./chunk.GNAIKBO6.js";
146
+ } from "./chunk.EUPO2VO2.js";
147
147
  import {
148
148
  ButtonToggleComponent
149
149
  } from "./chunk.IUNON3UL.js";
@@ -314,4 +314,4 @@ export {
314
314
  * Copyright (c) 2022 Tyler Technologies, Inc.
315
315
  * License: Apache-2.0
316
316
  */
317
- //# sourceMappingURL=chunk.5H65ASFE.js.map
317
+ //# sourceMappingURL=chunk.ZXMJB7OW.js.map
package/dist/esm/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import {
7
7
  defineComponents
8
- } from "./chunks/chunk.5H65ASFE.js";
8
+ } from "./chunks/chunk.ZXMJB7OW.js";
9
9
  import {
10
10
  TIME_PICKER_CONSTANTS,
11
11
  TimePickerAdapter,
@@ -126,7 +126,7 @@ import {
126
126
  PaginatorComponent,
127
127
  PaginatorFoundation,
128
128
  definePaginatorComponent
129
- } from "./chunks/chunk.CMXAORYF.js";
129
+ } from "./chunks/chunk.HAWYW54W.js";
130
130
  import {
131
131
  SelectComponentDelegate
132
132
  } from "./chunks/chunk.BEAJZPWS.js";
@@ -482,7 +482,7 @@ import {
482
482
  ButtonToggleGroupComponent,
483
483
  ButtonToggleGroupFoundation,
484
484
  defineButtonToggleGroupComponent
485
- } from "./chunks/chunk.GNAIKBO6.js";
485
+ } from "./chunks/chunk.EUPO2VO2.js";
486
486
  import {
487
487
  BUTTON_TOGGLE_CONSTANTS,
488
488
  ButtonToggleAdapter,
@@ -9,7 +9,7 @@ import {
9
9
  PaginatorComponent,
10
10
  PaginatorFoundation,
11
11
  definePaginatorComponent
12
- } from "../chunks/chunk.CMXAORYF.js";
12
+ } from "../chunks/chunk.HAWYW54W.js";
13
13
  import "../chunks/chunk.BEAJZPWS.js";
14
14
  import "../chunks/chunk.ZLF2G3YT.js";
15
15
  import "../chunks/chunk.MBZLA635.js";
@@ -67,8 +67,9 @@ export class ButtonToggleGroupFoundation {
67
67
  this._adapter.emitHostEvent(BUTTON_TOGGLE_GROUP_CONSTANTS.events.CHANGE, this._getValue());
68
68
  }
69
69
  _getValue() {
70
+ var _a;
70
71
  const selections = this._adapter.getSelectedValues();
71
- return this._multiple ? Array.from(new Set(selections)) : selections.slice(0, 1)[0] || null;
72
+ return this._multiple ? Array.from(new Set(selections)) : (_a = selections.slice(0, 1)[0]) !== null && _a !== void 0 ? _a : null;
72
73
  }
73
74
  _applyValue(value) {
74
75
  let values = value instanceof Array ? value : [value];
@@ -228,8 +228,10 @@ export class PaginatorFoundation {
228
228
  if (!this._hasFirstPage()) {
229
229
  return;
230
230
  }
231
- this.pageIndex = 0;
232
- this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.FIRST_PAGE);
231
+ const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.FIRST_PAGE, { pageIndex: 0 });
232
+ if (canPage) {
233
+ this.pageIndex = 0;
234
+ }
233
235
  }
234
236
  /**
235
237
  * Handles clicking the previous page button.
@@ -240,8 +242,10 @@ export class PaginatorFoundation {
240
242
  if (!this._hasPreviousPage()) {
241
243
  return;
242
244
  }
243
- this.pageIndex--;
244
- this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PREVIOUS_PAGE);
245
+ const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PREVIOUS_PAGE, { pageIndex: this._pageIndex - 1 });
246
+ if (canPage) {
247
+ this.pageIndex--;
248
+ }
245
249
  }
246
250
  /**
247
251
  * Handles clicking the next page button.
@@ -252,8 +256,10 @@ export class PaginatorFoundation {
252
256
  if (!this._hasNextPage()) {
253
257
  return;
254
258
  }
255
- this.pageIndex++;
256
- this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.NEXT_PAGE);
259
+ const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.NEXT_PAGE, { pageIndex: this._pageIndex + 1 });
260
+ if (canPage) {
261
+ this.pageIndex++;
262
+ }
257
263
  }
258
264
  /**
259
265
  * Handles clicking the last page button.
@@ -264,8 +270,10 @@ export class PaginatorFoundation {
264
270
  if (!this._hasLastPage()) {
265
271
  return;
266
272
  }
267
- this.pageIndex = this._getMaxPages();
268
- this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.LAST_PAGE);
273
+ const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.LAST_PAGE, { pageIndex: this._getMaxPages() });
274
+ if (canPage) {
275
+ this.pageIndex = this._getMaxPages();
276
+ }
269
277
  }
270
278
  /**
271
279
  * Handles selecting a new item in the page size options.
@@ -273,18 +281,19 @@ export class PaginatorFoundation {
273
281
  */
274
282
  _onPageSizeChanged(evt) {
275
283
  evt.stopPropagation();
276
- this.pageIndex = 0;
277
- this.pageSize = Number(evt.target.value);
278
- this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PAGE_SIZE);
279
- }
280
- _emitChangeEvent(type) {
281
- const detail = {
282
- type,
283
- pageSize: this._pageSize,
284
- pageIndex: this._pageIndex,
285
- offset: this._pageIndex * this._pageSize
286
- };
287
- this._adapter.emitHostEvent(PAGINATOR_CONSTANTS.events.CHANGE, detail);
284
+ const canPage = this._emitChangeEvent(PAGINATOR_CONSTANTS.strings.PAGE_SIZE, { pageIndex: 0, pageSize: Number(evt.detail) });
285
+ if (canPage) {
286
+ this.pageIndex = 0;
287
+ this.pageSize = Number(evt.detail);
288
+ }
289
+ else {
290
+ evt.preventDefault();
291
+ }
292
+ }
293
+ _emitChangeEvent(type, { pageSize = this._pageSize, pageIndex = this._pageIndex } = {}) {
294
+ const offset = pageIndex * pageSize;
295
+ const detail = { type, pageSize, pageIndex, offset };
296
+ return this._adapter.emitHostEvent(PAGINATOR_CONSTANTS.events.CHANGE, detail, true, true);
288
297
  }
289
298
  /**
290
299
  * Returns the max number of pages based on our current parameters.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tylertech/forge",
3
3
  "description": "Forge Web Components library",
4
- "version": "2.6.0",
4
+ "version": "2.7.0",
5
5
  "author": "Tyler Technologies, Inc.",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
@@ -1,7 +0,0 @@
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 * @tag forge-paginator\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
- }