@tylertech/forge 2.6.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +83 -5
- package/dist/esm/button-toggle/button-toggle-group/index.js +1 -1
- package/dist/esm/button-toggle/index.js +1 -1
- package/dist/esm/chunks/{chunk.JUXKYUD4.js → chunk.2NMHSTAO.js} +51 -28
- package/dist/esm/chunks/{chunk.JUXKYUD4.js.map → chunk.2NMHSTAO.js.map} +2 -2
- package/dist/esm/chunks/{chunk.GL72QT42.js → chunk.35BJJH5E.js} +2 -2
- package/dist/esm/chunks/{chunk.GL72QT42.js.map → chunk.35BJJH5E.js.map} +1 -1
- package/dist/esm/chunks/{chunk.L344BPCW.js → chunk.BLZJIYMG.js} +2 -2
- package/dist/esm/chunks/{chunk.L344BPCW.js.map → chunk.BLZJIYMG.js.map} +0 -0
- package/dist/esm/chunks/{chunk.65GHMPX2.js → chunk.ELAJS33V.js} +6 -6
- package/dist/esm/chunks/chunk.ELAJS33V.js.map +7 -0
- package/dist/esm/chunks/{chunk.GNAIKBO6.js → chunk.EUPO2VO2.js} +3 -2
- package/dist/esm/chunks/{chunk.GNAIKBO6.js.map → chunk.EUPO2VO2.js.map} +2 -2
- package/dist/esm/chunks/{chunk.CMXAORYF.js → chunk.HAWYW54W.js} +29 -21
- package/dist/esm/chunks/chunk.HAWYW54W.js.map +7 -0
- package/dist/esm/chunks/{chunk.GOWHXADJ.js → chunk.K7OLG7CS.js} +22 -14
- package/dist/esm/chunks/chunk.K7OLG7CS.js.map +7 -0
- package/dist/esm/chunks/{chunk.XHMNHBZD.js → chunk.PNKLV3BK.js} +2 -2
- package/dist/esm/chunks/{chunk.XHMNHBZD.js.map → chunk.PNKLV3BK.js.map} +1 -1
- package/dist/esm/chunks/{chunk.5H65ASFE.js → chunk.UFMUXBT4.js} +10 -10
- package/dist/esm/chunks/{chunk.5H65ASFE.js.map → chunk.UFMUXBT4.js.map} +0 -0
- package/dist/esm/chunks/{chunk.C73AZRT4.js → chunk.XE7ZMJBZ.js} +5 -3
- package/dist/esm/chunks/{chunk.C73AZRT4.js.map → chunk.XE7ZMJBZ.js.map} +2 -2
- package/dist/esm/chunks/{chunk.MF3IZXQG.js → chunk.ZSHQMR4O.js} +2 -2
- package/dist/esm/chunks/{chunk.MF3IZXQG.js.map → chunk.ZSHQMR4O.js.map} +0 -0
- package/dist/esm/drawer/base/index.js +1 -1
- package/dist/esm/drawer/drawer/index.js +2 -2
- package/dist/esm/drawer/index.js +4 -4
- package/dist/esm/drawer/mini-drawer/index.js +2 -2
- package/dist/esm/drawer/modal-drawer/index.js +2 -2
- package/dist/esm/file-picker/index.js +1 -1
- package/dist/esm/index.js +11 -11
- package/dist/esm/inline-message/index.js +1 -1
- package/dist/esm/paginator/index.js +1 -1
- package/dist/esm/table/index.js +1 -1
- package/dist/esm/time-picker/index.js +1 -1
- package/esm/button-toggle/button-toggle-group/button-toggle-group-foundation.js +2 -1
- package/esm/drawer/base/base-drawer-foundation.d.ts +4 -2
- package/esm/drawer/base/base-drawer-foundation.js +22 -14
- package/esm/drawer/modal-drawer/modal-drawer-foundation.d.ts +2 -2
- package/esm/drawer/modal-drawer/modal-drawer-foundation.js +4 -4
- package/esm/file-picker/file-picker.js +1 -1
- package/esm/inline-message/inline-message.js +1 -1
- package/esm/paginator/paginator-foundation.js +29 -20
- package/esm/table/table.js +3 -1
- package/esm/time-picker/time-picker-constants.d.ts +1 -0
- package/esm/time-picker/time-picker-constants.js +1 -0
- package/esm/time-picker/time-picker-foundation.d.ts +4 -0
- package/esm/time-picker/time-picker-foundation.js +44 -29
- package/esm/time-picker/time-picker.d.ts +3 -0
- package/esm/time-picker/time-picker.js +7 -0
- package/package.json +1 -1
- package/styles/file-picker/_mixins.scss +3 -1
- package/styles/inline-message/inline-message.scss +4 -0
- package/dist/esm/chunks/chunk.65GHMPX2.js.map +0 -7
- package/dist/esm/chunks/chunk.CMXAORYF.js.map +0 -7
- package/dist/esm/chunks/chunk.GOWHXADJ.js.map +0 -7
|
@@ -26,6 +26,7 @@ export class TimePickerFoundation {
|
|
|
26
26
|
this._allowSeconds = false;
|
|
27
27
|
this._allowInvalidTime = false;
|
|
28
28
|
this._showNow = false;
|
|
29
|
+
this._showHourOptions = true;
|
|
29
30
|
this._customOptions = [];
|
|
30
31
|
this._disabled = false;
|
|
31
32
|
this._popupClasses = [];
|
|
@@ -427,35 +428,37 @@ export class TimePickerFoundation {
|
|
|
427
428
|
return value;
|
|
428
429
|
}
|
|
429
430
|
_openDropdown() {
|
|
430
|
-
|
|
431
|
+
const options = this._generateTimeOptions();
|
|
432
|
+
if (!this.allowDropdown || !options.length) {
|
|
431
433
|
return;
|
|
432
434
|
}
|
|
433
435
|
this._formatInputValue();
|
|
434
436
|
this._open = true;
|
|
435
437
|
this._adapter.setHostAttribute(TIME_PICKER_CONSTANTS.attributes.OPEN);
|
|
436
|
-
const options = this._generateTimeOptions();
|
|
437
438
|
const selectableOptions = options.filter(o => !o.divider && !o.disabled);
|
|
438
439
|
let selectedValues = [];
|
|
439
440
|
let activeStartIndex;
|
|
440
441
|
// Find closest match in list of time options and activate/select it
|
|
441
|
-
if (
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
442
|
+
if (options.length) {
|
|
443
|
+
if (this._value !== null) {
|
|
444
|
+
const optionIndex = this._findClosestOptionIndex(this._value, selectableOptions);
|
|
445
|
+
if (optionIndex >= 0) {
|
|
446
|
+
const isExactMatch = selectableOptions[optionIndex].value.time === this._value;
|
|
447
|
+
if (isExactMatch) {
|
|
448
|
+
selectedValues = [selectableOptions[optionIndex].value];
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
activeStartIndex = optionIndex;
|
|
452
|
+
}
|
|
447
453
|
}
|
|
448
|
-
|
|
454
|
+
}
|
|
455
|
+
else if (typeof this._startTime === 'number') {
|
|
456
|
+
const optionIndex = this._findClosestOptionIndex(this._startTime, selectableOptions);
|
|
457
|
+
if (optionIndex >= 0 && optionIndex < selectableOptions.length) {
|
|
449
458
|
activeStartIndex = optionIndex;
|
|
450
459
|
}
|
|
451
460
|
}
|
|
452
461
|
}
|
|
453
|
-
else if (typeof this._startTime === 'number') {
|
|
454
|
-
const optionIndex = this._findClosestOptionIndex(this._startTime, selectableOptions);
|
|
455
|
-
if (optionIndex >= 0 && optionIndex < selectableOptions.length) {
|
|
456
|
-
activeStartIndex = optionIndex;
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
462
|
const config = {
|
|
460
463
|
id: `forge-time-picker-${this._identifier}`,
|
|
461
464
|
selectedValues,
|
|
@@ -504,20 +507,22 @@ export class TimePickerFoundation {
|
|
|
504
507
|
const minuteStep = this._step;
|
|
505
508
|
const times = [];
|
|
506
509
|
let leadingOptions = [];
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
+
if (this._showHourOptions) {
|
|
511
|
+
for (let totalMinutes = minMinutes; totalMinutes <= maxMinutes; totalMinutes += minuteStep) {
|
|
512
|
+
if (totalMinutes === TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MINUTES) {
|
|
513
|
+
break;
|
|
514
|
+
}
|
|
515
|
+
const millis = minutesToMillis(totalMinutes);
|
|
516
|
+
const disabled = this._restrictedTimes.includes(millis);
|
|
517
|
+
const label = millisToTimeString(millis, this._use24HourTime, false) || '';
|
|
518
|
+
const value = { time: millis };
|
|
519
|
+
times.push({ label, value, disabled });
|
|
520
|
+
}
|
|
521
|
+
// Add divider between AM/PM times
|
|
522
|
+
const firstPmIndex = times.findIndex(t => t.value.time / 1000 / 60 >= 720);
|
|
523
|
+
if (firstPmIndex >= 0 && firstPmIndex < times.length - 1) {
|
|
524
|
+
times.splice(firstPmIndex, 0, { label: '', value: null, divider: true });
|
|
510
525
|
}
|
|
511
|
-
const millis = minutesToMillis(totalMinutes);
|
|
512
|
-
const disabled = this._restrictedTimes.includes(millis);
|
|
513
|
-
const label = millisToTimeString(millis, this._use24HourTime, false) || '';
|
|
514
|
-
const value = { time: millis };
|
|
515
|
-
times.push({ label, value, disabled });
|
|
516
|
-
}
|
|
517
|
-
// Add divider between AM/PM times
|
|
518
|
-
const firstPmIndex = times.findIndex(t => t.value.time / 1000 / 60 >= 720);
|
|
519
|
-
if (firstPmIndex >= 0 && firstPmIndex < times.length - 1) {
|
|
520
|
-
times.splice(firstPmIndex, 0, { label: '', value: null, divider: true });
|
|
521
526
|
}
|
|
522
527
|
// Check if we need to prepend a "Now" option
|
|
523
528
|
if (this._showNow) {
|
|
@@ -534,7 +539,9 @@ export class TimePickerFoundation {
|
|
|
534
539
|
}
|
|
535
540
|
// Append all leading options
|
|
536
541
|
if (leadingOptions.length) {
|
|
537
|
-
times.
|
|
542
|
+
if (times.length) {
|
|
543
|
+
times.splice(0, 0, { label: '', value: null, divider: true });
|
|
544
|
+
}
|
|
538
545
|
leadingOptions.forEach((o, index) => times.splice(index, 0, o));
|
|
539
546
|
}
|
|
540
547
|
return times;
|
|
@@ -747,6 +754,14 @@ export class TimePickerFoundation {
|
|
|
747
754
|
this._showNow = value;
|
|
748
755
|
}
|
|
749
756
|
}
|
|
757
|
+
get showHourOptions() {
|
|
758
|
+
return this._showHourOptions;
|
|
759
|
+
}
|
|
760
|
+
set showHourOptions(value) {
|
|
761
|
+
if (this._showHourOptions !== value) {
|
|
762
|
+
this._showHourOptions = value;
|
|
763
|
+
}
|
|
764
|
+
}
|
|
750
765
|
get customOptions() {
|
|
751
766
|
return this._customOptions;
|
|
752
767
|
}
|
|
@@ -20,6 +20,7 @@ export interface ITimePickerComponent extends IBaseComponent {
|
|
|
20
20
|
step: number;
|
|
21
21
|
allowInput: boolean;
|
|
22
22
|
showNow: boolean;
|
|
23
|
+
showHourOptions: boolean;
|
|
23
24
|
customOptions: ITimePickerOption[];
|
|
24
25
|
validationCallback: TimePickerValidationCallback;
|
|
25
26
|
parseCallback: TimePickerParseCallback;
|
|
@@ -68,6 +69,8 @@ export declare class TimePickerComponent extends BaseComponent implements ITimeP
|
|
|
68
69
|
step: number;
|
|
69
70
|
allowInput: boolean;
|
|
70
71
|
showNow: boolean;
|
|
72
|
+
/** Whether or not to display hour options in dropdown */
|
|
73
|
+
showHourOptions: boolean;
|
|
71
74
|
customOptions: ITimePickerOption[];
|
|
72
75
|
validationCallback: TimePickerValidationCallback;
|
|
73
76
|
parseCallback: TimePickerParseCallback;
|
|
@@ -45,6 +45,7 @@ let TimePickerComponent = class TimePickerComponent extends BaseComponent {
|
|
|
45
45
|
TIME_PICKER_CONSTANTS.attributes.STEP,
|
|
46
46
|
TIME_PICKER_CONSTANTS.attributes.ALLOW_INPUT,
|
|
47
47
|
TIME_PICKER_CONSTANTS.attributes.SHOW_NOW,
|
|
48
|
+
TIME_PICKER_CONSTANTS.attributes.SHOW_HOUR_OPTIONS,
|
|
48
49
|
TIME_PICKER_CONSTANTS.attributes.DISABLED,
|
|
49
50
|
TIME_PICKER_CONSTANTS.attributes.POPUP_CLASSES,
|
|
50
51
|
TIME_PICKER_CONSTANTS.attributes.ALLOW_DROPDOWN
|
|
@@ -87,6 +88,9 @@ let TimePickerComponent = class TimePickerComponent extends BaseComponent {
|
|
|
87
88
|
case TIME_PICKER_CONSTANTS.attributes.SHOW_NOW:
|
|
88
89
|
this.showNow = coerceBoolean(newValue);
|
|
89
90
|
break;
|
|
91
|
+
case TIME_PICKER_CONSTANTS.attributes.SHOW_HOUR_OPTIONS:
|
|
92
|
+
this.showHourOptions = coerceBoolean(newValue);
|
|
93
|
+
break;
|
|
90
94
|
case TIME_PICKER_CONSTANTS.attributes.MIN:
|
|
91
95
|
this.min = newValue;
|
|
92
96
|
break;
|
|
@@ -156,6 +160,9 @@ __decorate([
|
|
|
156
160
|
__decorate([
|
|
157
161
|
FoundationProperty()
|
|
158
162
|
], TimePickerComponent.prototype, "showNow", void 0);
|
|
163
|
+
__decorate([
|
|
164
|
+
FoundationProperty()
|
|
165
|
+
], TimePickerComponent.prototype, "showHourOptions", void 0);
|
|
159
166
|
__decorate([
|
|
160
167
|
FoundationProperty()
|
|
161
168
|
], TimePickerComponent.prototype, "customOptions", void 0);
|
package/package.json
CHANGED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/drawer/modal-drawer/modal-drawer-adapter.ts", "../../src/drawer/modal-drawer/modal-drawer-constants.ts", "../../src/drawer/modal-drawer/modal-drawer-foundation.ts", "../../src/drawer/modal-drawer/modal-drawer.ts", "../../src/drawer/modal-drawer/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { getShadowElement, toggleClass } from '@tylertech/forge-core';\nimport { BACKDROP_CONSTANTS, IBackdropComponent } from '../../backdrop';\nimport { BaseDrawerAdapter, IBaseDrawerAdapter } from '../base';\nimport { IModalDrawerComponent } from './modal-drawer';\n\nexport interface IModalDrawerAdapter extends IBaseDrawerAdapter {\n setBackdropCloseListener(listener: (evt: Event) => void): void;\n setBackdropVisibility(visible: boolean): Promise<void>;\n toggleBackdropClass(hasClass: boolean, className: string): void;\n}\n\nexport class ModalDrawerAdapter extends BaseDrawerAdapter implements IModalDrawerAdapter {\n private _backdropElement: IBackdropComponent;\n\n constructor(protected _component: IModalDrawerComponent) {\n super(_component);\n this._backdropElement = getShadowElement(this._component, BACKDROP_CONSTANTS.elementName) as IBackdropComponent;\n }\n\n public setBackdropCloseListener(listener: (evt: Event) => void): void {\n this._backdropElement.addEventListener(BACKDROP_CONSTANTS.events.BACKDROP_CLICK, listener);\n }\n\n public setBackdropVisibility(visible: boolean): Promise<void> {\n if (this._backdropElement.hasAttribute('hidden')) {\n this._backdropElement.removeAttribute('hidden');\n }\n if (!this._backdropElement.fadeIn || !this._backdropElement.fadeOut) {\n return Promise.resolve();\n }\n return visible ? this._backdropElement.fadeIn() : this._backdropElement.fadeOut();\n }\n\n public toggleBackdropClass(hasClass: boolean, className: string): void {\n toggleClass(this._backdropElement, hasClass, className);\n }\n}\n", "import { COMPONENT_NAME_PREFIX } from '../../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}modal-drawer`;\n\nconst classes = {\n DISPLAY_NONE: 'forge-drawer--display-none',\n SCRIM_CLOSED: 'forge-drawer__scrim--closed'\n};\n\nconst events = {\n CLOSE: `${elementName}-close`\n};\n\nexport const MODAL_DRAWER_CONSTANTS = {\n elementName,\n classes,\n events\n};\n", "import { Platform } from '@tylertech/forge-core';\nimport { BaseDrawerFoundation, IBaseDrawerFoundation } from '../base';\n\nimport { IModalDrawerAdapter } from './modal-drawer-adapter';\nimport { MODAL_DRAWER_CONSTANTS } from './modal-drawer-constants';\n\nexport interface IModalDrawerFoundation extends IBaseDrawerFoundation {}\n\nexport class ModalDrawerFoundation extends BaseDrawerFoundation implements IModalDrawerFoundation {\n protected _open = false;\n private _backdropClickListener: (evt: Event) => void;\n private _isInitialized = false;\n\n constructor(protected _adapter: IModalDrawerAdapter) {\n super(_adapter);\n this._backdropClickListener = evt => this._onBackdropClick(evt);\n }\n\n public connect(): void {\n super.connect();\n this._adapter.setBackdropCloseListener(this._backdropClickListener);\n this._setBackdrop(this._open);\n this._isInitialized = true;\n }\n\n public disconnect(): void {\n this._isInitialized = false;\n }\n\n protected _setDrawerOpenState(): void {\n super._setDrawerOpenState();\n this._setBackdrop(true);\n }\n\n protected _setDrawerClosedState(): void {\n super._setDrawerClosedState();\n this._setBackdrop(false);\n }\n\n private _onBackdropClick(evt: Event): void {\n const canClose = this._adapter.emitHostEvent(MODAL_DRAWER_CONSTANTS.events.CLOSE, undefined, true, true);\n if (canClose) {\n this.open = false;\n }\n }\n\n private _setBackdrop(open: boolean): void {\n if (open) {\n this._adapter.toggleBackdropClass(false, MODAL_DRAWER_CONSTANTS.classes.SCRIM_CLOSED);\n this._adapter.setBackdropVisibility(true);\n } else if (this._isInitialized) {\n this._adapter.setBackdropVisibility(false).then(() => {\n if (!this._open) {\n this._adapter.toggleBackdropClass(true, MODAL_DRAWER_CONSTANTS.classes.SCRIM_CLOSED);\n }\n });\n }\n }\n}\n", "import { attachShadowTemplate, CustomElement } from '@tylertech/forge-core';\nimport { BackdropComponent } from '../../backdrop';\nimport { BaseDrawerComponent, IBaseDrawerComponent } from '../base';\nimport { ModalDrawerAdapter } from './modal-drawer-adapter';\nimport { MODAL_DRAWER_CONSTANTS } from './modal-drawer-constants';\nimport { ModalDrawerFoundation } from './modal-drawer-foundation';\n\nconst template = '<template><forge-backdrop class=\\\"forge-drawer__scrim\\\" hidden part=\\\"scrim\\\"></forge-backdrop><div class=\\\"forge-drawer forge-drawer--modal\\\" part=\\\"root\\\"><slot name=\\\"header\\\"></slot><div class=\\\"forge-drawer__content\\\" part=\\\"content\\\"><slot></slot></div><slot name=\\\"footer\\\"></slot></div></template>';\nconst styles = '.forge-drawer{width:256px;width:var(--forge-drawer-width,256px);border-color:#e0e0e0;border-color:var(--forge-theme-border-color,#e0e0e0);background-color:#fff;background-color:var(--mdc-theme-surface,#fff);height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr auto;overflow:hidden;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-timing-function:cubic-bezier(0.4,0,0.2,1)}.forge-drawer ::slotted([slot=header]){grid-row:1}.forge-drawer ::slotted([slot=footer]){grid-row:3}.forge-drawer__content{overflow-x:auto;-webkit-overflow-scrolling:\\\"touch\\\";display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;grid-row:2}.forge-drawer__content::-webkit-scrollbar{width:16px;width:var(--forge-scrollbar-width,16px);height:16px;height:var(--forge-scrollbar-height,16px)}.forge-drawer__content::-webkit-scrollbar-corner{background-color:#f0f0f0;background-color:var(--forge-theme-scrollbar-track,#f0f0f0)}.forge-drawer__content::-webkit-scrollbar-track{background-color:#f0f0f0;background-color:var(--forge-theme-scrollbar-track,#f0f0f0)}.forge-drawer__content::-webkit-scrollbar-track:hover{background-color:#ececec;background-color:var(--forge-theme-scrollbar-track-hover,#ececec)}.forge-drawer__content::-webkit-scrollbar-thumb{background-color:#bdbdbd;background-color:var(--forge-theme-scrollbar-thumb,#bdbdbd);height:32px;height:var(--forge-scrollbar-min-height,32px);width:32px;width:var(--forge-scrollbar-min-width,32px);border-radius:10px;border-radius:var(--forge-scrollbar-border-radius,10px);border-width:3px;border-width:var(--forge-scrollbar-border-width,3px);border-style:solid;border-color:transparent;background-clip:content-box}.forge-drawer__content::-webkit-scrollbar-thumb:hover{background-color:#9e9e9e;background-color:var(--forge-theme-scrollbar-thumb-hover,#9e9e9e)}.forge-drawer--left{border-right-width:1px;border-right-style:solid}.forge-drawer--right{border-left-width:1px;border-left-style:solid}.forge-drawer--right.forge-drawer--closing{-webkit-transform:translateX(100%);transform:translateX(100%);right:0;left:auto;z-index:1;z-index:var(--forge-z-index-surface,1);position:absolute;top:0;right:0;-webkit-transition-duration:.2s;transition-duration:.2s}.forge-drawer--right.forge-drawer--closed{-webkit-transform:translateX(100%);transform:translateX(100%);right:0;left:auto;width:0;border:none}.forge-drawer--closing{-webkit-transform:translateX(-100%);transform:translateX(-100%);left:0;z-index:1;z-index:var(--forge-z-index-surface,1);position:absolute;top:0;right:0;-webkit-transition-duration:.2s;transition-duration:.2s}.forge-drawer--closed{-webkit-transform:translateX(-100%);transform:translateX(-100%);left:0;width:0;border:none}.forge-drawer--no-transition{-webkit-transition:none!important;transition:none!important}.forge-drawer--modal{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);z-index:8;z-index:var(--forge-z-index-dialog,8);position:absolute;top:0;max-width:80%}.forge-drawer--modal+.mdc-drawer-scrim{background-color:rgba(0,0,0,.32)}.forge-drawer--modal.forge-drawer--closed,.forge-drawer--modal.forge-drawer--closing{-webkit-box-shadow:none;box-shadow:none}.forge-drawer--modal.forge-drawer--closing.forge-drawer--right{-webkit-transform:translateX(100%);transform:translateX(100%)}.forge-drawer__scrim{z-index:8;z-index:var(--forge-z-index-dialog,8)}.forge-drawer__scrim--closed{display:none}.forge-drawer.forge-drawer--right{right:0}.forge-drawer--display-none{display:none!important}';\n\nexport interface IModalDrawerComponent extends IBaseDrawerComponent {}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-modal-drawer': IModalDrawerComponent;\n }\n\n interface HTMLElementEventMap {\n 'forge-modal-drawer-close': CustomEvent<void>;\n }\n}\n\n/**\n * The web component class behind the `<forge-modal-drawer>` custom element.\n * \n * @tag forge-modal-drawer\n */\n@CustomElement({\n name: MODAL_DRAWER_CONSTANTS.elementName,\n dependencies: [BackdropComponent]\n})\nexport class ModalDrawerComponent extends BaseDrawerComponent<ModalDrawerFoundation> implements IModalDrawerComponent {\n protected _foundation: ModalDrawerFoundation;\n\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new ModalDrawerFoundation(new ModalDrawerAdapter(this));\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\nimport { ModalDrawerComponent } from './modal-drawer';\n\nexport * from './modal-drawer-adapter';\nexport * from './modal-drawer-constants';\nexport * from './modal-drawer-foundation';\nexport * from './modal-drawer';\n\nexport function defineModalDrawerComponent(): void {\n defineCustomElement(ModalDrawerComponent);\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -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
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/drawer/base/base-drawer-constants.ts", "../../src/drawer/base/base-drawer-adapter.ts", "../../src/drawer/base/base-drawer-foundation.ts", "../../src/drawer/base/base-drawer.ts"],
|
|
4
|
-
"sourcesContent": ["const attributes = {\n OPEN: 'open',\n DIRECTION: 'direction'\n};\n\nconst classes = {\n DRAWER: 'forge-drawer',\n LEFT: 'forge-drawer--left',\n RIGHT: 'forge-drawer--right',\n CLOSING: 'forge-drawer--closing',\n CLOSED: 'forge-drawer--closed',\n NO_TRANSITION: 'forge-drawer--no-transition'\n};\n\nconst selectors = {\n DRAWER: `.${classes.DRAWER}`\n};\n\nconst events = {\n AFTER_OPEN: `forge-drawer-after-open`,\n AFTER_CLOSE: `forge-drawer-after-close`\n};\n\nexport const BASE_DRAWER_CONSTANTS = {\n attributes,\n classes,\n selectors,\n events\n};\n\nexport type DrawerDirection = 'left' | 'right';\n", "import { addClass, getShadowElement, removeClass } from '@tylertech/forge-core';\nimport { proxyShadowScrollEvent } from '../../core/utils/event-utils';\nimport { BaseAdapter, IBaseAdapter } from '../../core/base/base-adapter';\nimport { IBaseDrawerComponent } from './base-drawer';\nimport { DrawerDirection, BASE_DRAWER_CONSTANTS } from './base-drawer-constants';\n\nexport interface IBaseDrawerAdapter extends IBaseAdapter {\n proxyScrollEvent(): void;\n tryUnproxyScrollEvent(): void;\n setDirection(direction: DrawerDirection): void;\n removeDrawerClass(className: string | string[]): void;\n setDrawerClass(className: string | string[]): void;\n listenTransitionComplete(listener: () => void): void;\n}\n\nexport class BaseDrawerAdapter extends BaseAdapter<IBaseDrawerComponent> implements IBaseDrawerAdapter {\n protected _drawerElement: HTMLElement;\n private _activeTransitionListener: ((evt: TransitionEvent) => void) | undefined;\n private _unproxyScrollEventCb: (() => void) | undefined;\n\n constructor(protected _component: IBaseDrawerComponent) {\n super(_component);\n this._drawerElement = getShadowElement(this._component, BASE_DRAWER_CONSTANTS.selectors.DRAWER);\n }\n\n public proxyScrollEvent(): void {\n // We proxy the scroll event because our internal scroll container does not dispatch this event outside of the shadow root to any listeners.\n // This is a problem because if we have any components that need to react to the scroll event, such as our popup elements, they will not be\n // notified. This will ensure we always proxy this event out from the host. \n this.tryUnproxyScrollEvent();\n this._unproxyScrollEventCb = proxyShadowScrollEvent(this._component.shadowRoot as ShadowRoot, this._component);\n }\n\n public tryUnproxyScrollEvent(): void {\n if (this._unproxyScrollEventCb) {\n this._unproxyScrollEventCb();\n }\n }\n\n public setDirection(direction: DrawerDirection): void {\n switch (direction) {\n case 'left':\n this._drawerElement.classList.remove(BASE_DRAWER_CONSTANTS.classes.RIGHT);\n this._drawerElement.classList.add(BASE_DRAWER_CONSTANTS.classes.LEFT);\n break;\n case 'right':\n this._drawerElement.classList.remove(BASE_DRAWER_CONSTANTS.classes.LEFT);\n this._drawerElement.classList.add(BASE_DRAWER_CONSTANTS.classes.RIGHT);\n break;\n }\n }\n\n public removeDrawerClass(className: string | string[]): void {\n removeClass(className, this._drawerElement);\n }\n\n public setDrawerClass(className: string | string[]): void {\n addClass(className, this._drawerElement);\n }\n\n public listenTransitionComplete(listener: () => void): void {\n if (this._activeTransitionListener) {\n this._drawerElement.removeEventListener('transitionend', this._activeTransitionListener);\n }\n this._activeTransitionListener = (evt: TransitionEvent) => {\n if (evt.propertyName === 'transform') {\n if (this._activeTransitionListener) {\n this._drawerElement.removeEventListener('transitionend', this._activeTransitionListener);\n this._activeTransitionListener = undefined;\n }\n listener();\n }\n };\n this._drawerElement.addEventListener('transitionend', this._activeTransitionListener);\n }\n}\n", "import { ICustomElementFoundation, isDefined } from '@tylertech/forge-core';\nimport { IBaseDrawerAdapter } from './base-drawer-adapter';\nimport { DrawerDirection, BASE_DRAWER_CONSTANTS } from './base-drawer-constants';\n\nexport interface IBaseDrawerFoundation extends ICustomElementFoundation {\n direction: DrawerDirection;\n}\n\nexport class BaseDrawerFoundation implements IBaseDrawerFoundation {\n protected _open = true;\n protected _direction: DrawerDirection = 'left';\n private _hasInitialized = false;\n private _openAnimationListener: () => void;\n private _closeAnimationListener: () => void;\n\n constructor(protected _adapter: IBaseDrawerAdapter) {\n this._openAnimationListener = () => this._onOpenComplete();\n this._closeAnimationListener = () => this._onCloseComplete();\n }\n\n public connect(): void {\n this._applyOpen();\n this._applyDirection();\n this._adapter.proxyScrollEvent();\n this._hasInitialized = true;\n }\n\n public disconnect(): void {\n this._adapter.tryUnproxyScrollEvent();\n this._hasInitialized = false;\n }\n\n private _applyDirection(): void {\n this._adapter.setDirection(this._direction);\n this._adapter.setHostAttribute(BASE_DRAWER_CONSTANTS.attributes.DIRECTION, isDefined(this._direction) ? this._direction.toString() : '');\n }\n\n private _onOpenComplete(): void {\n if (!this._open) {\n return;\n }\n this._adapter.emitHostEvent(BASE_DRAWER_CONSTANTS.events.AFTER_OPEN);\n }\n \n private _onCloseComplete(): void {\n if (this._open) {\n return;\n }\n this._adapter.removeDrawerClass(BASE_DRAWER_CONSTANTS.classes.CLOSING);\n this._adapter.removeDrawerClass(BASE_DRAWER_CONSTANTS.classes.NO_TRANSITION);\n this._adapter.setDrawerClass(BASE_DRAWER_CONSTANTS.classes.CLOSED);\n this._adapter.emitHostEvent(BASE_DRAWER_CONSTANTS.events.AFTER_CLOSE);\n }\n\n protected _applyOpen(): void {\n if (this._open) {\n this._setDrawerOpenState();\n } else {\n this._setDrawerClosedState();\n }\n \n if (this._open) {\n this._adapter.setHostAttribute(BASE_DRAWER_CONSTANTS.attributes.OPEN);\n } else {\n this._adapter.removeHostAttribute(BASE_DRAWER_CONSTANTS.attributes.OPEN);\n }\n }\n\n protected _setDrawerOpenState(): void {\n this._adapter.listenTransitionComplete(this._openAnimationListener);\n this._adapter.removeDrawerClass(BASE_DRAWER_CONSTANTS.classes.CLOSED);\n this._adapter.removeDrawerClass(BASE_DRAWER_CONSTANTS.classes.CLOSING);\n }\n\n protected _setDrawerClosedState(): void {\n this._adapter.listenTransitionComplete(this._closeAnimationListener);\n this._adapter.setDrawerClass(BASE_DRAWER_CONSTANTS.classes.CLOSING);\n }\n\n public get open(): boolean {\n return this._open;\n }\n public set open(value: boolean) {\n if (this._open !== value) {\n this._open = value;\n if (this._hasInitialized) {\n this._applyOpen();\n }\n }\n }\n\n public get direction(): DrawerDirection {\n return this._direction;\n }\n public set direction(value: DrawerDirection) {\n if (this._direction !== value) {\n this._direction = value;\n if (this._hasInitialized) {\n this._applyDirection();\n }\n }\n }\n}\n", "import { coerceBoolean, FoundationProperty } from '@tylertech/forge-core';\nimport { BaseComponent, IBaseComponent } from '../../core/base/base-component';\nimport { BASE_DRAWER_CONSTANTS, DrawerDirection } from './base-drawer-constants';\nimport { BaseDrawerFoundation } from './base-drawer-foundation';\n\nexport interface IBaseDrawerComponent extends IBaseComponent {\n open: boolean;\n direction: DrawerDirection;\n}\n\ndeclare global {\n interface HTMLElementEventMap {\n 'forge-drawer-after-open': CustomEvent<void>;\n 'forge-drawer-after-close': CustomEvent<void>;\n }\n}\n\nexport abstract class BaseDrawerComponent<T extends BaseDrawerFoundation> extends BaseComponent implements IBaseDrawerComponent {\n public static get observedAttributes(): string[] {\n return [\n BASE_DRAWER_CONSTANTS.attributes.OPEN,\n BASE_DRAWER_CONSTANTS.attributes.DIRECTION\n ];\n }\n\n protected abstract _foundation: T;\n\n constructor() {\n super();\n }\n\n public connectedCallback(): void {\n this._foundation.connect();\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 BASE_DRAWER_CONSTANTS.attributes.OPEN:\n this.open = coerceBoolean(newValue);\n break;\n case BASE_DRAWER_CONSTANTS.attributes.DIRECTION:\n this.direction = newValue as DrawerDirection;\n break;\n }\n }\n\n /** Toggles whether a `dismissible` or `modal` drawer is open or not. Has no effect on `permanent` drawers. */\n @FoundationProperty()\n public open: boolean;\n\n /** Controls the laytout direction of the drawer for positioning on the left vs. right side of the screen. */\n @FoundationProperty()\n public direction: DrawerDirection;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|