@tylertech/forge 3.0.0-next.3 → 3.0.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/custom-elements.json +233 -83
  2. package/dist/esm/accordion/index.js +1 -1
  3. package/dist/esm/autocomplete/index.js +1 -1
  4. package/dist/esm/chip-field/index.js +1 -1
  5. package/dist/esm/chunks/chunk.3VZGVF2G.js +7 -0
  6. package/dist/esm/chunks/chunk.3VZGVF2G.js.map +7 -0
  7. package/dist/esm/chunks/{chunk.XX5QEV5W.js → chunk.6TTJYO62.js} +2 -2
  8. package/dist/esm/chunks/chunk.6TTJYO62.js.map +7 -0
  9. package/dist/esm/chunks/chunk.A6RLV2QU.js +7 -0
  10. package/dist/esm/chunks/chunk.A6RLV2QU.js.map +7 -0
  11. package/dist/esm/chunks/{chunk.ZJXVI6A7.js → chunk.BBNRKEP4.js} +2 -2
  12. package/dist/esm/chunks/chunk.BBNRKEP4.js.map +7 -0
  13. package/dist/esm/chunks/{chunk.C66IQMR6.js → chunk.FXUXL3D2.js} +2 -2
  14. package/dist/esm/chunks/{chunk.C66IQMR6.js.map → chunk.FXUXL3D2.js.map} +1 -1
  15. package/dist/esm/chunks/{chunk.EASEKF35.js → chunk.KWD5EK54.js} +2 -2
  16. package/dist/esm/chunks/chunk.L3N7P4YQ.js +7 -0
  17. package/dist/esm/chunks/chunk.L3N7P4YQ.js.map +7 -0
  18. package/dist/esm/chunks/chunk.N2XJHAD4.js +7 -0
  19. package/dist/esm/chunks/chunk.N2XJHAD4.js.map +7 -0
  20. package/dist/esm/chunks/chunk.NSTCCETU.js +7 -0
  21. package/dist/esm/chunks/chunk.NSTCCETU.js.map +7 -0
  22. package/dist/esm/chunks/{chunk.UVQIUEXO.js → chunk.Q6ELPSPD.js} +2 -2
  23. package/dist/esm/chunks/{chunk.L6DKEDFM.js → chunk.QMYJCNVD.js} +2 -2
  24. package/dist/esm/chunks/chunk.RHZ35R2V.js +7 -0
  25. package/dist/esm/chunks/chunk.RHZ35R2V.js.map +7 -0
  26. package/dist/esm/chunks/chunk.RMPS2I2P.js +7 -0
  27. package/dist/esm/chunks/chunk.RMPS2I2P.js.map +7 -0
  28. package/dist/esm/chunks/chunk.SA7OL5US.js +7 -0
  29. package/dist/esm/chunks/chunk.SA7OL5US.js.map +7 -0
  30. package/dist/esm/chunks/{chunk.I4347LUX.js → chunk.VXOI3G7C.js} +2 -2
  31. package/dist/esm/chunks/{chunk.VOGCDMLL.js → chunk.YHDUES7I.js} +2 -2
  32. package/dist/esm/date-picker/index.js +1 -1
  33. package/dist/esm/date-range-picker/index.js +1 -1
  34. package/dist/esm/expansion-panel/index.js +1 -1
  35. package/dist/esm/index.js +1 -1
  36. package/dist/esm/split-view/index.js +1 -1
  37. package/dist/esm/split-view/split-view/index.js +1 -1
  38. package/dist/esm/split-view/split-view-panel/index.js +1 -1
  39. package/dist/esm/stepper/index.js +1 -1
  40. package/dist/esm/stepper/step/index.js +1 -1
  41. package/dist/esm/stepper/stepper/index.js +1 -1
  42. package/dist/esm/table/index.js +1 -1
  43. package/dist/esm/text-field/index.js +1 -1
  44. package/dist/esm/time-picker/index.js +1 -1
  45. package/esm/autocomplete/autocomplete-constants.d.ts +1 -0
  46. package/esm/autocomplete/autocomplete-constants.js +1 -0
  47. package/esm/autocomplete/autocomplete-foundation.d.ts +5 -0
  48. package/esm/autocomplete/autocomplete-foundation.js +12 -1
  49. package/esm/autocomplete/autocomplete.d.ts +3 -0
  50. package/esm/autocomplete/autocomplete.js +7 -0
  51. package/esm/chip-field/chip-field-foundation.d.ts +1 -1
  52. package/esm/date-picker/base/base-date-picker-adapter.d.ts +2 -2
  53. package/esm/date-picker/base/base-date-picker-foundation.d.ts +2 -2
  54. package/esm/date-picker/base/base-date-picker-foundation.js +8 -5
  55. package/esm/date-picker/date-picker-adapter.js +5 -7
  56. package/esm/date-range-picker/date-range-picker-adapter.d.ts +4 -2
  57. package/esm/date-range-picker/date-range-picker-adapter.js +20 -18
  58. package/esm/date-range-picker/date-range-picker-foundation.d.ts +4 -1
  59. package/esm/date-range-picker/date-range-picker-foundation.js +48 -14
  60. package/esm/expansion-panel/expansion-panel-constants.d.ts +2 -0
  61. package/esm/expansion-panel/expansion-panel-constants.js +3 -1
  62. package/esm/expansion-panel/expansion-panel-foundation.js +4 -1
  63. package/esm/expansion-panel/expansion-panel.js +1 -1
  64. package/esm/field/field-adapter.d.ts +4 -2
  65. package/esm/field/field-adapter.js +5 -2
  66. package/esm/field/field-foundation.d.ts +2 -2
  67. package/esm/field/field-foundation.js +7 -9
  68. package/esm/split-view/split-view/split-view-adapter.js +3 -1
  69. package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
  70. package/esm/text-field/text-field-adapter.d.ts +1 -1
  71. package/esm/text-field/text-field-adapter.js +4 -3
  72. package/esm/time-picker/time-picker-adapter.js +4 -7
  73. package/esm/time-picker/time-picker-foundation.js +9 -6
  74. package/package.json +1 -1
  75. package/dist/esm/chunks/chunk.5XY7WBMA.js +0 -7
  76. package/dist/esm/chunks/chunk.5XY7WBMA.js.map +0 -7
  77. package/dist/esm/chunks/chunk.6DWTTNEC.js +0 -7
  78. package/dist/esm/chunks/chunk.6DWTTNEC.js.map +0 -7
  79. package/dist/esm/chunks/chunk.F6CILMKB.js +0 -7
  80. package/dist/esm/chunks/chunk.F6CILMKB.js.map +0 -7
  81. package/dist/esm/chunks/chunk.HZYRCFVC.js +0 -7
  82. package/dist/esm/chunks/chunk.HZYRCFVC.js.map +0 -7
  83. package/dist/esm/chunks/chunk.IOYABCVW.js +0 -7
  84. package/dist/esm/chunks/chunk.IOYABCVW.js.map +0 -7
  85. package/dist/esm/chunks/chunk.NTLWWOZJ.js +0 -7
  86. package/dist/esm/chunks/chunk.NTLWWOZJ.js.map +0 -7
  87. package/dist/esm/chunks/chunk.RWPPN4XB.js +0 -7
  88. package/dist/esm/chunks/chunk.RWPPN4XB.js.map +0 -7
  89. package/dist/esm/chunks/chunk.XX5QEV5W.js.map +0 -7
  90. package/dist/esm/chunks/chunk.YMG4QDOY.js +0 -7
  91. package/dist/esm/chunks/chunk.YMG4QDOY.js.map +0 -7
  92. package/dist/esm/chunks/chunk.ZJXVI6A7.js.map +0 -7
  93. /package/dist/esm/chunks/{chunk.EASEKF35.js.map → chunk.KWD5EK54.js.map} +0 -0
  94. /package/dist/esm/chunks/{chunk.UVQIUEXO.js.map → chunk.Q6ELPSPD.js.map} +0 -0
  95. /package/dist/esm/chunks/{chunk.L6DKEDFM.js.map → chunk.QMYJCNVD.js.map} +0 -0
  96. /package/dist/esm/chunks/{chunk.I4347LUX.js.map → chunk.VXOI3G7C.js.map} +0 -0
  97. /package/dist/esm/chunks/{chunk.VOGCDMLL.js.map → chunk.YHDUES7I.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/chip-field/chip-field-constants.ts", "../../src/chip-field/chip-field-adapter.ts", "../../src/chip-field/chip-field-foundation.ts", "../../src/chip-field/chip-field.ts", "../../src/chip-field/chip-field-component-delegate.ts", "../../src/chip-field/index.ts"],
4
- "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}chip-field`;\n\nconst classes = {\n ROOT: 'forge-chip-field'\n};\n\nconst slots = {\n LABEL: 'label',\n HELPER_TEXT: 'helper-text',\n MEMBER: 'member'\n};\n\nconst selectors = {\n ROOT: `.${classes.ROOT}`,\n INPUT_CONTAINER: '.forge-field__input-container',\n INPUT: 'input',\n LABEL: `[slot=${slots.LABEL}]`,\n HELPER_TEXT: `[slot=${slots.HELPER_TEXT}]`,\n MEMBER: `[slot=${slots.MEMBER}]`,\n LABEL_SLOT: `slot[name=${slots.LABEL}]`,\n MEMBER_SLOT: `slot[name=${slots.MEMBER}]`\n};\n\nconst events = {\n MEMBER_ADDED: `${elementName}-member-added`,\n MEMBER_REMOVED: `${elementName}-member-removed`\n};\n\nexport const CHIP_FIELD_CONSTANTS = {\n elementName,\n classes,\n slots,\n selectors,\n events\n};\n\nexport {\n type FieldDensityType as ChipFieldDensityType,\n type FieldFloatLabelType as ChipFieldFloatLabelType,\n type FieldShapeType as ChipFieldShapeType\n} from '../field/field-constants';\n", "import { IChipFieldComponent } from './chip-field';\nimport { getShadowElement } from '@tylertech/forge-core';\nimport { CHIP_FIELD_CONSTANTS } from './chip-field-constants';\nimport { FieldAdapter, IFieldAdapter } from '../field/field-adapter';\n\nexport interface IChipFieldAdapter extends IFieldAdapter {\n // root\n addRootListener(type: string, callback: (event: Event) => void): void;\n removeRootListener(type: string, callback: (event: Event) => void): void;\n\n // member\n addMemberSlotListener(listener: (evt: Event) => void): void;\n removeMemberSlotListener(listener: (evt: Event) => void): void;\n\n addInputContainerListener(type: string, callback: (event: Event) => void): void;\n removeInputContainerListener(type: string, callback: (event: Event) => void): void;\n\n // state selectors\n getSlottedMemberElements(): NodeListOf<HTMLElement>;\n\n // state actions\n focusInput(): void;\n tryPropagateClick(target: EventTarget | null): void;\n}\n\nexport class ChipFieldAdapter extends FieldAdapter implements IChipFieldAdapter {\n protected _memberSlot: HTMLSlotElement;\n protected _inputContainerElement: HTMLElement;\n\n constructor(component: IChipFieldComponent) {\n super(component);\n }\n\n public initialize(): void {\n super.initialize(CHIP_FIELD_CONSTANTS.selectors.ROOT);\n this._memberSlot = getShadowElement(this._component, CHIP_FIELD_CONSTANTS.selectors.MEMBER_SLOT) as HTMLSlotElement;\n this._inputContainerElement = getShadowElement(this._component, CHIP_FIELD_CONSTANTS.selectors.INPUT_CONTAINER) as HTMLElement;\n }\n\n public addRootListener(type: string, callback: (event: Event) => void): void {\n this._rootElement.addEventListener(type, callback);\n }\n\n public removeRootListener(type: string, callback: (event: Event) => void): void {\n this._rootElement.removeEventListener(type, callback);\n }\n\n public addMemberSlotListener(listener: (evt: Event) => void): void {\n this._memberSlot.addEventListener('slotchange', listener);\n }\n\n public removeMemberSlotListener(listener: (evt: Event) => void): void {\n if (this._memberSlot) {\n this._memberSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addInputContainerListener(type: string, callback: (event: Event) => void): void {\n this._inputContainerElement.addEventListener(type, callback);\n }\n\n public removeInputContainerListener(type: string, callback: (event: Event) => void): void {\n this._inputContainerElement.removeEventListener(type, callback);\n }\n\n public override fieldHasValue(): boolean {\n const aMemberExists = !!this._component.querySelector(CHIP_FIELD_CONSTANTS.selectors.MEMBER);\n return aMemberExists || super.inputHasValue();\n }\n\n public focusInput(): void {\n this._inputElement?.focus();\n }\n \n public tryPropagateClick(target: EventTarget | null): void {\n // We only propagate the click to the input if it originated from our internal input container\n if (target instanceof HTMLElement && target.matches(CHIP_FIELD_CONSTANTS.selectors.INPUT_CONTAINER)) {\n this._inputElement?.dispatchEvent(new MouseEvent('click'));\n }\n }\n\n public getSlottedMemberElements(): NodeListOf<HTMLElement> {\n return this._component.querySelectorAll<HTMLElement>(CHIP_FIELD_CONSTANTS.selectors.MEMBER);\n }\n}\n", "import { getActiveElement } from '@tylertech/forge-core';\nimport { IChipFieldAdapter } from './chip-field-adapter';\nimport { CHIP_FIELD_CONSTANTS } from './chip-field-constants';\nimport { IFieldFoundation, FieldFoundation } from '../field/field-foundation';\n\nexport interface IChipFieldFoundation extends IFieldFoundation {}\n\nexport class ChipFieldFoundation extends FieldFoundation implements IChipFieldFoundation {\n private _memberSlotListener: () => void;\n private _inputContainerMouseDownListener: (evt: MouseEvent) => void;\n private _handleRootKeyDown: (event: KeyboardEvent) => void;\n private _handleKeyDown: (event: KeyboardEvent) => void;\n\n constructor(protected _adapter: IChipFieldAdapter) {\n super(_adapter);\n this._memberSlotListener = () => this._onMemberSlotChanged();\n this._inputContainerMouseDownListener = evt => this._onInputContainerMouseDown(evt);\n this._handleRootKeyDown = evt => this._onRootKeyDown(evt);\n this._handleKeyDown = evt => this._onKeyDown(evt);\n }\n\n public initialize(): void {\n super.initialize();\n this._adapter.addMemberSlotListener(this._memberSlotListener);\n this._adapter.addInputContainerListener('mousedown', this._inputContainerMouseDownListener);\n this._adapter.addRootListener('keydown', this._handleRootKeyDown);\n this._adapter.addInputListener('keydown', this._handleKeyDown);\n }\n\n public disconnect(): void {\n super.disconnect();\n this._adapter.removeMemberSlotListener(this._memberSlotListener);\n this._adapter.removeInputContainerListener('mousedown', this._inputContainerMouseDownListener);\n this._adapter.removeRootListener('keydown', this._handleRootKeyDown);\n this._adapter.removeInputListener('keydown', this._handleKeyDown);\n }\n\n private _onInputContainerMouseDown(evt: MouseEvent): void {\n evt.preventDefault();\n this._adapter.focusInput();\n this._adapter.tryPropagateClick(evt.target);\n }\n\n protected _onBlur(event: Event): void {\n const input = event.target as HTMLInputElement;\n input.value = '';\n super._onBlur(event);\n }\n\n private _onRootKeyDown(event: KeyboardEvent): void {\n if (this._adapter.inputHasValue()) {\n return;\n }\n\n switch (event.key) {\n case 'Right':\n case 'ArrowRight':\n this._focusNextMember();\n break;\n case 'Left':\n case 'ArrowLeft':\n this._focusPreviousMember();\n break;\n case 'Backspace':\n case 'Delete':\n case 'Del':\n this._removeMember();\n break;\n default:\n break;\n }\n }\n\n private _onKeyDown(event: KeyboardEvent): void {\n const input = event.target as HTMLInputElement;\n switch (event.key) {\n case 'Enter':\n this._addMember(input);\n break;\n case 'Esc':\n case 'Escape':\n case 'Tab':\n input.value = '';\n break;\n default:\n break;\n }\n }\n\n private _focusNextMember(): void {\n const members = this._adapter.getSlottedMemberElements();\n if (members.length < 1 || this._adapter.inputHasFocus()) {\n return;\n }\n\n for (let i = 0; i < members.length; i++) {\n const member = members.item(i);\n const nextMember = members.item(i + 1);\n\n if (this._memberIsActive(member)) {\n if (nextMember) {\n nextMember.focus();\n break;\n } else {\n this._adapter.focusInput();\n }\n }\n }\n }\n\n private _focusPreviousMember(): void {\n const members = this._adapter.getSlottedMemberElements();\n if (members.length < 1) {\n return;\n }\n\n if (this._adapter.inputHasFocus()) {\n members[members.length - 1].focus();\n return;\n }\n\n for (let i = 0; i < members.length; i++) {\n const previousMember = members.item(i - 1);\n const member = members.item(i);\n\n if (this._memberIsActive(member) && previousMember) {\n previousMember.focus();\n break;\n }\n }\n }\n\n private _memberIsActive(ele: HTMLElement): boolean {\n return getActiveElement() === ele || ele.hasAttribute('focused');\n }\n\n private _getActiveMember(): HTMLElement | null {\n const members = this._adapter.getSlottedMemberElements();\n\n for (let i = 0; i < members.length; i++) {\n const member = members.item(i);\n if (this._memberIsActive(member)) {\n return member;\n }\n }\n\n return null;\n }\n\n private _addMember(input: HTMLInputElement): void {\n const cleanInputValue = input.value.trim();\n if (cleanInputValue && cleanInputValue.length > 0) {\n this._adapter.emitHostEvent(CHIP_FIELD_CONSTANTS.events.MEMBER_ADDED, cleanInputValue);\n }\n\n input.value = '';\n }\n\n private _removeMember(): void {\n let memberToRemove = this._getActiveMember();\n if (!memberToRemove) {\n const members = this._adapter.getSlottedMemberElements();\n memberToRemove = members.item(members.length - 1);\n }\n\n if (!memberToRemove) {\n return;\n }\n\n this._focusNextMember();\n this._adapter.emitHostEvent(CHIP_FIELD_CONSTANTS.events.MEMBER_REMOVED, memberToRemove);\n }\n\n private _onMemberSlotChanged(): void {\n this.floatLabel(this._adapter.fieldHasValue() || this._adapter.inputHasFocus());\n this._adapter.getSlottedMemberElements().forEach(x => x.tabIndex = -1);\n }\n}\n", "import { CustomElement, attachShadowTemplate } from '@tylertech/forge-core';\nimport { ChipFieldAdapter } from './chip-field-adapter';\nimport { ChipFieldFoundation } from './chip-field-foundation';\nimport { CHIP_FIELD_CONSTANTS } from './chip-field-constants';\nimport { ChipComponent } from '../chips';\nimport { FieldComponent, IFieldComponent } from '../field/field';\n\nconst template = '<template><div class=\\\"forge-chip-field__wrapper\\\" part=\\\"root\\\"><div class=\\\"forge-chip-field forge-field\\\" part=\\\"container\\\"><slot name=\\\"leading\\\"></slot><div class=\\\"forge-field__label-input-container\\\" part=\\\"label-input-container\\\"><slot name=\\\"label\\\"></slot><div class=\\\"forge-field__input-container\\\" part=\\\"input-container\\\"><slot name=\\\"member\\\"></slot><slot></slot></div></div><slot name=\\\"trailing\\\"></slot><div class=\\\"forge-field__addon-end-container\\\" part=\\\"addon-end-container\\\"><slot name=\\\"addon-end\\\"></slot></div></div><slot name=\\\"helper-text\\\"></slot></div></template>';\nconst styles = '.forge-field::before{content:\\\"\\\";display:-webkit-box;display:flex;position:absolute;top:0;right:0;left:0;z-index:-1;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:100%;height:100%;pointer-events:none;border-style:solid;border-style:var(--forge-chip-field-border-style,solid);border-width:1px;-webkit-transition:border-color .2s 0s cubic-bezier(0, 0, .2, 1);transition:border-color .2s 0s cubic-bezier(0, 0, .2, 1);background-color:transparent;background-color:var(--forge-chip-field-theme-background,transparent);text-align:left}.forge-field[dir=rtl]::before,[dir=rtl] .forge-field::before{text-align:right}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid):not(.forge-field--focused)::before{border-color:rgba(0,0,0,.38);border-color:var(--mdc-theme-text-icon-on-background,rgba(0,0,0,.38))}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid):not(.forge-field--focused):hover::before{border-color:rgba(0,0,0,.87);border-color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled)::before{border-color:#3f51b5;border-color:var(--mdc-theme-primary,#3f51b5)}.forge-field--invalid:not(.forge-field--disabled)::before{border-color:#b00020;border-color:var(--mdc-theme-error,#b00020)}.forge-field--invalid:not(.forge-field--disabled):not(.forge-field--focused):hover::before{border-color:#db8a98;border-color:var(--forge-theme-error-hover,#db8a98)}.forge-field--disabled::before{border-color:rgba(0,0,0,.12);border-color:var(--mdc-theme-text-disabled-on-background,rgba(0,0,0,.12))}.forge-field:not(.forge-field--shape-rounded){border-radius:4px}.forge-field:not(.forge-field--shape-rounded)::before{border-radius:4px}.forge-field--shape-rounded{border-radius:28px}.forge-field--shape-rounded::before{border-radius:28px}.forge-field--disabled::before{background-color:#f5f5f5;background-color:var(--forge-theme-form-field-disabled-on-background,#f5f5f5)}.forge-field--focused::before{border-color:#3f51b5;border-color:var(--mdc-theme-primary,#3f51b5);border-width:2px}.forge-field__label-input-container{position:relative;-webkit-box-flex:1;flex:1 1 0.0001px;height:100%;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center;min-width:0}.forge-field ::slotted(label){color:rgba(0,0,0,.65);color:var(--forge-theme-form-field-label-on-background,rgba(0,0,0,.65));pointer-events:none;right:0;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-subtitle1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-weight:400;font-weight:var(--mdc-typography-subtitle1-font-weight,400);letter-spacing:.009375em;letter-spacing:var(--mdc-typography-subtitle1-letter-spacing, .009375em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-subtitle1-text-decoration,inherit);text-decoration:var(--mdc-typography-subtitle1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-subtitle1-text-transform,inherit);font-size:var(--mdc-typography-subtitle1-font-size, 1rem);position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.1rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform;-webkit-transition:color 150ms cubic-bezier(.4, 0, .2, 1),-webkit-transform 150ms cubic-bezier(.4, 0, .2, 1);transition:color 150ms cubic-bezier(.4, 0, .2, 1),-webkit-transform 150ms cubic-bezier(.4, 0, .2, 1);transition:transform 150ms cubic-bezier(.4, 0, .2, 1),color 150ms cubic-bezier(.4, 0, .2, 1);transition:transform 150ms cubic-bezier(.4, 0, .2, 1),color 150ms cubic-bezier(.4, 0, .2, 1),-webkit-transform 150ms cubic-bezier(.4, 0, .2, 1)}.forge-field ::slotted(label[dir=rtl]),[dir=rtl] .forge-field ::slotted(label){right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.forge-field--dense:not(.forge-field--roomy) ::slotted(label){display:none}.forge-field--required ::slotted(label)::after{content:none}.forge-field--required ::slotted(label)::before{color:#b00020;color:var(--mdc-theme-error,#b00020);content:\\\"*\\\";margin-right:4px}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label){font-size:1rem}.forge-field--roomy:not(.forge-field--dense) ::slotted(label){font-size:1rem}.forge-field--disabled ::slotted(label){color:rgba(0,0,0,.38);color:var(--forge-theme-label-disabled-on-background,rgba(0,0,0,.38))}.forge-field--invalid:not(.forge-field--disabled) ::slotted(label){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled) ::slotted(label){color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label){top:1rem}.forge-field--roomy:not(.forge-field--dense) ::slotted(label){top:1.285rem}.forge-field:not(.forge-field--shape-rounded):not(.forge-field--leading) ::slotted(label){left:12px!important}.forge-field--shape-rounded:not(.forge-field--leading) ::slotted(label){left:32px!important}.forge-field:not(.forge-field--trailing):not(.forge-field--addon-end):not(.forge-field--shape-rounded) ::slotted(label){padding-right:12px}.forge-field:not(.forge-field--trailing):not(.forge-field--addon-end).forge-field--shape-rounded ::slotted(label){padding-right:32px}.forge-field ::slotted(label.forge-floating-label--float-above){color:rgba(0,0,0,.65);color:var(--forge-theme-form-field-label-on-background,rgba(0,0,0,.65))}.forge-field--disabled ::slotted(label.forge-floating-label--float-above){color:rgba(0,0,0,.6);color:var(--forge-theme-form-field-text-disabled-on-background,rgba(0,0,0,.6))}.forge-field--invalid:not(.forge-field--disabled) ::slotted(label.forge-floating-label--float-above){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled) ::slotted(label.forge-floating-label--float-above){color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label.forge-floating-label--float-above){-webkit-transform:translateY(-.54rem) scale(.8125);transform:translateY(-.54rem) scale(.8125);cursor:auto}.forge-field--roomy:not(.forge-field--dense) ::slotted(label.forge-floating-label--float-above){-webkit-transform:translateY(-.72rem) scale(.8125);transform:translateY(-.72rem) scale(.8125);cursor:auto}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label.forge-floating-label--float-above.forge-floating-label--float-above-end-keyframe){-webkit-transition:none;transition:none;font-size:.8125rem;-webkit-transform:translateY(-.62rem) scale(1);transform:translateY(-.62rem) scale(1);cursor:auto}.forge-field--roomy:not(.forge-field--dense) ::slotted(label.forge-floating-label--float-above.forge-floating-label--float-above-end-keyframe){-webkit-transition:none;transition:none;font-size:.8125rem;-webkit-transform:translateY(-.8rem) scale(1);transform:translateY(-.8rem) scale(1);cursor:auto}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(label.forge-floating-label--unfloat-above-start-keyframe){-webkit-transition:none;transition:none;font-size:1rem;-webkit-transform:translateY(-.62rem) scale(.8125);transform:translateY(-.62rem) scale(.8125);cursor:auto}.forge-field--roomy:not(.forge-field--dense) ::slotted(label.forge-floating-label--unfloat-above-start-keyframe){-webkit-transition:none;transition:none;font-size:1rem;-webkit-transform:translateY(-.8rem) scale(.8125);transform:translateY(-.8rem) scale(.8125);cursor:auto}.forge-field~::slotted([slot=helper-text]){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-caption-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));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);display:block;min-height:1.5rem;line-height:normal;padding-top:4px;-webkit-box-sizing:border-box;box-sizing:border-box}.forge-field:not(.forge-field--dense):not(.forge-field--roomy)~::slotted([slot=helper-text]){font-size:.75rem}.forge-field--roomy:not(.forge-field--dense)~::slotted([slot=helper-text]){font-size:.875rem}.forge-field--dense:not(.forge-field--roomy)~::slotted([slot=helper-text]){font-size:.75rem}.forge-field~::slotted([slot=helper-text]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled)~::slotted([slot=helper-text]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field:not(.forge-field--shape-rounded)~::slotted([slot=helper-text]){margin-left:12px}.forge-field--shape-rounded~::slotted([slot=helper-text]){margin-left:32px}.forge-field ::slotted([slot=leading]){display:-webkit-box;display:flex;align-self:center}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid) ::slotted([slot=leading]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled) ::slotted([slot=leading]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--disabled ::slotted([slot=leading]){color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38));cursor:not-allowed;pointer-events:none}.forge-field ::slotted([slot=leading]){margin:0 4px}.forge-field ::slotted([slot=leading]:not(forge-icon-button)){padding:6px}.forge-field ::slotted([slot=trailing]){align-self:center}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid) ::slotted([slot=trailing]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled) ::slotted([slot=trailing]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--disabled ::slotted([slot=trailing]){color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38));cursor:not-allowed;pointer-events:none}.forge-field ::slotted([slot=trailing]){margin:0 4px}.forge-field ::slotted([slot=trailing]:not(forge-icon-button)){padding:6px}.forge-field__addon-end-container{display:none}.forge-field--addon-end .forge-field__addon-end-container{height:100%;width:auto;display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;padding:0 4px;border-left-width:1px;border-left-style:solid;-webkit-transition:border-left-color .2s 0s cubic-bezier(0, 0, .2, 1);transition:border-left-color .2s 0s cubic-bezier(0, 0, .2, 1)}.forge-field:not(.forge-field--disabled):not(.forge-field--focused):not(.forge-field--invalid) .forge-field__addon-end-container{border-left-color:rgba(0,0,0,.54);border-left-color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field:not(.forge-field--disabled):not(.forge-field--focused):not(.forge-field--invalid) .forge-field__addon-end-container:hover{border-left-color:rgba(0,0,0,.87);border-left-color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-field.forge-field--focused:not(.forge-field--invalid):not(.forge-field--disabled) .forge-field__addon-end-container{border-left-color:#3f51b5;border-left-color:var(--mdc-theme-primary,#3f51b5)}.forge-field.forge-field--invalid:not(.forge-field--disabled) .forge-field__addon-end-container{border-left-color:#b00020;border-left-color:var(--mdc-theme-error,#b00020)}.forge-field.forge-field--invalid:not(.forge-field--focused):not(.forge-field--disabled) .forge-field__addon-end-container:hover{border-left-color:#db8a98;border-left-color:var(--forge-theme-error-hover,#db8a98)}.forge-field.forge-field--disabled .forge-field__addon-end-container{border-left-color:rgba(0,0,0,.12);border-left-color:var(--mdc-theme-text-disabled-on-background,rgba(0,0,0,.12))}.forge-field:not(.forge-field--disabled):not(.forge-field--invalid) ::slotted([slot=addon-end]){color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54))}.forge-field--invalid:not(.forge-field--disabled) ::slotted([slot=addon-end]){color:#b00020;color:var(--mdc-theme-error,#b00020)}.forge-field--disabled ::slotted([slot=addon-end]){color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38));cursor:not-allowed;pointer-events:none}.forge-chip-field{-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;position:relative;z-index:1;z-index:var(--forge-z-index-surface,1);margin-top:0;margin-top:var(--forge-chip-field-margin-top,0);display:grid;grid-template-columns:[leading] -webkit-min-content [input] 1fr [trailing] -webkit-min-content [addon-end] -webkit-min-content [end];grid-template-columns:[leading] min-content [input] 1fr [trailing] min-content [addon-end] min-content [end]}.forge-chip-field.forge-field--disabled{background-color:#f5f5f5;background-color:var(--forge-theme-form-field-disabled-on-background,#f5f5f5);cursor:not-allowed}.forge-chip-field:not(.forge-field--dense):not(.forge-field--roomy){height:auto;min-height:46px;min-height:var(--forge-chip-field-height,46px)}.forge-chip-field.forge-field--roomy:not(.forge-field--dense){height:auto;min-height:3.5rem;min-height:var(--forge-chip-field-height,3.5rem)}.forge-chip-field.forge-field--dense:not(.forge-field--roomy){height:auto;min-height:1.5rem;min-height:var(--forge-chip-field-height,1.5rem)}.forge-field__label-input-container{grid-column-start:input;grid-column-end:trailing}.forge-field__input-container{-webkit-box-flex:1;flex:1 1 0.0001px;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;flex-wrap:wrap;-webkit-box-align:start;align-items:flex-start;-webkit-box-sizing:border-box;box-sizing:border-box}.forge-field__input-container{padding:2px 12px}.forge-field--label .forge-field__input-container{padding-top:22px}.forge-field--roomy.forge-field--label .forge-field__input-container{padding-top:22px}.forge-field--shape-rounded:not(.forge-field--leading) .forge-field__input-container{padding-left:32px}.forge-field--leading:not(.forge-field--shape-rounded) .forge-field__input-container{padding-left:0}.forge-field--shape-rounded.forge-field--leading .forge-field__input-container{padding-left:0}.forge-field--label .forge-field__input-container{padding-bottom:2px}.forge-field--roomy.forge-field--label .forge-field__input-container{padding-bottom:2px}.forge-field--shape-rounded:not(.forge-field--trailing):not(.forge-field--addon-end) .forge-field__input-container{padding-right:32px}.forge-field--addon-end:not(.forge-field--shape-rounded) .forge-field__input-container,.forge-field--trailing:not(.forge-field--shape-rounded) .forge-field__input-container{padding-right:0}.forge-field--shape-rounded.forge-field--addon-end .forge-field__input-container,.forge-field--shape-rounded.forge-field--trailing .forge-field__input-container{padding-right:0}.forge-field ::slotted([slot=member]){display:block}.forge-field--disabled ::slotted([slot=member]){--mdc-theme-primary:rgba(0, 0, 0, 0.38);--mdc-theme-primary:var(--mdc-theme-text-disabled-on-light, rgba(0, 0, 0, 0.38));cursor:not-allowed;pointer-events:none}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted([slot=member]){margin:2px 8px 2px 0}.forge-field--roomy:not(.forge-field--dense) ::slotted([slot=member]){margin:6px 12px 6px 0}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=member]){margin:2px 6px 2px 0}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted([slot=member]){--forge-chip-min-height:20px}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=member]){--forge-chip-min-height:16px}.forge-field ::slotted(input){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:Roboto,sans-serif;font-family:var(--mdc-typography-body1-font-family, var(--mdc-typography-font-family, Roboto, sans-serif));font-weight:400;font-weight:var(--mdc-typography-body1-font-weight,400);letter-spacing:.03125em;letter-spacing:var(--mdc-typography-body1-letter-spacing, .03125em);text-decoration:inherit;-webkit-text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-decoration:var(--mdc-typography-body1-text-decoration,inherit);text-transform:inherit;text-transform:var(--mdc-typography-body1-text-transform,inherit);align-self:flex-end;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;-webkit-transition:opacity 150ms 0s cubic-bezier(.4, 0, .2, 1);transition:opacity 150ms 0s cubic-bezier(.4, 0, .2, 1);border:none;background:0 0;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:0;line-height:normal;min-width:0}.forge-field ::slotted(input)::-webkit-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input)::-moz-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input):-ms-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input)::-ms-input-placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input)::placeholder{color:rgba(0,0,0,.54);color:var(--mdc-theme-text-secondary-on-background,rgba(0,0,0,.54));font-size:.875rem}.forge-field ::slotted(input):invalid{-webkit-box-shadow:none;box-shadow:none}.forge-field ::slotted(input):-webkit-autofill{z-index:auto!important}.forge-field:not(.forge-field--disabled) ::slotted(input){color:rgba(0,0,0,.87);color:var(--mdc-theme-text-primary-on-background,rgba(0,0,0,.87))}.forge-field--disabled ::slotted(input){color:rgba(0,0,0,.6);color:var(--forge-theme-form-field-text-disabled-on-background,rgba(0,0,0,.6));cursor:not-allowed}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(input){font-size:1rem;font-size:var(--forge-chip-field-font-size, 1rem)}.forge-field--roomy:not(.forge-field--dense) ::slotted(input){font-size:1rem;font-size:var(--forge-chip-field-font-size, 1rem)}.forge-field--dense:not(.forge-field--roomy) ::slotted(input){font-size:.875rem;font-size:var(--forge-chip-field-font-size, .875rem)}.forge-field ::slotted(input){-webkit-box-flex:1;flex:1 1 0.0001px;min-width:40px;display:block;align-self:flex-start;padding:0}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(input){margin:4px 0}.forge-field--roomy:not(.forge-field--dense) ::slotted(input){margin:6px 0}.forge-field--dense:not(.forge-field--roomy) ::slotted(input){margin:2px 0}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted(input){height:1rem;line-height:1rem}.forge-field--roomy:not(.forge-field--dense) ::slotted(input){height:1.25rem;line-height:1.25rem}.forge-field--dense:not(.forge-field--roomy) ::slotted(input){height:1rem;line-height:1rem}.forge-field ::slotted([slot=leading]){grid-column-start:leading;grid-column-end:input;align-self:flex-start}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted([slot=leading]){margin-top:5px;margin-bottom:5px}.forge-field--roomy:not(.forge-field--dense) ::slotted([slot=leading]){margin-top:10px;margin-bottom:10px}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=leading]){margin-top:0;margin-bottom:0}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=leading]){padding-top:0;padding-bottom:0}.forge-field ::slotted([slot=trailing]){grid-column-start:trailing;grid-column-end:addon-end;display:-webkit-box;display:flex;-webkit-box-align:start;align-items:flex-start;align-self:flex-start}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted([slot=trailing]){margin-top:5px;margin-bottom:5px}.forge-field--roomy:not(.forge-field--dense) ::slotted([slot=trailing]){margin-top:10px;margin-bottom:10px}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=trailing]){margin-top:0;margin-bottom:0}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=trailing]){padding-top:0;padding-bottom:0}.forge-field--addon-end .forge-field__addon-end-container{grid-column-start:addon-end;grid-column-end:end;display:-webkit-box;display:flex;-webkit-box-align:start;align-items:flex-start;align-self:flex-start}.forge-field:not(.forge-field--dense):not(.forge-field--roomy) ::slotted([slot=addon-end]){margin-top:5px;margin-bottom:5px}.forge-field--roomy:not(.forge-field--dense) ::slotted([slot=addon-end]){margin-top:10px;margin-bottom:10px}.forge-field--dense:not(.forge-field--roomy) ::slotted([slot=addon-end]){margin-top:0;margin-bottom:0}.forge-field ::slotted(forge-icon-button){display:-webkit-inline-box!important;display:inline-flex!important}:host{display:block;contain:layout}:host([hidden]){display:none}';\n\nexport interface IChipFieldComponent extends IFieldComponent { }\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-chip-field': IChipFieldComponent;\n }\n\n interface HTMLElementEventMap {\n 'forge-chip-field-member-added': CustomEvent<string>;\n 'forge-chip-field-member-removed': CustomEvent<HTMLElement>;\n }\n}\n\n/**\n * The web component class behind the `<forge-chip-field>` custom element.\n * \n * @tag forge-chip-field\n */\n@CustomElement({\n name: CHIP_FIELD_CONSTANTS.elementName,\n dependencies: [ChipComponent]\n})\nexport class ChipFieldComponent extends FieldComponent<ChipFieldFoundation> implements IChipFieldComponent {\n constructor() {\n super();\n attachShadowTemplate(this, template, styles);\n this._foundation = new ChipFieldFoundation(new ChipFieldAdapter(this));\n }\n}\n", "import { IBaseComponentDelegateConfig } from '../core/delegates/base-component-delegate';\nimport { FormFieldComponentDelegate, IFormFieldComponentDelegateOptions } from '../core/delegates/form-field-component-delegate';\nimport { IChipFieldComponent } from './chip-field';\nimport { CHIP_FIELD_CONSTANTS } from './chip-field-constants';\n\nexport type ChipFieldComponentDelegateProps = Partial<IChipFieldComponent>;\nexport interface IChipFieldComponentDelegateOptions extends IFormFieldComponentDelegateOptions {\n id?: string;\n label?: string;\n type?: string;\n value?: string;\n helperText?: string;\n placeholder?: string;\n leadingElement?: HTMLElement;\n trailingElement?: HTMLElement;\n}\nexport interface IChipFieldComponentDelegateConfig extends IBaseComponentDelegateConfig<IChipFieldComponent, IChipFieldComponentDelegateOptions> {}\n\nexport class ChipFieldComponentDelegate extends FormFieldComponentDelegate<IChipFieldComponent, IChipFieldComponentDelegateOptions> {\n private _inputElement: HTMLInputElement;\n private _labelElement: HTMLLabelElement | undefined;\n private _helperTextElement: HTMLSpanElement | undefined;\n\n constructor(config?: IChipFieldComponentDelegateConfig) {\n super(config);\n }\n\n protected _build(): IChipFieldComponent {\n const chipField = document.createElement(CHIP_FIELD_CONSTANTS.elementName);\n\n this._inputElement = this._buildInputElement(chipField);\n\n if (this._config.options?.leadingElement) {\n this._config.options.leadingElement.slot = 'leading';\n chipField.appendChild(this._config.options.leadingElement);\n }\n if (this._config.options?.trailingElement) {\n this._config.options.trailingElement.slot = 'trailing';\n chipField.appendChild(this._config.options.trailingElement);\n }\n\n chipField.appendChild(this._inputElement);\n return chipField;\n }\n\n protected override _configure(): void {\n if (this._config.options?.helperText) {\n this.setHelperText(this._config.options.helperText);\n }\n if (typeof this._config.options?.label === 'string') {\n this._createLabel(this._config.options.label);\n }\n }\n\n public get value(): string {\n return this._inputElement.value;\n }\n public set value(value: string) {\n this._inputElement.value = value;\n }\n\n public get disabled(): boolean {\n return this._inputElement.disabled;\n }\n public set disabled(value: boolean) {\n this._inputElement.disabled = value;\n }\n\n public get invalid(): boolean {\n return this._element.invalid || false;\n }\n public set invalid(value: boolean) {\n this._element.invalid = value;\n }\n\n public get inputElement(): HTMLInputElement {\n return this._inputElement;\n }\n\n public get labelElement(): HTMLLabelElement | undefined {\n return this._labelElement;\n }\n\n public onChange(listener: (value: string) => void): void {\n this._inputElement.addEventListener('input', evt => listener((evt.target as HTMLInputElement).value));\n }\n\n public onFocus(listener: (evt: Event) => void): void {\n this._inputElement.addEventListener('focus', evt => listener(evt));\n }\n\n public onBlur(listener: (evt: Event) => void): void {\n this._inputElement.addEventListener('blur', evt => listener(evt));\n }\n\n public setLabel(text: string | null): void {\n if (text) {\n if (this._labelElement) {\n this._labelElement.textContent = text;\n } else {\n this._createLabel(text);\n }\n } else if (this._labelElement) {\n this._element.removeChild(this._labelElement);\n this._labelElement = undefined;\n }\n }\n\n public setHelperText(text: string | null): void {\n if (text) {\n if (!this._helperTextElement) {\n this._helperTextElement = document.createElement('span');\n this._helperTextElement.slot = 'helper-text';\n this._element.appendChild(this._helperTextElement);\n }\n this._helperTextElement.textContent = text;\n } else if (this._helperTextElement) {\n this._element.removeChild(this._helperTextElement);\n this._helperTextElement = undefined;\n }\n }\n\n public floatLabel(value: boolean): void {\n this._element.floatLabel(value);\n }\n\n private _createLabel(text: string): void {\n this._labelElement = document.createElement('label');\n this._labelElement.textContent = text;\n if (this._config.options?.id) {\n this._labelElement.setAttribute('for', this._config.options.id);\n }\n this._element.appendChild(this._labelElement);\n }\n\n private _buildInputElement(chipField: IChipFieldComponent): HTMLInputElement {\n const inputElement = document.createElement('input');\n inputElement.type = this._config.options?.type || 'text';\n\n if (this._config.options?.value !== undefined) {\n inputElement.value = this._config.options.value;\n }\n if (this._config.options?.id) {\n inputElement.id = this._config.options.id;\n }\n if (typeof this._config.options?.placeholder === 'string') {\n inputElement.placeholder = this._config.options?.placeholder;\n }\n\n chipField.appendChild(inputElement);\n return inputElement;\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { ChipFieldComponent } from './chip-field';\n\nexport * from './chip-field-adapter';\nexport * from './chip-field-component-delegate';\nexport * from './chip-field-constants';\nexport * from './chip-field-foundation';\nexport * from './chip-field';\n\nexport function defineChipFieldComponent(): void {\n defineCustomElement(ChipFieldComponent);\n}\n"],
5
- "mappings": "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",
6
- "names": ["elementName", "COMPONENT_NAME_PREFIX", "classes", "slots", "selectors", "events", "CHIP_FIELD_CONSTANTS", "ChipFieldAdapter", "FieldAdapter", "component", "CHIP_FIELD_CONSTANTS", "getShadowElement", "type", "callback", "listener", "_a", "target", "ChipFieldFoundation", "FieldFoundation", "_adapter", "evt", "event", "input", "members", "i", "member", "nextMember", "previousMember", "ele", "getActiveElement", "cleanInputValue", "CHIP_FIELD_CONSTANTS", "memberToRemove", "x", "template", "styles", "ChipFieldComponent", "FieldComponent", "attachShadowTemplate", "ChipFieldFoundation", "ChipFieldAdapter", "__decorateClass", "CustomElement", "CHIP_FIELD_CONSTANTS", "ChipComponent", "ChipFieldComponentDelegate", "FormFieldComponentDelegate", "config", "_a", "_b", "chipField", "CHIP_FIELD_CONSTANTS", "value", "listener", "evt", "text", "_c", "_d", "_e", "inputElement", "defineChipFieldComponent", "defineCustomElement", "ChipFieldComponent"]
7
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2023 Tyler Technologies, Inc.
4
- * License: Apache-2.0
5
- */
6
- import{d as at}from"./chunk.O4KZV4MX.js";import{h as st}from"./chunk.A2BJ47Q6.js";import{e as it}from"./chunk.FHW6LV4A.js";import{c as et}from"./chunk.LHFZFVHB.js";import{e as tt}from"./chunk.QWKDOAOE.js";import{a as f,b as nt}from"./chunk.YTOYNJMD.js";import{a as rt}from"./chunk.LIKJD4SK.js";import{a as F}from"./chunk.MGLWXAZO.js";import{a as C,b as ot}from"./chunk.NRXPO3SY.js";import{j as K}from"./chunk.MZLPUI6R.js";import{a as Q,d as Z,l as E}from"./chunk.T64UW37U.js";import{g as J}from"./chunk.XIQFHO5R.js";import{j as b,k as X,n as G,o as q,p as Y,q as j}from"./chunk.DMCBAYQX.js";import{a as $}from"./chunk.G4IN6Y46.js";import{a as u}from"./chunk.NVUMRW44.js";import{a as W}from"./chunk.TKDMM2ZZ.js";import{a as R,b as z}from"./chunk.55FCNVG5.js";import{a as N,e as H,g as V,i as U,l as B}from"./chunk.QH2GB3PD.js";import{m as A,s as P,u as x}from"./chunk.CFDK4RCW.js";import{a as D,k as m,l as y,o as L}from"./chunk.J2M2MXP2.js";import{a as w,d as p}from"./chunk.M3QDAYD2.js";var h=`${z}time-picker`,lt={TOGGLE:"forge-time-picker-toggle",VALUE:"value",OPEN:"open",ALLOW_SECONDS:"allow-seconds",MASKED:"masked",SHOW_MASK_FORMAT:"show-mask-format",USE_24_HOUR_TIME:"use-24-hour-time",ALLOW_INVALID_TIME:"allow-invalid-time",MIN:"min",MAX:"max",START_TIME:"start-time",STEP:"step",ALLOW_INPUT:"allow-input",SHOW_NOW:"show-now",SHOW_HOUR_OPTIONS:"show-hour-options",DISABLED:"disabled",POPUP_CLASSES:"popup-classes",ALLOW_DROPDOWN:"allow-dropdown"},ft={INPUT:"input, input[forge-time-picker-input]",TOGGLE:`[${lt.TOGGLE}]`},gt={OPEN:`${h}-open`,CLOSE:`${h}-close`,INPUT:`${h}-input`,CHANGE:`${h}-change`},vt={DEFAULT_MINUTE_STEP:60,MAX_DAY_MILLIS:864e5,MAX_DAY_MINUTES:1440},s={elementName:h,attributes:lt,selectors:ft,events:gt,numbers:vt};var g=class extends W{constructor(e){super(e)}initialize(){this._inputElement=this._component.querySelector(s.selectors.INPUT)}initializeMask(e){this._inputMask&&this._inputMask.destroy(),this._inputMask=new J(this._inputElement,e)}destroy(){this._targetElement=void 0,this._toggleElement=void 0,this._inputElement=void 0}destroyMask(){this._inputMask&&(this._inputMask.destroy(),this._inputMask=void 0)}initializeAccessibility(e){this._inputElement.setAttribute("autocomplete","off"),this._inputElement.setAttribute("autocorrect","off"),this._inputElement.setAttribute("autocapitalize","off"),this._inputElement.setAttribute("spellcheck","false"),this._inputElement.setAttribute("role","combobox"),this._inputElement.setAttribute("aria-live","assertive"),this._inputElement.setAttribute("aria-atomic","true"),this._inputElement.setAttribute("aria-haspopup","true"),this._inputElement.setAttribute("aria-expanded","false")}addInputListener(e,i,n){this._inputElement.addEventListener(e,i,{capture:n})}removeInputListener(e,i,n){this._inputElement&&this._inputElement.removeEventListener(e,i,{capture:n})}addToggleListener(e,i){this._toggleElement&&this._toggleElement.addEventListener(e,i)}removeToggleListener(e,i){this._toggleElement&&this._toggleElement.removeEventListener(e,i)}hasInputElement(){return!!this._inputElement}tryCreateToggle(){let e=this._component.querySelector(f.elementName),i=this._component.querySelector(s.selectors.TOGGLE);if(e){let n=e.querySelector(`${C.elementName}[slot=trailing]`);if(n||i){this._toggleElement=n||i;return}let a=document.createElement(C.elementName);a.slot="trailing",a.dense=!0,a.densityLevel=3,a.style.marginRight="4px";let r=document.createElement("button");r.type="button",r.tabIndex=-1,r.setAttribute("aria-label","Toggle time dropdown");let d=document.createElement(Q.elementName);d.name="clock_outline",r.appendChild(d),a.appendChild(r),e.appendChild(a),this._toggleElement=a}else i&&(this._toggleElement=i)}tryFocusInput(){this._inputElement.select()}tryBlurInput(){this._inputElement.blur()}selectInputText(){this._inputElement.select()}isInputDisabled(){return this._inputElement.disabled}isInputFocused(){return P()===this._inputElement}setInputValue(e,i){this._inputElement.value!==e&&(this._inputElement.value=e,this._inputMask&&this._inputMask.update(),i&&(this._emitInputEvent("change"),this._emitInputEvent("input")))}getInputValue(){return this._inputMask?this._inputMask.maskedValue:this._inputElement.value}setDisabled(e){this._inputElement.disabled=e,this._inputElement.setAttribute("aria-disabled",e.toString()),this.setToggleDisabled(e)}attachDropdown(e){this._listDropdown=new st(this._inputElement,e),this._listDropdown.open(),this._inputElement.setAttribute("aria-controls",`list-dropdown-popup-${e.id}`)}detachDropdown(){this._listDropdown&&(this._listDropdown.close(),this._listDropdown.destroy(),this._listDropdown=void 0),this._inputElement.removeAttribute("aria-controls")}propagateKey(e){var i;(i=this._listDropdown)==null||i.handleKey(e)}setActiveDescendant(e){x(this._inputElement,!!e,"aria-activedescendant",e)}getTargetElementWidth(e){return this._getTargetElement(e).getBoundingClientRect().width}_emitInputEvent(e){this._inputElement.dispatchEvent(new Event(e))}emitInputEvent(e,i){U(this._inputElement,e,i)}setInputReadonly(e){this._inputElement.readOnly=e}setToggleDisabled(e){if(this._toggleElement)if(this._toggleElement.setAttribute("aria-disabled",e.toString()),"disabled"in this._toggleElement)this._toggleElement.disabled=e;else{let i=this._toggleElement.querySelector("button");i&&(i.disabled=e)}}hasActiveOption(){var e,i;return((i=(e=this._listDropdown)==null?void 0:e.getActiveOptionIndex())!=null?i:-1)>=0}activateOptionByIndex(e){var i;(i=this._listDropdown)==null||i.activateOption(e)}activateFirstOption(){var e;(e=this._listDropdown)==null||e.activateFirstOption()}getActiveOption(){var e;return(e=this._listDropdown)==null?void 0:e.getActiveOption()}_getTargetElement(e){return this._targetElement?this._targetElement:(this._targetElement=e?this._component.querySelector(e)||this._getDefaultTargetElement():this._getDefaultTargetElement(),this._targetElement)}_getDefaultTargetElement(){let e=this._component.querySelector(f.elementName);if(e&&e.shadowRoot){let i=V(e,f.selectors.ROOT);if(i)return i}return this._component}};function v(o,t,e){if(!o||/^\s*$/.test(o))return null;let i=0,n=0,a=0;if(b.test(o)){let r=G(o);i=+r.hours||0,n=+r.minutes||0,a=+r.seconds||0}else if(X.test(o)){let r=q(o);i=+r.hours||0,n=+r.minutes||0,a=+r.seconds||0,i===12&&r.meridiem==="AM"&&(i=0),i<12&&r.meridiem==="PM"&&(i+=12)}else return null;return dt(i)+T(n)+(e?O(a):0)}function c(o,t,e){if(typeof o!="number"||o<0)return null;let i=Math.min(pt(o),23),n=Math.min(ut(o),59),r=o/(1e3*60)<720?"AM":"PM";t||(i=i<=12?i:i-12,i===0&&(i=12));let d=`${String(i).padStart(2,"0")}:${String(n).padStart(2,"0")}`;if(e){let _=Math.min(M(o),59);d+=`:${String(_).padStart(2,"0")}`}return t||(d+=` ${r}`),d}function pt(o){return Math.abs(Math.floor(o/(1e3*60*60)))}function ut(o){return Math.abs(Math.floor(I(o)%60))}function I(o){return o/(1e3*60)}function M(o){return Math.abs(Math.floor(It(o)%60))}function It(o){return o/1e3}function dt(o){return o*60*60*1e3}function T(o){return o*60*1e3}function O(o){return o*1e3}function ct(o){return o-O(M(o))}function S(o){let t=new Date,e=t.getHours(),i=t.getMinutes();return dt(e)+T(i)+(o?O(t.getSeconds()):0)}function Rt(o,t,e=!1){o||(o=new Date);let i=v(t,!0,e);if(!i)return o.setHours(0,0,0),o;let n=pt(i),a=828e5;n>a?n=a:n<0&&(n=0);let r=ut(i),d=e?M(i):0;return o.setHours(n,r,d),o}var k=class{constructor(t){this._adapter=t;this._value=null;this._masked=!0;this._use24HourTime=!1;this._showMaskFormat=!1;this._min=null;this._max=null;this._restrictedTimes=[];this._startTime=null;this._step=s.numbers.DEFAULT_MINUTE_STEP;this._allowInput=!0;this._open=!1;this._allowSeconds=!1;this._allowInvalidTime=!1;this._showNow=!1;this._showHourOptions=!0;this._customOptions=[];this._disabled=!1;this._popupClasses=[];this._allowDropdown=!0;this._isInitialized=!1;this._identifier=D(),this._inputListener=e=>this._onInput(e),this._inputKeydownListener=e=>this._onInputKeydown(e),this._toggleMousedownListener=e=>this._onToggleMousedown(e),this._inputFocusListener=e=>this._onInputFocus(e),this._inputBlurListener=e=>this._onInputBlur(e),this._inputMousedownListener=e=>this._onInputMousedown(e)}initialize(){if(this._adapter.initialize(),!this._adapter.hasInputElement())throw new Error("Unable to locate <input> element to attach to.");if(this._adapter.initializeAccessibility(this._identifier),!this._value){let t=this._adapter.getInputValue();this._setValue(this._convertTimeStringToMillis(t,this._use24HourTime,this._allowSeconds))}this._adapter.addInputListener("focus",this._inputFocusListener),this._adapter.addInputListener("blur",this._inputBlurListener),this._adapter.addInputListener("keydown",this._inputKeydownListener,!0),this._formatInputValue(!1),typeof this._value=="number"&&this._applyValue(this._value,!1),this._applyAllowInput(),this._applyAllowDropdown(),this._applyDisabled(),this._applyMask(),this._isInitialized=!0}disconnect(){this._isInitialized=!1,this._adapter.removeInputListener("input",this._inputListener),this._adapter.removeInputListener("focus",this._inputFocusListener),this._adapter.removeInputListener("blur",this._inputBlurListener),this._adapter.removeToggleListener("mousedown",this._toggleMousedownListener),this._adapter.removeInputListener("keydown",this._inputKeydownListener,!0),this._masked&&this._adapter.destroyMask(),this._closeDropdown(),this._adapter.destroy()}_onInput(t){this._handleInput(this._adapter.getInputValue())}_onInputKeydown(t){var e,i;if(t.shiftKey)switch(t.code){case"Backspace":case"Delete":t.preventDefault(),this._trySetValue(null)&&this._formatInputValue();return}switch(t.code){case"Tab":this._open&&this._selectActiveOption();break;case"Esc":case"Escape":this._open&&(t.preventDefault(),t.stopPropagation(),this._closeDropdown(!0));break;case"Down":case"ArrowDown":this._allowDropdown&&(t.preventDefault(),this._open?this._adapter.hasActiveOption()?this._adapter.propagateKey(t.code):this._trySetActiveOption():(this._openDropdown(),typeof((e=this._dropdownConfig)==null?void 0:e.visibleStartIndex)=="number"&&this._dropdownConfig.visibleStartIndex>=0?this._adapter.activateOptionByIndex((i=this._dropdownConfig)==null?void 0:i.visibleStartIndex):this._adapter.activateFirstOption()));break;case"ArrowUp":this._allowDropdown&&(t.preventDefault(),this._open&&(this._adapter.hasActiveOption()?this._adapter.propagateKey(t.code):this._trySetActiveOption()));break;case"Enter":case"NumpadEnter":case"Home":case"End":this._open&&((t.code==="Enter"||t.code==="NumpadEnter")&&t.stopPropagation(),t.preventDefault(),this._adapter.propagateKey(t.code));break;case"KeyN":t.preventDefault();let n=S(this._allowSeconds);if(this._value!==n){let a=c(n,!0,this._allowSeconds);this._emitChangeEvent(a)&&(this._applyValue(n),this._selectInputText())}break}}_trySetActiveOption(){var t,e;!this._adapter.hasActiveOption()&&typeof((t=this._dropdownConfig)==null?void 0:t.visibleStartIndex)=="number"&&this._dropdownConfig.visibleStartIndex>=0&&this._adapter.activateOptionByIndex((e=this._dropdownConfig)==null?void 0:e.visibleStartIndex)}_selectActiveOption(){let t=this._adapter.getActiveOption();t&&this._onSelect(t.value)}_onToggleMousedown(t){this._disabled||!this.allowDropdown||(t.stopPropagation(),!this._adapter.isInputDisabled()&&(t.preventDefault(),this._open?this._closeDropdown(!0):(F.isMobile?this._adapter.tryBlurInput():this._adapter.tryFocusInput(),this._openDropdown())))}_onInputFocus(t){this._allowInput&&this._adapter.selectInputText()}_onInputBlur(t){this._formatInputValue(),this._open&&!this._adapter.isInputFocused()&&this._closeDropdown(!0)}_onInputMousedown(t){!this._allowInput&&!this._open&&(this._openDropdown(),this._adapter.tryFocusInput(),window.requestAnimationFrame(()=>this._adapter.selectInputText()))}_applyDisabled(){this._adapter.setDisabled(this._disabled)}_applyMask(){if(this._masked&&this._allowInput){let t={showMaskFormat:this._showMaskFormat,use24HourTime:this._use24HourTime,showSeconds:this._allowSeconds,prepareCallback:this._prepareMaskCallback,onChange:L(e=>this._handleInput(e),0,!0)};this._adapter.initializeMask(t)}else this._adapter.destroyMask(),this._formatInputValue()}_applyAllowInput(){this._adapter.setInputReadonly(!this._allowInput),this._allowInput?(this._adapter.removeInputListener("mousedown",this._inputMousedownListener),this._masked||this._adapter.addInputListener("input",this._inputListener)):(this._adapter.addInputListener("mousedown",this._inputMousedownListener),this._adapter.removeInputListener("input",this._inputListener))}_applyAllowDropdown(){this._adapter.setToggleDisabled(!this._allowDropdown),this._allowDropdown?(this._adapter.removeToggleListener("mousedown",this._toggleMousedownListener),this._adapter.tryCreateToggle(),this._adapter.addToggleListener("mousedown",this._toggleMousedownListener)):this._open&&this._closeDropdown(!0)}_applyAllowSeconds(){let t=this._value;if(this._allowSeconds){if(this._isInitialized&&t!==this._value){let e=c(this._value,!0,!0);this._emitChangeEvent(e)}}else{if(typeof this._value!="number")return;if(this._setValue(ct(this._value)),this._isInitialized&&t!==this._value){let e=c(this._value,!0,!1);this._emitChangeEvent(e)}}}_handleInput(t){let e=t;if(!this._allowInput)return;this._open&&this._closeDropdown(!0),t=j(t,this._use24HourTime,this._allowSeconds),typeof this._coercionCallback=="function"&&(t=this._coercionCallback.call(null,e,t,this._allowSeconds)),this._isValidTimeFormat(t)||(t="");let i;!this._masked&&typeof this._parseCallback=="function"?i=this._parseCallback.call(null,t):i=this._convertTimeStringToMillis(t,this._use24HourTime,this._allowSeconds),i=this._validateMillis(i),this._trySetValue(i)}_emitChangeEvent(t,e=!1){return this._adapter.emitHostEvent(s.events.CHANGE,t,!0,!e)}_trySetValue(t){if(t===this._value)return!1;let e=c(t,!0,this._allowSeconds);return this._adapter.emitInputEvent(s.events.INPUT,e),this._value!==t&&this._emitChangeEvent(e)?(this._setValue(t),!0):!1}_setValue(t){this._value=this._normalizeTimeValue(t)}_validateMillis(t){if(typeof t=="number"){let e=typeof this._min=="number"&&t<this._min,i=typeof this._max=="number"&&t>this._max;(e||i)&&(t=null)}return typeof t=="number"&&this._restrictedTimes.length&&this._restrictedTimes.includes(t)&&(t=null),t}_isValidTimeFormat(t){return!this._masked&&typeof this._validationCallback=="function"?this._validationCallback.call(this,t):Y(t)}_isValidInputValue(t){return b.test(t)}_onSelect(t){if(this._closeDropdown(!0),!t.isCustom&&t.metadata==="now"&&(t.time=S(this._allowSeconds)),t.isCustom)if(typeof t.customCallback=="function"){let n=t.customCallback.call(null,t.metadata);if(typeof n!="number")throw new Error("Custom options must provide a time of day value in milliseconds.");t.time=n}else throw new Error("You must implement a `toMilliseconds` callback that returns the time value to use for this custom option.");if(this._value===t.time)return;let e=c(t.time,!0,this._allowSeconds);this._emitChangeEvent(e)&&(this._applyValue(t.time),this._selectInputText())}_selectInputText(){window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{this._adapter.isInputFocused()&&this._adapter.selectInputText()})})}_applyValue(t,e=!0){this._setValue(t);let i=this._formatValue(this._value);this._adapter.getInputValue()!==i&&this._adapter.setInputValue(i,e)}_normalizeTimeValue(t){return t==null?null:t<0?0:t>s.numbers.MAX_DAY_MILLIS?s.numbers.MAX_DAY_MILLIS:t}_openDropdown(){let t=this._generateTimeOptions();if(!this.allowDropdown||!t.length)return;this._formatInputValue(),this._open=!0,this._adapter.setHostAttribute(s.attributes.OPEN);let e=t.filter(a=>!a.divider&&!a.disabled),i=[],n=0;if(t.length)if(this._value!=null){let a=this._findClosestOptionIndex(this._value,e);a>=0&&(e[a].value.time===this._value?i=[e[a].value]:n=a)}else if(typeof this._startTime=="number"){let a=this._findClosestOptionIndex(this._startTime,e);a>=0&&a<e.length&&(n=a)}else this._startTime==null&&(n=this._getOptionIndexClosestCurrent(e));this._dropdownConfig={id:`forge-time-picker-${this._identifier}`,selectedValues:i,syncWidth:!0,visibleStartIndex:n,popupClasses:this._popupClasses,popupStatic:!0,type:"standard",options:t,selectCallback:a=>this._onSelect(a),closeCallback:()=>this._closeDropdown(!0),activeChangeCallback:a=>this._adapter.setActiveDescendant(a),targetWidthCallback:()=>this._adapter.getTargetElementWidth(this._popupTarget)},this._adapter.attachDropdown(this._dropdownConfig),this._adapter.emitHostEvent(s.events.OPEN,void 0,!1)}_closeDropdown(t=!1){this._open=!1,this._dropdownConfig=void 0,this._adapter.removeHostAttribute(s.attributes.OPEN),this._adapter.detachDropdown(),t&&this._adapter.emitHostEvent(s.events.CLOSE,!0,!1)}_getOptionIndexClosestCurrent(t){let e=new Date,i=`${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`,n=v(i,!0,!1);return this._findClosestOptionIndex(n,t)}_findClosestOptionIndex(t,e){let i=e.reduce((n,a)=>Math.abs((a.value.time||0)-t)<Math.abs((n.value.time||0)-t)?a:n);return e.indexOf(i)}_formatInputValue(t=!0){let e=this._adapter.getInputValue();if(this._allowInvalidTime&&!this._masked&&e&&!this._value)return;let i=this._formatValue(this._value);e!==i&&(this._adapter.setInputValue(i,t),this._adapter.emitInputEvent(s.events.INPUT,i))}_generateTimeOptions(){let t=this._min!=null?Math.max(I(this._min),0):0,e=this._max!=null?Math.min(I(this._max),s.numbers.MAX_DAY_MINUTES):s.numbers.MAX_DAY_MINUTES,i=this._step,n=[],a=[];if(this._showHourOptions){for(let d=t;d<=e&&d!==s.numbers.MAX_DAY_MINUTES;d+=i){let _=T(d),_t=this._restrictedTimes.includes(_),ht=c(_,this._use24HourTime,!1)||"",bt={time:_};n.push({label:ht,value:bt,disabled:_t})}let r=n.findIndex(d=>d.value.time/1e3/60>=720);r>=0&&r<n.length-1&&n.splice(r,0,{label:"",value:null,divider:!0})}if(this._showNow){let r={time:null,metadata:"now"};a.push({label:"Now",value:r})}if(Array.isArray(this._customOptions)&&this._customOptions.length){let r=this._customOptions.map(d=>{let _={time:null,metadata:d.value,isCustom:!0,customCallback:d.toMilliseconds};return{label:d.label,value:_}});a=[...a,...r]}return a.length&&(n.length&&n.splice(0,0,{label:"",value:null,divider:!0}),a.forEach((r,d)=>n.splice(d,0,r))),n}_convertTimeStringToMillis(t,e,i){return(!t||!this._isValidTimeFormat(t))&&(t=""),v(t,e,i)}_formatValue(t){return!this._masked&&typeof this._formatCallback=="function"?this._formatCallback.call(null,t,this._use24HourTime,this._allowSeconds):c(this._value,this._use24HourTime,this._allowSeconds)||""}_warnInvalidFormat(t){console.warn(`The specified value "${t}" does not conform to the required format. The format is "HH:mm", "HH:mm:ss" where HH is 00-23, mm is 00-59, and ss is 00-59.`)}get open(){return this._open}set open(t){this._open!==t&&this._isInitialized&&(this._open=t,this._open?this._openDropdown():this._closeDropdown())}get masked(){return this._masked}set masked(t){this._masked!==t&&(this._masked=t,this._isInitialized&&(this._masked?(this._adapter.removeInputListener("input",this._inputListener),this._applyMask()):(this._adapter.destroyMask(),this._formatInputValue(),this._adapter.addInputListener("input",this._inputListener))))}get showMaskFormat(){return this._showMaskFormat}set showMaskFormat(t){this._showMaskFormat!==t&&(this._showMaskFormat=t,this._isInitialized&&this._applyMask())}get allowSeconds(){return this._allowSeconds}set allowSeconds(t){this._allowSeconds!==t&&(this._allowSeconds=!!t,this._applyAllowSeconds(),this._isInitialized&&(this._applyMask(),this._formatInputValue()),this._adapter.setHostAttribute(s.attributes.ALLOW_SECONDS,`${!!t}`))}get use24HourTime(){return this._use24HourTime}set use24HourTime(t){this._use24HourTime!==t&&(this._use24HourTime=!!t,this._isInitialized&&(this._adapter.destroyMask(),this._formatInputValue(),this._applyMask()),this._adapter.setHostAttribute(s.attributes.USE_24_HOUR_TIME,`${!!t}`))}get allowInvalidTime(){return this._allowInvalidTime}set allowInvalidTime(t){this._allowInvalidTime!==t&&(this._allowInvalidTime=!!t,this._adapter.setHostAttribute(s.attributes.ALLOW_INVALID_TIME,`${!!t}`))}get value(){return c(this._value,!0,this._allowSeconds)}set value(t){if(t&&!this._isValidInputValue(t)){this._warnInvalidFormat(t);return}let e=this._validateMillis(this._convertTimeStringToMillis(t,!0,!0));this._setValue(e),this._isInitialized&&this._applyValue(this._value)}get min(){return c(this._min,!0,this._allowSeconds)}set min(t){if(this._min!==t){if(t&&!this._isValidInputValue(t)){this._warnInvalidFormat(t);return}this._min=this._convertTimeStringToMillis(t,!0,this._allowSeconds);let e=this._validateMillis(this._value);this._setValue(e),this._isInitialized&&this._applyValue(e)}}get max(){return c(this._max,!0,this._allowSeconds)}set max(t){if(this._max!==t){if(t&&!this._isValidInputValue(t)){this._warnInvalidFormat(t);return}this._max=this._convertTimeStringToMillis(t,!0,this._allowSeconds);let e=this._validateMillis(this._value);this._setValue(e),this._isInitialized&&this._applyValue(e)}}get restrictedTimes(){return this._restrictedTimes.map(t=>c(t,!0,this._allowSeconds)).filter(t=>typeof t=="string")}set restrictedTimes(t){Array.isArray(t)||(t=[]),this._restrictedTimes=t.filter(e=>typeof e=="string").map(e=>this._convertTimeStringToMillis(e,!0,!0)).filter(e=>typeof e=="number")}get startTime(){return c(this._startTime,!0,this._allowSeconds)}set startTime(t){if(this._startTime!==t){if(t&&!this._isValidInputValue(t)){this._warnInvalidFormat(t);return}this._startTime=this._convertTimeStringToMillis(t,!0,this._allowSeconds)}}get step(){return this._step}set step(t){this._step=t}get allowInput(){return this._allowInput}set allowInput(t){this._allowInput!==t&&(this._allowInput=t,this._isInitialized&&(this._applyAllowInput(),this._applyMask()))}get popupTarget(){return this._popupTarget}set popupTarget(t){this._popupTarget!==t&&(this._popupTarget=t)}get showNow(){return this._showNow}set showNow(t){this._showNow!==t&&(this._showNow=t)}get showHourOptions(){return this._showHourOptions}set showHourOptions(t){this._showHourOptions!==t&&(this._showHourOptions=t)}get customOptions(){return this._customOptions}set customOptions(t){this._customOptions=Array.isArray(t)?t:[]}set validationCallback(t){this._validationCallback=t,this._isInitialized&&this._applyMask()}set parseCallback(t){this._parseCallback=t}set formatCallback(t){this._formatCallback=t}set coercionCallback(t){this._coercionCallback=t}set prepareMaskCallback(t){this._prepareMaskCallback=t,this._isInitialized&&this._applyMask()}get disabled(){return this._disabled}set disabled(t){this._disabled!==t&&(this._disabled=!!t,this._isInitialized&&this._applyDisabled(),this._adapter.toggleHostAttribute(s.attributes.DISABLED,this._disabled))}get popupClasses(){return Array.isArray(this._popupClasses)?[...this._popupClasses]:this._popupClasses}set popupClasses(t){Array.isArray(t)?this._popupClasses=[...t]:this._popupClasses=[t]}get allowDropdown(){return this._allowDropdown}set allowDropdown(t){this._allowDropdown!==t&&(this._allowDropdown=t,this._isInitialized&&this._applyAllowDropdown())}};var Tt="<template><slot></slot></template>",kt=":host{display:block}:host([hidden]){display:none}",l=class extends B{constructor(){super();Z.define([rt,K]),H(this,Tt,kt),this._foundation=new k(new g(this))}static get observedAttributes(){return[s.attributes.VALUE,s.attributes.OPEN,s.attributes.ALLOW_SECONDS,s.attributes.MASKED,s.attributes.SHOW_MASK_FORMAT,s.attributes.USE_24_HOUR_TIME,s.attributes.ALLOW_INVALID_TIME,s.attributes.MIN,s.attributes.MAX,s.attributes.START_TIME,s.attributes.STEP,s.attributes.ALLOW_INPUT,s.attributes.SHOW_NOW,s.attributes.SHOW_HOUR_OPTIONS,s.attributes.DISABLED,s.attributes.POPUP_CLASSES,s.attributes.ALLOW_DROPDOWN]}connectedCallback(){this.querySelector(s.selectors.INPUT)?this._foundation.initialize():A(this,s.selectors.INPUT).then(()=>this._foundation.initialize())}disconnectedCallback(){this._foundation.disconnect()}attributeChangedCallback(e,i,n){switch(e){case s.attributes.VALUE:this.value=n;break;case s.attributes.OPEN:this.open=m(n);break;case s.attributes.ALLOW_SECONDS:this.allowSeconds=m(n);break;case s.attributes.MASKED:this.masked=m(n);break;case s.attributes.SHOW_MASK_FORMAT:this.showMaskFormat=m(n);break;case s.attributes.USE_24_HOUR_TIME:this.use24HourTime=m(n);break;case s.attributes.ALLOW_INVALID_TIME:this.allowInvalidTime=m(n);break;case s.attributes.SHOW_NOW:this.showNow=m(n);break;case s.attributes.SHOW_HOUR_OPTIONS:this.showHourOptions=m(n);break;case s.attributes.MIN:this.min=n;break;case s.attributes.MAX:this.max=n;break;case s.attributes.START_TIME:this.startTime=n;break;case s.attributes.STEP:this.step=y(n);break;case s.attributes.ALLOW_INPUT:this.allowInput=m(n);break;case s.attributes.DISABLED:this.disabled=m(n);break;case s.attributes.POPUP_CLASSES:this.popupClasses=n;break;case s.attributes.ALLOW_DROPDOWN:this.allowDropdown=m(n);break}}};p([u()],l.prototype,"value",2),p([u()],l.prototype,"open",2),p([u()],l.prototype,"allowSeconds",2),p([u()],l.prototype,"masked",2),p([u()],l.prototype,"showMaskFormat",2),p([u()],l.prototype,"use24HourTime",2),p([u()],l.prototype,"allowInvalidTime",2),p([u()],l.prototype,"min",2),p([u()],l.prototype,"max",2),p([u()],l.prototype,"restrictedTimes",2),p([u()],l.prototype,"startTime",2),p([u()],l.prototype,"step",2),p([u()],l.prototype,"allowInput",2),p([u()],l.prototype,"showNow",2),p([u()],l.prototype,"showHourOptions",2),p([u()],l.prototype,"customOptions",2),p([u()],l.prototype,"validationCallback",2),p([u()],l.prototype,"parseCallback",2),p([u()],l.prototype,"formatCallback",2),p([u()],l.prototype,"coercionCallback",2),p([u()],l.prototype,"prepareMaskCallback",2),p([u()],l.prototype,"disabled",2),p([u()],l.prototype,"popupClasses",2),p([u()],l.prototype,"allowDropdown",2),p([u()],l.prototype,"popupTarget",2),l=p([R({name:s.elementName,dependencies:[et,tt,ot,E,it,E,at]})],l);var mt=class extends ${constructor(e){super(e)}_build(){let e=document.createElement(s.elementName);return this._attachTextField(e),e}get inputElement(){return this._textFieldDelegate.inputElement}get textFieldElement(){return this._textFieldDelegate.element}get value(){return this._element.value}set value(e){this._element.value=e}get disabled(){return this._element.disabled}set disabled(e){this._element.disabled=e}get invalid(){return this._textFieldDelegate.invalid||!1}set invalid(e){this._textFieldDelegate.invalid=e}onChange(e){this._element.addEventListener(s.events.CHANGE,i=>{var n;return e((n=i.detail)!=null?n:"")})}onInput(e){this._element.addEventListener(s.events.INPUT,i=>{var n;return e((n=i.detail)!=null?n:"")})}onFocus(e){this._textFieldDelegate.inputElement.addEventListener("focus",i=>e(i))}onBlur(e){this._textFieldDelegate.inputElement.addEventListener("blur",i=>e(i))}_attachTextField(e){var n,a,r,d;let i={props:w({},(a=(n=this._config.options)==null?void 0:n.textFieldDelegateConfig)==null?void 0:a.props),options:w({},(d=(r=this._config.options)==null?void 0:r.textFieldDelegateConfig)==null?void 0:d.options)};this._textFieldDelegate=new nt(i),e.appendChild(this._textFieldDelegate.element)}};function Ne(){N(l)}export{s as a,g as b,v as c,c as d,pt as e,ut as f,I as g,M as h,It as i,dt as j,T as k,O as l,ct as m,S as n,Rt as o,k as p,l as q,mt as r,Ne as s};
7
- //# sourceMappingURL=chunk.YMG4QDOY.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/time-picker/time-picker-constants.ts", "../../src/time-picker/time-picker-adapter.ts", "../../src/time-picker/time-picker-utils.ts", "../../src/time-picker/time-picker-foundation.ts", "../../src/time-picker/time-picker.ts", "../../src/time-picker/time-picker-component-delegate.ts", "../../src/time-picker/index.ts"],
4
- "sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\nimport { IListDropdownOption } from '../list-dropdown/list-dropdown-constants';\nimport IMask, { Masked, InputMask } from 'imask';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}time-picker`;\n\nconst attributes = {\n TOGGLE: 'forge-time-picker-toggle',\n VALUE: 'value',\n OPEN: 'open',\n ALLOW_SECONDS: 'allow-seconds',\n MASKED: 'masked',\n SHOW_MASK_FORMAT: 'show-mask-format',\n USE_24_HOUR_TIME: 'use-24-hour-time',\n ALLOW_INVALID_TIME: 'allow-invalid-time',\n MIN: 'min',\n MAX: 'max',\n START_TIME: 'start-time',\n STEP: 'step',\n ALLOW_INPUT: 'allow-input',\n SHOW_NOW: 'show-now',\n SHOW_HOUR_OPTIONS: 'show-hour-options',\n DISABLED: 'disabled',\n POPUP_CLASSES: 'popup-classes',\n ALLOW_DROPDOWN: 'allow-dropdown'\n};\n\nconst selectors = {\n INPUT: 'input, input[forge-time-picker-input]',\n TOGGLE: `[${attributes.TOGGLE}]`\n};\n\nconst events = {\n OPEN: `${elementName}-open`,\n CLOSE: `${elementName}-close`,\n INPUT: `${elementName}-input`,\n CHANGE: `${elementName}-change`\n};\n\nconst numbers = {\n DEFAULT_MINUTE_STEP: 60,\n MAX_DAY_MILLIS: 86400000,\n MAX_DAY_MINUTES: 1440\n};\n\nexport const TIME_PICKER_CONSTANTS = {\n elementName,\n attributes,\n selectors,\n events,\n numbers\n};\n\nexport type TimePickerValidationCallback = (time: string) => boolean;\nexport type TimePickerParseCallback = (time: string) => number | null;\nexport type TimePickerFormatCallback = (value: number | null) => string;\nexport type TimePickerCustomOptionCallback<T> = (value: T, use24HourTime: boolean, allowSeconds: boolean) => number;\nexport type TimePickerCoercionCallback = (rawValue: string, coercedValue: string, allowSeconds: boolean) => string;\nexport type TimePickerPrepareMaskCallback = (value: string, masked: Masked<string>, flags: IMask.AppendFlags, maskInstance: InputMask<IMask.AnyMaskedOptions>) => string;\n\nexport interface ITimePickerOption<T = any> extends IListDropdownOption<T> {\n toMilliseconds: TimePickerCustomOptionCallback<T>;\n}\nexport interface ITimePickerOptionValue {\n time: number | null;\n metadata?: any;\n isCustom?: boolean;\n customCallback?: TimePickerCustomOptionCallback<any>;\n}\n", "import { getShadowElement, emitEvent, getActiveElement, toggleAttribute } from '@tylertech/forge-core';\nimport { ITimePickerComponent } from './time-picker';\nimport { BaseAdapter } from '../core';\nimport { TIME_PICKER_CONSTANTS } from './time-picker-constants';\nimport { ITimeInputMaskOptions, TimeInputMask } from '../core/mask/time-input-mask';\nimport { TEXT_FIELD_CONSTANTS, ITextFieldComponent } from '../text-field';\nimport { ICON_BUTTON_CONSTANTS, IIconButtonComponent } from '../icon-button';\nimport { ICON_CONSTANTS, IIconComponent } from '../icon';\nimport { IListDropdownConfig, IListDropdownOption } from '../list-dropdown/list-dropdown-constants';\nimport { IListDropdown, ListDropdown } from '../list-dropdown';\n\nexport interface ITimePickerAdapter extends BaseAdapter<ITimePickerComponent> {\n initialize(): void;\n initializeMask(options: ITimeInputMaskOptions): void;\n destroy(): void;\n destroyMask(): void;\n initializeAccessibility(identifier: string): void;\n addInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void;\n removeInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void;\n addToggleListener(type: string, listener: (event: Event) => void): void;\n removeToggleListener(type: string, listener: (event: Event) => void): void;\n hasInputElement(): boolean;\n tryCreateToggle(): void;\n tryFocusInput(): void;\n tryBlurInput(): void;\n selectInputText(): void;\n getInputValue(): string;\n setInputValue(value: string, emitEvents: boolean): void;\n isInputDisabled(): boolean;\n isInputFocused(): boolean;\n setDisabled(isDisabled: boolean): void;\n attachDropdown(config: IListDropdownConfig): void;\n detachDropdown(): void;\n setActiveDescendant(id: string): void;\n propagateKey(key: string): void;\n getTargetElementWidth(selector: string): number;\n emitInputEvent(type: string, data?: any): void;\n setInputReadonly(value: boolean): void;\n setToggleDisabled(value: boolean): void;\n hasActiveOption(): boolean;\n activateOptionByIndex(index: number): void;\n activateFirstOption(): void;\n getActiveOption(): IListDropdownOption | undefined;\n}\n\nexport class TimePickerAdapter extends BaseAdapter<ITimePickerComponent> implements ITimePickerAdapter {\n private _inputElement: HTMLInputElement;\n private _toggleElement?: HTMLElement;\n private _inputMask?: TimeInputMask;\n private _listDropdown?: IListDropdown;\n private _targetElement?: HTMLElement;\n\n constructor(component: ITimePickerComponent) {\n super(component);\n }\n\n public initialize(): void {\n this._inputElement = this._component.querySelector(TIME_PICKER_CONSTANTS.selectors.INPUT) as HTMLInputElement;\n }\n\n public initializeMask(options: ITimeInputMaskOptions): void {\n if (this._inputMask) {\n this._inputMask.destroy();\n }\n this._inputMask = new TimeInputMask(this._inputElement, options);\n }\n\n public destroy(): void {\n this._targetElement = undefined;\n this._toggleElement = undefined as any;\n this._inputElement = undefined as any;\n }\n\n public destroyMask(): void {\n if (this._inputMask) {\n this._inputMask.destroy();\n this._inputMask = undefined;\n }\n }\n\n public initializeAccessibility(identifier: string): void {\n this._inputElement.setAttribute('autocomplete', 'off');\n this._inputElement.setAttribute('autocorrect', 'off');\n this._inputElement.setAttribute('autocapitalize', 'off');\n this._inputElement.setAttribute('spellcheck', 'false');\n this._inputElement.setAttribute('role', 'combobox');\n this._inputElement.setAttribute('aria-live', 'assertive');\n this._inputElement.setAttribute('aria-atomic', 'true');\n this._inputElement.setAttribute('aria-haspopup', 'true');\n this._inputElement.setAttribute('aria-expanded', 'false');\n }\n\n public addInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void {\n this._inputElement.addEventListener(type, listener, { capture });\n }\n\n public removeInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void {\n if (this._inputElement) {\n this._inputElement.removeEventListener(type, listener, { capture });\n }\n }\n\n public addToggleListener(type: string, listener: (event: Event) => void): void {\n if (this._toggleElement) {\n this._toggleElement.addEventListener(type, listener);\n }\n }\n\n public removeToggleListener(type: string, listener: (event: Event) => void): void {\n if (this._toggleElement) {\n this._toggleElement.removeEventListener(type, listener);\n }\n }\n\n public hasInputElement(): boolean {\n return !!this._inputElement;\n }\n\n public tryCreateToggle(): void {\n const textField = this._component.querySelector(TEXT_FIELD_CONSTANTS.elementName) as ITextFieldComponent;\n const toggleElement = this._component.querySelector(TIME_PICKER_CONSTANTS.selectors.TOGGLE);\n if (textField) {\n const existingIconButton = textField.querySelector(`${ICON_BUTTON_CONSTANTS.elementName}[slot=trailing]`);\n if (existingIconButton || toggleElement) {\n this._toggleElement = (existingIconButton || toggleElement) as IIconButtonComponent;\n return;\n }\n\n const iconButtonElement = document.createElement(ICON_BUTTON_CONSTANTS.elementName) as IIconButtonComponent;\n iconButtonElement.slot = 'trailing';\n iconButtonElement.dense = true;\n iconButtonElement.densityLevel = 3;\n iconButtonElement.style.marginRight = '4px'; // Override default trailing slot margin in text-field\n\n const buttonElement = document.createElement('button');\n buttonElement.type = 'button';\n buttonElement.tabIndex = -1;\n buttonElement.setAttribute('aria-label', 'Toggle time dropdown');\n\n const iconElement = document.createElement(ICON_CONSTANTS.elementName) as IIconComponent;\n iconElement.name = 'clock_outline';\n buttonElement.appendChild(iconElement);\n iconButtonElement.appendChild(buttonElement);\n\n textField.appendChild(iconButtonElement);\n this._toggleElement = iconButtonElement;\n } else if (toggleElement) {\n this._toggleElement = toggleElement as HTMLElement;\n }\n }\n\n public tryFocusInput(): void {\n this._inputElement.select();\n }\n\n public tryBlurInput(): void {\n this._inputElement.blur();\n }\n\n public selectInputText(): void {\n this._inputElement.select();\n }\n\n public isInputDisabled(): boolean {\n return this._inputElement.disabled;\n }\n\n public isInputFocused(): boolean {\n return getActiveElement() === this._inputElement;\n }\n\n public setInputValue(value: string, emitEvents: boolean): void {\n if (this._inputElement.value === value) {\n return;\n }\n\n this._inputElement.value = value;\n\n if (this._inputMask) {\n this._inputMask.update();\n }\n\n if (emitEvents) {\n this._emitInputEvent('change');\n this._emitInputEvent('input');\n }\n }\n\n public getInputValue(): string {\n return this._inputMask ? this._inputMask.maskedValue : this._inputElement.value;\n }\n\n public setDisabled(isDisabled: boolean): void {\n this._inputElement.disabled = isDisabled;\n this._inputElement.setAttribute('aria-disabled', isDisabled.toString());\n this.setToggleDisabled(isDisabled);\n }\n\n public attachDropdown(config: IListDropdownConfig): void {\n this._listDropdown = new ListDropdown(this._inputElement, config);\n this._listDropdown.open();\n this._inputElement.setAttribute('aria-controls', `list-dropdown-popup-${config.id}`);\n }\n \n public detachDropdown(): void {\n if (this._listDropdown) {\n this._listDropdown.close();\n this._listDropdown.destroy();\n this._listDropdown = undefined;\n }\n this._inputElement.removeAttribute('aria-controls');\n }\n\n public propagateKey(key: string): void {\n this._listDropdown?.handleKey(key);\n }\n\n public setActiveDescendant(id: string): void {\n toggleAttribute(this._inputElement, !!id, 'aria-activedescendant', id);\n }\n\n public getTargetElementWidth(selector: string): number {\n const targetElement = this._getTargetElement(selector);\n return targetElement.getBoundingClientRect().width;\n }\n\n private _emitInputEvent(type: string): void {\n this._inputElement.dispatchEvent(new Event(type));\n }\n\n public emitInputEvent(type: string, data?: any): void {\n emitEvent(this._inputElement, type, data);\n }\n\n public setInputReadonly(value: boolean): void {\n this._inputElement.readOnly = value;\n }\n\n public setToggleDisabled(value: boolean): void {\n if (this._toggleElement) {\n this._toggleElement.setAttribute('aria-disabled', value.toString());\n if ('disabled' in this._toggleElement) {\n (this._toggleElement as HTMLButtonElement).disabled = value;\n } else {\n const button = this._toggleElement.querySelector('button') as HTMLButtonElement;\n if (button) {\n button.disabled = value;\n }\n }\n }\n }\n\n public hasActiveOption(): boolean {\n return (this._listDropdown?.getActiveOptionIndex() ?? -1) >= 0;\n }\n\n public activateOptionByIndex(index: number): void {\n this._listDropdown?.activateOption(index);\n }\n\n public activateFirstOption(): void {\n this._listDropdown?.activateFirstOption();\n }\n\n public getActiveOption(): IListDropdownOption | undefined {\n return this._listDropdown?.getActiveOption();\n }\n\n private _getTargetElement(selector?: string): HTMLElement {\n if (this._targetElement) {\n return this._targetElement;\n }\n this._targetElement = selector ? this._component.querySelector(selector) as HTMLElement || this._getDefaultTargetElement() : this._getDefaultTargetElement();\n return this._targetElement;\n }\n\n private _getDefaultTargetElement(): HTMLElement {\n // This component is often used with the text-field, if so, let's target our popup around one if its internal elements for proper alignnment\n const textField = this._component.querySelector(TEXT_FIELD_CONSTANTS.elementName) as HTMLElement;\n if (textField && textField.shadowRoot) {\n const textFieldRoot = getShadowElement(textField, TEXT_FIELD_CONSTANTS.selectors.ROOT) as HTMLElement;\n if (textFieldRoot) {\n return textFieldRoot;\n }\n }\n return this._component; // Otherwise we just use the time-picker host as the target\n }\n}\n", "import { tokenize24HourTimeString, tokenize12HourTimeString, TWENTY_FOUR_HOUR_TIME_REGEX, TWELVE_HOUR_TIME_REGEX } from '../core/utils/time-utils';\n\nexport function timeStringToMillis(time: string | null, use24HourTime: boolean, allowSeconds: boolean): number | null {\n if (!time || /^\\s*$/.test(time)) {\n return null;\n }\n\n let hours = 0;\n let minutes = 0;\n let seconds = 0;\n\n if (TWENTY_FOUR_HOUR_TIME_REGEX.test(time)) {\n const tokens = tokenize24HourTimeString(time);\n hours = +tokens.hours || 0;\n minutes = +tokens.minutes || 0;\n seconds = +tokens.seconds || 0;\n } else if (TWELVE_HOUR_TIME_REGEX.test(time)) {\n const tokens = tokenize12HourTimeString(time);\n hours = +tokens.hours || 0;\n minutes = +tokens.minutes || 0;\n seconds = +tokens.seconds || 0;\n if (hours === 12 && tokens.meridiem === 'AM') {\n hours = 0;\n }\n if (hours < 12 && tokens.meridiem === 'PM') {\n hours += 12;\n }\n } else {\n return null;\n }\n\n return hoursToMillis(hours) + minutesToMillis(minutes) + (allowSeconds ? secondsToMillis(seconds) : 0);\n}\n\nexport function millisToTimeString(value: number | null | undefined, use24HourTime: boolean, allowSeconds: boolean): string | null {\n if (typeof value !== 'number' || value < 0) {\n return null;\n }\n\n let hours = Math.min(millisToHours(value), 23);\n const minutes = Math.min(millisToMinutesClamped(value), 59);\n const totalMinutes = value / (1000 * 60);\n const meridiem = totalMinutes < 720 ? 'AM' : 'PM';\n\n if (!use24HourTime) {\n hours = hours <= 12 ? hours : hours - 12;\n if (hours === 0) {\n hours = 12;\n }\n }\n\n let time = `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`;\n\n if (allowSeconds) {\n const seconds = Math.min(millisToSecondsClamped(value), 59);\n time += `:${String(seconds).padStart(2, '0')}`;\n }\n\n if (!use24HourTime) {\n time += ` ${meridiem}`;\n }\n\n return time;\n}\n\nexport function millisToHours(millis: number): number {\n return Math.abs(Math.floor(millis / (1000 * 60 * 60)));\n}\n\nexport function millisToMinutesClamped(millis: number): number {\n return Math.abs(Math.floor(millisToMinutes(millis) % 60));\n}\n\nexport function millisToMinutes(millis: number): number {\n return millis / (1000 * 60);\n}\n\nexport function millisToSecondsClamped(millis: number): number {\n return Math.abs(Math.floor(millisToSeconds(millis) % 60));\n}\n\nexport function millisToSeconds(millis: number): number {\n return millis / 1000;\n}\n\nexport function hoursToMillis(hours: number): number {\n return hours * 60 * 60 * 1000;\n}\n\nexport function minutesToMillis(minutes: number): number {\n return minutes * 60 * 1000;\n}\n\nexport function secondsToMillis(seconds: number): number {\n return seconds * 1000;\n}\n\nexport function stripSecondsFromMillis(millis: number): number {\n return millis - secondsToMillis(millisToSecondsClamped(millis));\n}\n\nexport function getCurrentTimeOfDayMillis(allowSeconds: boolean): number {\n const date = new Date();\n const hours = date.getHours();\n const minutes = date.getMinutes();\n return hoursToMillis(hours) + minutesToMillis(minutes) + (allowSeconds ? secondsToMillis(date.getSeconds()) : 0);\n}\n\n/**\n * Combines a `Date` object with a 24-hour time string from the time-picker component.\n * @param date The `Date` object to adjust.\n * @param time The 24-hour time string.\n * @param useSeconds If your 24-hour time string contains seconds, set this to `true`.\n * @returns The same `Date` object that was provided, with the newly adjusted time.\n */\nexport function mergeDateWithTime(date: Date, time: string, useSeconds = false): Date {\n if (!date) {\n date = new Date();\n }\n\n const millis = timeStringToMillis(time, true, useSeconds);\n if (!millis) {\n date.setHours(0, 0, 0);\n return date;\n }\n\n let hours = millisToHours(millis);\n \n const twentyThreeHoursInMillis = 82800000;\n if (hours > twentyThreeHoursInMillis) {\n hours = twentyThreeHoursInMillis;\n } else if (hours < 0) {\n hours = 0;\n }\n\n const minutes = millisToMinutesClamped(millis);\n const seconds = useSeconds ? millisToSecondsClamped(millis) : 0;\n date.setHours(hours, minutes, seconds);\n\n return date;\n}\n", "import { ICustomElementFoundation, Platform, debounce, randomChars } from '@tylertech/forge-core';\nimport { ITimePickerAdapter } from './time-picker-adapter';\nimport { ITimeInputMaskOptions } from '../core/mask/time-input-mask';\nimport { isSupportedTimeFormat, TWENTY_FOUR_HOUR_TIME_REGEX, tryCoerceTimeString } from '../core/utils/time-utils';\nimport {\n TIME_PICKER_CONSTANTS,\n ITimePickerOptionValue,\n ITimePickerOption,\n TimePickerValidationCallback,\n TimePickerParseCallback,\n TimePickerFormatCallback,\n TimePickerCoercionCallback,\n TimePickerPrepareMaskCallback\n} from './time-picker-constants';\nimport { IListDropdownConfig, ListDropdownType, IListDropdownOption } from '../list-dropdown/list-dropdown-constants';\nimport { timeStringToMillis, millisToTimeString, minutesToMillis, getCurrentTimeOfDayMillis, millisToMinutes, stripSecondsFromMillis } from './time-picker-utils';\n\nexport interface ITimePickerFoundation extends ICustomElementFoundation {\n value: string | null | undefined;\n open: boolean;\n allowSeconds: boolean;\n masked: boolean;\n showMaskFormat: boolean;\n use24HourTime: boolean;\n allowInvalidTime: boolean;\n min: string | null | undefined;\n max: string | null | undefined;\n restrictedTimes: string[];\n startTime: string | null | undefined;\n step: number;\n allowInput: boolean;\n showNow: boolean;\n showHourOptions: boolean;\n customOptions: ITimePickerOption[];\n validationCallback: TimePickerValidationCallback;\n parseCallback: TimePickerParseCallback;\n formatCallback: TimePickerFormatCallback;\n coercionCallback: TimePickerCoercionCallback;\n prepareMaskCallback: TimePickerPrepareMaskCallback;\n disabled: boolean;\n popupClasses: string | string[];\n allowDropdown: boolean;\n}\n\nexport class TimePickerFoundation implements ITimePickerFoundation {\n // State vars\n private _value?: number | null = null;\n private _masked = true;\n private _use24HourTime = false;\n private _showMaskFormat = false;\n private _min?: number | null = null;\n private _max?: number | null = null;\n private _restrictedTimes: number[] = [];\n private _startTime?: number | null = null;\n private _step = TIME_PICKER_CONSTANTS.numbers.DEFAULT_MINUTE_STEP;\n private _allowInput = true;\n private _identifier: string;\n private _open = false;\n private _allowSeconds = false;\n private _allowInvalidTime = false;\n private _popupTarget: string;\n private _showNow = false;\n private _showHourOptions = true;\n private _customOptions: ITimePickerOption[] = [];\n private _validationCallback: TimePickerValidationCallback;\n private _parseCallback: TimePickerParseCallback;\n private _formatCallback: TimePickerFormatCallback;\n private _coercionCallback: TimePickerCoercionCallback;\n private _prepareMaskCallback: TimePickerPrepareMaskCallback;\n private _disabled = false;\n private _popupClasses: string[] = [];\n private _allowDropdown = true;\n \n // Internal state vars\n private _isInitialized = false;\n private _dropdownConfig: IListDropdownConfig<ITimePickerOptionValue> | undefined;\n\n // Listeners\n private _inputListener: (evt: Event) => void;\n private _inputKeydownListener: (evt: KeyboardEvent) => void;\n private _toggleMousedownListener: (evt: MouseEvent) => void;\n private _inputFocusListener: (evt: Event) => void;\n private _inputBlurListener: (evt: Event) => void;\n private _inputMousedownListener: (evt: MouseEvent) => void;\n \n constructor(private _adapter: ITimePickerAdapter) {\n this._identifier = randomChars(); // This is a unique identifier for this instance of the time picker (used for a11y purposes)\n\n // Set up listeners\n this._inputListener = evt => this._onInput(evt);\n this._inputKeydownListener = evt => this._onInputKeydown(evt);\n this._toggleMousedownListener = evt => this._onToggleMousedown(evt);\n this._inputFocusListener = evt => this._onInputFocus(evt);\n this._inputBlurListener = evt => this._onInputBlur(evt);\n this._inputMousedownListener = evt => this._onInputMousedown(evt);\n }\n\n public initialize(): void {\n this._adapter.initialize();\n \n // We require an input element to be a child of this component\n if (!this._adapter.hasInputElement()) {\n throw new Error('Unable to locate <input> element to attach to.');\n }\n\n this._adapter.initializeAccessibility(this._identifier);\n\n // Detect if a value already exists in the input and set our values based on that\n if (!this._value) {\n const inputValue = this._adapter.getInputValue();\n this._setValue(this._convertTimeStringToMillis(inputValue, this._use24HourTime, this._allowSeconds));\n }\n\n // Attach required listeners\n this._adapter.addInputListener('focus', this._inputFocusListener);\n this._adapter.addInputListener('blur', this._inputBlurListener);\n this._adapter.addInputListener('keydown', this._inputKeydownListener, true);\n\n // Ensure our input has the correct time format (make sure not to emit input events manually at this point)\n this._formatInputValue(false);\n\n // Apply our state\n if (typeof this._value === 'number') {\n this._applyValue(this._value, false);\n }\n this._applyAllowInput();\n this._applyAllowDropdown();\n this._applyDisabled();\n this._applyMask();\n\n this._isInitialized = true;\n }\n\n public disconnect(): void {\n this._isInitialized = false;\n\n // Remove listeners\n this._adapter.removeInputListener('input', this._inputListener);\n this._adapter.removeInputListener('focus', this._inputFocusListener);\n this._adapter.removeInputListener('blur', this._inputBlurListener);\n this._adapter.removeToggleListener('mousedown', this._toggleMousedownListener);\n this._adapter.removeInputListener('keydown', this._inputKeydownListener, true);\n\n // If we are using an input mask, let's destroy that now\n if (this._masked) {\n this._adapter.destroyMask();\n }\n\n // Ensure we remove our dropdown\n this._closeDropdown();\n\n // Cleanup any resources used in the adapter\n this._adapter.destroy();\n }\n\n /** Called when the input mask changes or the `input` event occurs on our `<input>` element. */\n private _onInput(evt: Event): void {\n this._handleInput(this._adapter.getInputValue());\n }\n\n private _onInputKeydown(evt: KeyboardEvent): void {\n if (evt.shiftKey) {\n switch (evt.code) {\n case 'Backspace':\n case 'Delete':\n evt.preventDefault();\n const result = this._trySetValue(null);\n if (result) {\n this._formatInputValue();\n }\n return;\n }\n }\n\n switch (evt.code) {\n case 'Tab':\n if (this._open) {\n this._selectActiveOption();\n }\n break;\n case 'Esc':\n case 'Escape':\n if (this._open) {\n evt.preventDefault();\n evt.stopPropagation();\n this._closeDropdown(true);\n }\n break;\n case 'Down':\n case 'ArrowDown':\n if (this._allowDropdown) {\n evt.preventDefault();\n if (!this._open) {\n this._openDropdown();\n if (typeof this._dropdownConfig?.visibleStartIndex === 'number' && this._dropdownConfig.visibleStartIndex >= 0) {\n this._adapter.activateOptionByIndex(this._dropdownConfig?.visibleStartIndex);\n } else {\n this._adapter.activateFirstOption();\n }\n // TODO: Should we cycle the hours, minutes, seconds, or meridiem where the cursor is instead of opening the dropdown?\n } else {\n if (!this._adapter.hasActiveOption()) {\n this._trySetActiveOption();\n } else {\n this._adapter.propagateKey(evt.code);\n }\n }\n }\n break;\n case 'ArrowUp':\n if (this._allowDropdown) {\n evt.preventDefault();\n if (this._open) {\n if (!this._adapter.hasActiveOption()) {\n this._trySetActiveOption();\n } else {\n this._adapter.propagateKey(evt.code);\n }\n } else {\n // TODO: cycle the hours, minutes, seconds, or meridiem where the cursor is\n }\n }\n break;\n case 'Enter':\n case 'NumpadEnter':\n case 'Home':\n case 'End':\n if (this._open) {\n if (evt.code === 'Enter' || evt.code === 'NumpadEnter') {\n evt.stopPropagation();\n }\n evt.preventDefault();\n this._adapter.propagateKey(evt.code);\n }\n break;\n case 'KeyN':\n evt.preventDefault();\n const nowMillis = getCurrentTimeOfDayMillis(this._allowSeconds);\n if (this._value !== nowMillis) {\n const timeString = millisToTimeString(nowMillis, true, this._allowSeconds);\n const canContinue = this._emitChangeEvent(timeString);\n if (canContinue) {\n this._applyValue(nowMillis);\n this._selectInputText();\n }\n }\n break;\n }\n }\n\n private _trySetActiveOption(): void {\n if (!this._adapter.hasActiveOption() && typeof this._dropdownConfig?.visibleStartIndex === 'number' && this._dropdownConfig.visibleStartIndex >= 0) {\n this._adapter.activateOptionByIndex(this._dropdownConfig?.visibleStartIndex);\n }\n }\n\n private _selectActiveOption(): void {\n const activeOption = this._adapter.getActiveOption();\n if (activeOption) {\n this._onSelect(activeOption.value);\n }\n }\n\n private _onToggleMousedown(evt: Event): void {\n if (this._disabled || !this.allowDropdown) {\n return;\n }\n\n evt.stopPropagation();\n\n if (this._adapter.isInputDisabled()) {\n return;\n }\n\n evt.preventDefault();\n\n if (this._open) {\n this._closeDropdown(true);\n } else {\n if (!Platform.isMobile) {\n this._adapter.tryFocusInput();\n } else {\n this._adapter.tryBlurInput();\n }\n this._openDropdown();\n }\n }\n\n private _onInputFocus(evt: Event): void {\n if (this._allowInput) {\n this._adapter.selectInputText();\n }\n }\n\n private _onInputBlur(evt: Event): void {\n this._formatInputValue();\n if (this._open && !this._adapter.isInputFocused()) {\n this._closeDropdown(true);\n }\n }\n\n private _onInputMousedown(evt: MouseEvent): void {\n if (!this._allowInput && !this._open) {\n this._openDropdown();\n this._adapter.tryFocusInput();\n window.requestAnimationFrame(() => this._adapter.selectInputText());\n }\n }\n\n private _applyDisabled(): void {\n this._adapter.setDisabled(this._disabled);\n }\n\n private _applyMask(): void {\n if (this._masked && this._allowInput) {\n const options: ITimeInputMaskOptions = {\n showMaskFormat: this._showMaskFormat,\n use24HourTime: this._use24HourTime,\n showSeconds: this._allowSeconds,\n prepareCallback: this._prepareMaskCallback,\n onChange: debounce((value: string) => this._handleInput(value), 0, true) // debounce this to avoid multiple callbacks for same value\n };\n this._adapter.initializeMask(options);\n } else {\n this._adapter.destroyMask();\n this._formatInputValue();\n }\n }\n\n private _applyAllowInput(): void {\n this._adapter.setInputReadonly(!this._allowInput);\n if (this._allowInput) {\n this._adapter.removeInputListener('mousedown', this._inputMousedownListener);\n // If not using an input mask we need to attach our own `input` listener, otherwise\n // we use the mask to notify us of changes\n if (!this._masked) {\n this._adapter.addInputListener('input', this._inputListener);\n }\n } else {\n this._adapter.addInputListener('mousedown', this._inputMousedownListener);\n this._adapter.removeInputListener('input', this._inputListener);\n }\n }\n\n private _applyAllowDropdown(): void {\n this._adapter.setToggleDisabled(!this._allowDropdown);\n if (this._allowDropdown) {\n this._adapter.removeToggleListener('mousedown', this._toggleMousedownListener);\n this._adapter.tryCreateToggle();\n this._adapter.addToggleListener('mousedown', this._toggleMousedownListener);\n } else if (this._open) {\n this._closeDropdown(true);\n }\n }\n\n private _applyAllowSeconds(): void {\n const originalValue = this._value;\n if (!this._allowSeconds) {\n // If we are not using seconds, we need to remove our seconds from the value\n if (typeof this._value !== 'number') {\n return;\n }\n\n this._setValue(stripSecondsFromMillis(this._value));\n\n if (this._isInitialized && originalValue !== this._value) {\n // We need to emit a change event with our new value which does not include the seconds\n const timeString = millisToTimeString(this._value, true, false);\n this._emitChangeEvent(timeString);\n }\n } else if (this._isInitialized && originalValue !== this._value) {\n // We need to emit a change event with our new value which includes the seconds\n const timeString = millisToTimeString(this._value, true, true);\n this._emitChangeEvent(timeString);\n }\n }\n\n private _handleInput(value: string): void {\n const rawValue = value;\n\n if (!this._allowInput) {\n return;\n }\n\n if (this._open) {\n this._closeDropdown(true);\n }\n\n // Let's attempt to coerce our time string into a known format to help with ease of entry\n value = tryCoerceTimeString(value, this._use24HourTime, this._allowSeconds);\n\n // If we were provided a custom coercion callback then we need to call that now to perform any further coercion by the consumer\n if (typeof this._coercionCallback === 'function') {\n value = this._coercionCallback.call(null, rawValue, value, this._allowSeconds);\n }\n\n // Validate the time format and make sure it's supported\n if (!this._isValidTimeFormat(value)) {\n value = '';\n }\n\n // Convert the time string to milliseconds\n let millis: number | null | undefined;\n if (!this._masked && typeof this._parseCallback === 'function') {\n millis = this._parseCallback.call(null, value);\n } else {\n millis = this._convertTimeStringToMillis(value, this._use24HourTime, this._allowSeconds);\n }\n\n // Validate that our time can be chosen as a valid value\n millis = this._validateMillis(millis);\n\n // Update our value\n this._trySetValue(millis);\n }\n\n private _emitChangeEvent(value: string | null, force = false): boolean {\n return this._adapter.emitHostEvent(TIME_PICKER_CONSTANTS.events.CHANGE, value, true, !force);\n }\n\n private _trySetValue(millis: number | null | undefined): boolean {\n // If our value hasn't changed, we can just return\n if (millis === this._value) {\n return false;\n }\n\n // Convert our milliseconds to a 24-hour time string to use as our normalized value\n const timeString = millisToTimeString(millis, true, this._allowSeconds);\n\n // Dispatch our custom input event to let consumers know raw input occurred (before our change event)\n this._adapter.emitInputEvent(TIME_PICKER_CONSTANTS.events.INPUT, timeString);\n\n // Only emit our change event if the value is different\n if (this._value !== millis) {\n const canContinue = this._emitChangeEvent(timeString);\n if (canContinue) {\n this._setValue(millis);\n return true;\n }\n }\n\n return false;\n }\n\n private _setValue(value: number | null | undefined): void {\n this._value = this._normalizeTimeValue(value);\n }\n\n private _validateMillis(millis: number | null | undefined): number | null | undefined {\n // Trap for min/max validation\n if (typeof millis === 'number') {\n const isBelowMin = typeof this._min === 'number' && millis < this._min;\n const isAboveMax = typeof this._max === 'number' && millis > this._max;\n if (isBelowMin || isAboveMax) {\n millis = null;\n }\n }\n \n // Trap for restricted times\n if (typeof millis === 'number' && this._restrictedTimes.length) {\n if (this._restrictedTimes.includes(millis)) {\n millis = null;\n }\n }\n\n return millis;\n }\n\n private _isValidTimeFormat(value: string): boolean {\n if (!this._masked && typeof this._validationCallback === 'function') {\n return this._validationCallback.call(this, value);\n }\n return isSupportedTimeFormat(value);\n }\n\n private _isValidInputValue(value: string): boolean {\n return TWENTY_FOUR_HOUR_TIME_REGEX.test(value);\n }\n\n private _onSelect(value: ITimePickerOptionValue): void {\n this._closeDropdown(true);\n\n // Check if the \"Now\" option was selected\n if (!value.isCustom && value.metadata === 'now') {\n value.time = getCurrentTimeOfDayMillis(this._allowSeconds);\n }\n\n // Check if this is a custom option, and then call the provided callback for it\n if (value.isCustom) {\n if (typeof value.customCallback === 'function') {\n const result = value.customCallback.call(null, value.metadata);\n if (typeof result !== 'number') {\n throw new Error('Custom options must provide a time of day value in milliseconds.');\n }\n value.time = result;\n } else {\n throw new Error('You must implement a `toMilliseconds` callback that returns the time value to use for this custom option.');\n }\n }\n\n // Make sure the time is different than what is already populated or we can just return\n if (this._value === value.time) {\n return;\n }\n\n // Emit the change event\n const timeString = millisToTimeString(value.time, true, this._allowSeconds);\n const canContinue = this._emitChangeEvent(timeString);\n if (!canContinue) {\n return;\n }\n\n // This will update our state and the UI at once\n this._applyValue(value.time);\n\n // Select full input text\n this._selectInputText();\n }\n\n private _selectInputText(): void {\n // We need to select the text of the input in the next cycle to allow time for the UI to update\n // with the selected text (assuming it still has focus)\n window.requestAnimationFrame(() => {\n window.requestAnimationFrame(() => {\n if (this._adapter.isInputFocused()) {\n this._adapter.selectInputText();\n }\n });\n });\n }\n\n private _applyValue(value: number | null | undefined, emitEvents = true): void {\n this._setValue(value);\n const formattedValue = this._formatValue(this._value);\n if (this._adapter.getInputValue() !== formattedValue) {\n this._adapter.setInputValue(formattedValue, emitEvents);\n }\n }\n\n private _normalizeTimeValue(value: number | null | undefined): number | null {\n if (value == null) {\n return null;\n } else if (value < 0) {\n return 0;\n } else if (value > TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MILLIS) {\n return TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MILLIS;\n }\n return value;\n }\n\n private _openDropdown(): void {\n const options = this._generateTimeOptions();\n\n if (!this.allowDropdown || !options.length) {\n return;\n }\n \n this._formatInputValue();\n this._open = true;\n this._adapter.setHostAttribute(TIME_PICKER_CONSTANTS.attributes.OPEN);\n \n const selectableOptions = options.filter(o => !o.divider && !o.disabled);\n let selectedValues: ITimePickerOptionValue[] = [];\n let visibleStartIndex = 0;\n \n // Find closest match in list of time options and activate/select it\n if (options.length) {\n if (this._value != null) {\n const optionIndex = this._findClosestOptionIndex(this._value, selectableOptions);\n if (optionIndex >= 0) {\n const isExactMatch = selectableOptions[optionIndex].value.time === this._value;\n if (isExactMatch) {\n selectedValues = [selectableOptions[optionIndex].value];\n } else {\n visibleStartIndex = optionIndex;\n }\n }\n } else if (typeof this._startTime === 'number') {\n const optionIndex = this._findClosestOptionIndex(this._startTime, selectableOptions);\n if (optionIndex >= 0 && optionIndex < selectableOptions.length) {\n visibleStartIndex = optionIndex;\n }\n } else if (this._startTime == null) {\n // If we don't have a start time set then let's scroll the closest time to current time into view\n visibleStartIndex = this._getOptionIndexClosestCurrent(selectableOptions);\n }\n }\n\n this._dropdownConfig = {\n id: `forge-time-picker-${this._identifier}`,\n selectedValues,\n syncWidth: true,\n visibleStartIndex,\n popupClasses: this._popupClasses,\n popupStatic: true,\n type: ListDropdownType.Standard,\n options,\n selectCallback: value => this._onSelect(value),\n closeCallback: () => this._closeDropdown(true),\n activeChangeCallback: id => this._adapter.setActiveDescendant(id),\n targetWidthCallback: () => this._adapter.getTargetElementWidth(this._popupTarget)\n };\n this._adapter.attachDropdown(this._dropdownConfig);\n this._adapter.emitHostEvent(TIME_PICKER_CONSTANTS.events.OPEN, undefined, false);\n }\n\n private _closeDropdown(emitCloseEvent = false): void {\n this._open = false;\n this._dropdownConfig = undefined;\n this._adapter.removeHostAttribute(TIME_PICKER_CONSTANTS.attributes.OPEN);\n this._adapter.detachDropdown();\n if (emitCloseEvent) {\n this._adapter.emitHostEvent(TIME_PICKER_CONSTANTS.events.CLOSE, true, false);\n }\n }\n\n private _getOptionIndexClosestCurrent(options: IListDropdownOption<ITimePickerOptionValue>[]): number {\n const date = new Date();\n const currentTimeString = `${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}`;\n const currentTimeMillis = timeStringToMillis(currentTimeString, true, false) as number;\n return this._findClosestOptionIndex(currentTimeMillis, options);\n }\n\n private _findClosestOptionIndex(value: number, options: Array<IListDropdownOption<ITimePickerOptionValue>>): number {\n const closestItem = options.reduce((prev, curr) => {\n return Math.abs((curr.value.time || 0) - value) < Math.abs((prev.value.time || 0) - value) ? curr : prev;\n });\n return options.indexOf(closestItem);\n }\n\n private _formatInputValue(emitEvents = true): void {\n const inputValue = this._adapter.getInputValue();\n \n // If we allow invalid times, we can leave the input value as-is (only when unmasked)\n if (this._allowInvalidTime && !this._masked && inputValue && !this._value) {\n return;\n }\n\n const formattedValue = this._formatValue(this._value);\n \n if (inputValue !== formattedValue) {\n this._adapter.setInputValue(formattedValue, emitEvents);\n this._adapter.emitInputEvent(TIME_PICKER_CONSTANTS.events.INPUT, formattedValue);\n }\n }\n\n private _generateTimeOptions(): Array<IListDropdownOption<ITimePickerOptionValue>> {\n const minMinutes = this._min != null ? Math.max(millisToMinutes(this._min), 0) : 0;\n const maxMinutes = this._max != null ? Math.min(millisToMinutes(this._max), TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MINUTES) : TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MINUTES;\n const minuteStep = this._step;\n const times: IListDropdownOption[] = [];\n let leadingOptions: IListDropdownOption[] = [];\n \n if (this._showHourOptions) {\n for (let totalMinutes = minMinutes; totalMinutes <= maxMinutes; totalMinutes += minuteStep) {\n if (totalMinutes === TIME_PICKER_CONSTANTS.numbers.MAX_DAY_MINUTES) {\n break;\n }\n const millis = minutesToMillis(totalMinutes);\n const disabled = this._restrictedTimes.includes(millis);\n const label = millisToTimeString(millis, this._use24HourTime, false) || '';\n const value: ITimePickerOptionValue = { time: millis };\n times.push({ label, value, disabled });\n }\n\n // Add divider between AM/PM times\n const firstPmIndex = times.findIndex(t => t.value.time / 1000 / 60 >= 720);\n if (firstPmIndex >= 0 && firstPmIndex < times.length - 1) {\n times.splice(firstPmIndex, 0, { label: '', value: null, divider: true });\n }\n }\n\n\n // Check if we need to prepend a \"Now\" option\n if (this._showNow) {\n const value: ITimePickerOptionValue = { time: null, metadata: 'now' };\n leadingOptions.push({ label: 'Now', value });\n }\n\n // Check for any custom provided options to prepend\n if (Array.isArray(this._customOptions) && this._customOptions.length) {\n const options = this._customOptions.map(o => {\n const value: ITimePickerOptionValue = { time: null, metadata: o.value, isCustom: true, customCallback: o.toMilliseconds };\n return { label: o.label, value };\n });\n leadingOptions = [...leadingOptions, ...options];\n }\n\n // Append all leading options\n if (leadingOptions.length) {\n if (times.length) {\n times.splice(0, 0, { label: '', value: null, divider: true });\n }\n leadingOptions.forEach((o, index) => times.splice(index, 0, o));\n }\n\n return times;\n }\n\n private _convertTimeStringToMillis(value: string | null, use24HourTime: boolean, allowSeconds: boolean): number | null {\n if (!value || !this._isValidTimeFormat(value)) {\n value = '';\n }\n return timeStringToMillis(value, use24HourTime, allowSeconds);\n }\n\n private _formatValue(value: number | null | undefined): string {\n if (!this._masked && typeof this._formatCallback === 'function') {\n return this._formatCallback.call(null, value, this._use24HourTime, this._allowSeconds);\n }\n return millisToTimeString(this._value, this._use24HourTime, this._allowSeconds) || '';\n }\n\n private _warnInvalidFormat(value: string): void {\n console.warn(`The specified value \"${value}\" does not conform to the required format. The format is \"HH:mm\", \"HH:mm:ss\" where HH is 00-23, mm is 00-59, and ss is 00-59.`);\n }\n\n public get open(): boolean {\n return this._open;\n }\n public set open(value: boolean) {\n if (this._open !== value) {\n if (this._isInitialized) {\n this._open = value;\n if (this._open) {\n this._openDropdown();\n } else {\n this._closeDropdown();\n }\n }\n }\n }\n\n public get masked(): boolean {\n return this._masked;\n }\n public set masked(value: boolean) {\n if (this._masked !== value) {\n this._masked = value;\n if (this._isInitialized) {\n if (this._masked) {\n this._adapter.removeInputListener('input', this._inputListener);\n this._applyMask();\n } else {\n this._adapter.destroyMask();\n this._formatInputValue();\n this._adapter.addInputListener('input', this._inputListener);\n }\n }\n }\n }\n\n public get showMaskFormat(): boolean {\n return this._showMaskFormat;\n }\n public set showMaskFormat(value: boolean) {\n if (this._showMaskFormat !== value) {\n this._showMaskFormat = value;\n if (this._isInitialized) {\n this._applyMask();\n }\n }\n }\n\n public get allowSeconds(): boolean {\n return this._allowSeconds;\n }\n public set allowSeconds(value: boolean) {\n if (this._allowSeconds !== value) {\n this._allowSeconds = !!value;\n this._applyAllowSeconds();\n if (this._isInitialized) {\n this._applyMask();\n this._formatInputValue();\n }\n this._adapter.setHostAttribute(TIME_PICKER_CONSTANTS.attributes.ALLOW_SECONDS, `${!!value}`);\n }\n }\n\n public get use24HourTime(): boolean {\n return this._use24HourTime;\n }\n public set use24HourTime(value: boolean) {\n if (this._use24HourTime !== value) {\n this._use24HourTime = !!value;\n if (this._isInitialized) {\n this._adapter.destroyMask();\n this._formatInputValue();\n this._applyMask();\n }\n this._adapter.setHostAttribute(TIME_PICKER_CONSTANTS.attributes.USE_24_HOUR_TIME, `${!!value}`);\n }\n }\n\n public get allowInvalidTime(): boolean {\n return this._allowInvalidTime;\n }\n public set allowInvalidTime(value: boolean) {\n if (this._allowInvalidTime !== value) {\n this._allowInvalidTime = !!value;\n this._adapter.setHostAttribute(TIME_PICKER_CONSTANTS.attributes.ALLOW_INVALID_TIME, `${!!value}`);\n }\n }\n\n public get value(): string | null {\n return millisToTimeString(this._value, true, this._allowSeconds);\n }\n public set value(value: string | null) {\n if (value && !this._isValidInputValue(value)) {\n this._warnInvalidFormat(value);\n return;\n }\n const millis = this._validateMillis(this._convertTimeStringToMillis(value, true, true));\n this._setValue(millis);\n if (this._isInitialized) {\n this._applyValue(this._value);\n }\n }\n\n public get min(): string | null {\n return millisToTimeString(this._min, true, this._allowSeconds);\n }\n public set min(value: string | null) {\n if (this._min !== value) {\n if (value && !this._isValidInputValue(value)) {\n this._warnInvalidFormat(value);\n return;\n }\n this._min = this._convertTimeStringToMillis(value, true, this._allowSeconds);\n\n // Validate and reset our millis to ensure within range\n const millis = this._validateMillis(this._value);\n this._setValue(millis);\n\n if (this._isInitialized) {\n this._applyValue(millis);\n }\n }\n }\n\n public get max(): string | null {\n return millisToTimeString(this._max, true, this._allowSeconds);\n }\n public set max(value: string | null) {\n if (this._max !== value) {\n if (value && !this._isValidInputValue(value)) {\n this._warnInvalidFormat(value);\n return;\n }\n this._max = this._convertTimeStringToMillis(value, true, this._allowSeconds);\n \n // Validate and reset our millis to ensure within range\n const millis = this._validateMillis(this._value);\n this._setValue(millis);\n\n if (this._isInitialized) {\n this._applyValue(millis);\n }\n }\n }\n\n public get restrictedTimes(): string[] {\n return this._restrictedTimes\n .map(t => millisToTimeString(t, true, this._allowSeconds))\n .filter(v => typeof v === 'string') as string[];\n }\n public set restrictedTimes(value: string[]) {\n if (!Array.isArray(value)) {\n value = [];\n }\n this._restrictedTimes = value\n .filter(v => typeof v === 'string')\n .map(v => this._convertTimeStringToMillis(v, true, true))\n .filter(v => typeof v === 'number') as number[];\n }\n\n public get startTime(): string | null {\n return millisToTimeString(this._startTime, true, this._allowSeconds);\n }\n public set startTime(value: string | null) {\n if (this._startTime !== value) {\n if (value && !this._isValidInputValue(value)) {\n this._warnInvalidFormat(value);\n return;\n }\n this._startTime = this._convertTimeStringToMillis(value, true, this._allowSeconds);\n }\n }\n\n public get step(): number {\n return this._step;\n }\n public set step(value: number) {\n this._step = value;\n }\n\n public get allowInput(): boolean {\n return this._allowInput;\n }\n public set allowInput(value: boolean) {\n if (this._allowInput !== value) {\n this._allowInput = value;\n if (this._isInitialized) {\n this._applyAllowInput();\n this._applyMask();\n }\n }\n }\n\n public get popupTarget(): string {\n return this._popupTarget;\n }\n public set popupTarget(value: string) {\n if (this._popupTarget !== value) {\n this._popupTarget = value;\n }\n }\n\n public get showNow(): boolean {\n return this._showNow;\n }\n public set showNow(value: boolean) {\n if (this._showNow !== value) {\n this._showNow = value;\n }\n }\n\n public get showHourOptions(): boolean {\n return this._showHourOptions;\n }\n public set showHourOptions(value: boolean) {\n if (this._showHourOptions !== value) {\n this._showHourOptions = value;\n }\n }\n\n public get customOptions(): ITimePickerOption[] {\n return this._customOptions;\n }\n public set customOptions(value: ITimePickerOption[]) {\n this._customOptions = Array.isArray(value) ? value : [];\n }\n\n public set validationCallback(cb: TimePickerValidationCallback) {\n this._validationCallback = cb;\n if (this._isInitialized) {\n this._applyMask();\n }\n }\n\n public set parseCallback(cb: TimePickerParseCallback) {\n this._parseCallback = cb;\n }\n\n public set formatCallback(cb: TimePickerFormatCallback) {\n this._formatCallback = cb;\n }\n\n public set coercionCallback(cb: TimePickerCoercionCallback) {\n this._coercionCallback = cb;\n }\n\n public set prepareMaskCallback(cb: TimePickerPrepareMaskCallback) {\n this._prepareMaskCallback = cb;\n if (this._isInitialized) {\n this._applyMask();\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 if (this._isInitialized) {\n this._applyDisabled();\n }\n this._adapter.toggleHostAttribute(TIME_PICKER_CONSTANTS.attributes.DISABLED, this._disabled);\n }\n }\n\n public get popupClasses(): string | string[] {\n if (Array.isArray(this._popupClasses)) {\n return [...this._popupClasses];\n }\n\n return this._popupClasses;\n }\n public set popupClasses(value: string | string[]) {\n if (Array.isArray(value)) {\n this._popupClasses = [...value];\n } else {\n this._popupClasses = [value];\n }\n }\n\n public get allowDropdown(): boolean {\n return this._allowDropdown;\n }\n public set allowDropdown(value: boolean) {\n if (this._allowDropdown !== value) {\n this._allowDropdown = value;\n if (this._isInitialized) {\n this._applyAllowDropdown();\n }\n }\n }\n}\n", "import { CustomElement, attachShadowTemplate, FoundationProperty, coerceBoolean, coerceNumber, ensureChild } from '@tylertech/forge-core';\nimport { tylIconClockOutline } from '@tylertech/tyler-icons/extended';\nimport { tylIconClose } from '@tylertech/tyler-icons/standard';\nimport { TimePickerAdapter } from './time-picker-adapter';\nimport { TimePickerFoundation } from './time-picker-foundation';\nimport {\n TIME_PICKER_CONSTANTS,\n ITimePickerOption,\n TimePickerParseCallback,\n TimePickerValidationCallback,\n TimePickerFormatCallback,\n TimePickerCoercionCallback,\n TimePickerPrepareMaskCallback\n} from './time-picker-constants';\nimport { IconRegistry, IconComponent } from '../icon';\nimport { IconButtonComponent } from '../icon-button';\nimport { PopupComponent } from '../popup';\nimport { DialogComponent } from '../dialog';\nimport { ListComponent, ListItemComponent } from '../list';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\n\nconst template = '<template><slot></slot></template>';\nconst styles = ':host{display:block}:host([hidden]){display:none}';\n\nexport interface ITimePickerComponent extends IBaseComponent {\n value: string | null | undefined;\n open: boolean;\n allowSeconds: boolean;\n masked: boolean;\n showMaskFormat: boolean;\n use24HourTime: boolean;\n allowInvalidTime: boolean;\n min: string | null | undefined;\n max: string | null | undefined;\n restrictedTimes: string[];\n startTime: string | null | undefined;\n step: number;\n allowInput: boolean;\n showNow: boolean;\n showHourOptions: boolean;\n customOptions: ITimePickerOption[];\n validationCallback: TimePickerValidationCallback;\n parseCallback: TimePickerParseCallback;\n formatCallback: TimePickerFormatCallback;\n coercionCallback: TimePickerCoercionCallback;\n prepareMaskCallback: TimePickerPrepareMaskCallback;\n disabled: boolean;\n popupClasses: string | string[];\n allowDropdown: boolean;\n popupTarget: string;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-time-picker': ITimePickerComponent;\n }\n\n interface HTMLElementEventMap {\n 'forge-time-picker-open': CustomEvent<void>;\n 'forge-time-picker-close': CustomEvent<void>;\n 'forge-time-picker-input': Event;\n 'forge-time-picker-change': CustomEvent<string | null>;\n }\n}\n\n/**\n * The web component class behind the `<forge-time-picker>` custom element.\n * \n * @tag forge-time-picker\n */\n@CustomElement({\n name: TIME_PICKER_CONSTANTS.elementName,\n dependencies: [\n ListComponent,\n ListItemComponent,\n IconButtonComponent,\n IconComponent,\n PopupComponent,\n IconComponent,\n DialogComponent\n ]\n})\nexport class TimePickerComponent extends BaseComponent implements ITimePickerComponent {\n public static get observedAttributes(): string[] {\n return [\n TIME_PICKER_CONSTANTS.attributes.VALUE,\n TIME_PICKER_CONSTANTS.attributes.OPEN,\n TIME_PICKER_CONSTANTS.attributes.ALLOW_SECONDS,\n TIME_PICKER_CONSTANTS.attributes.MASKED,\n TIME_PICKER_CONSTANTS.attributes.SHOW_MASK_FORMAT,\n TIME_PICKER_CONSTANTS.attributes.USE_24_HOUR_TIME,\n TIME_PICKER_CONSTANTS.attributes.ALLOW_INVALID_TIME,\n TIME_PICKER_CONSTANTS.attributes.MIN,\n TIME_PICKER_CONSTANTS.attributes.MAX,\n TIME_PICKER_CONSTANTS.attributes.START_TIME,\n TIME_PICKER_CONSTANTS.attributes.STEP,\n TIME_PICKER_CONSTANTS.attributes.ALLOW_INPUT,\n TIME_PICKER_CONSTANTS.attributes.SHOW_NOW,\n TIME_PICKER_CONSTANTS.attributes.SHOW_HOUR_OPTIONS,\n TIME_PICKER_CONSTANTS.attributes.DISABLED,\n TIME_PICKER_CONSTANTS.attributes.POPUP_CLASSES,\n TIME_PICKER_CONSTANTS.attributes.ALLOW_DROPDOWN\n ];\n }\n\n private _foundation: TimePickerFoundation;\n\n constructor() {\n super();\n IconRegistry.define([tylIconClockOutline, tylIconClose]);\n attachShadowTemplate(this, template, styles);\n this._foundation = new TimePickerFoundation(new TimePickerAdapter(this));\n }\n\n public connectedCallback(): void {\n if (this.querySelector(TIME_PICKER_CONSTANTS.selectors.INPUT)) {\n this._foundation.initialize();\n } else {\n ensureChild(this, TIME_PICKER_CONSTANTS.selectors.INPUT).then(() => this._foundation.initialize());\n }\n }\n\n public disconnectedCallback(): void {\n this._foundation.disconnect();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case TIME_PICKER_CONSTANTS.attributes.VALUE:\n this.value = newValue;\n break;\n case TIME_PICKER_CONSTANTS.attributes.OPEN:\n this.open = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.ALLOW_SECONDS:\n this.allowSeconds = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.MASKED:\n this.masked = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.SHOW_MASK_FORMAT:\n this.showMaskFormat = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.USE_24_HOUR_TIME:\n this.use24HourTime = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.ALLOW_INVALID_TIME:\n this.allowInvalidTime = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.SHOW_NOW:\n this.showNow = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.SHOW_HOUR_OPTIONS:\n this.showHourOptions = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.MIN:\n this.min = newValue;\n break;\n case TIME_PICKER_CONSTANTS.attributes.MAX:\n this.max = newValue;\n break;\n case TIME_PICKER_CONSTANTS.attributes.START_TIME:\n this.startTime = newValue;\n break;\n case TIME_PICKER_CONSTANTS.attributes.STEP:\n this.step = coerceNumber(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.ALLOW_INPUT:\n this.allowInput = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.DISABLED:\n this.disabled = coerceBoolean(newValue);\n break;\n case TIME_PICKER_CONSTANTS.attributes.POPUP_CLASSES:\n this.popupClasses = newValue;\n break;\n case TIME_PICKER_CONSTANTS.attributes.ALLOW_DROPDOWN:\n this.allowDropdown = coerceBoolean(newValue);\n break;\n }\n }\n\n @FoundationProperty()\n public declare value: string | null | undefined;\n\n @FoundationProperty()\n public declare open: boolean;\n\n @FoundationProperty()\n public declare allowSeconds: boolean;\n\n @FoundationProperty()\n public declare masked: boolean;\n\n @FoundationProperty()\n public declare showMaskFormat: boolean;\n\n @FoundationProperty()\n public declare use24HourTime: boolean;\n\n @FoundationProperty()\n public declare allowInvalidTime: boolean;\n\n @FoundationProperty()\n public declare min: string | null | undefined;\n\n @FoundationProperty()\n public declare max: string | null | undefined;\n\n @FoundationProperty()\n public declare restrictedTimes: string[];\n\n @FoundationProperty()\n public declare startTime: string | null | undefined;\n\n @FoundationProperty()\n public declare step: number;\n\n @FoundationProperty()\n public declare allowInput: boolean;\n\n @FoundationProperty()\n public declare showNow: boolean;\n\n /** Whether or not to display hour options in dropdown */\n @FoundationProperty()\n public declare showHourOptions: boolean;\n\n @FoundationProperty()\n public declare customOptions: ITimePickerOption[];\n\n @FoundationProperty()\n public declare validationCallback: TimePickerValidationCallback;\n \n @FoundationProperty()\n public declare parseCallback: TimePickerParseCallback;\n\n @FoundationProperty()\n public declare formatCallback: TimePickerFormatCallback;\n\n @FoundationProperty()\n public declare coercionCallback: TimePickerCoercionCallback;\n\n @FoundationProperty()\n public declare prepareMaskCallback: TimePickerPrepareMaskCallback;\n\n @FoundationProperty()\n public declare disabled: boolean;\n\n @FoundationProperty()\n public declare popupClasses: string | string[];\n\n @FoundationProperty()\n public declare allowDropdown: boolean;\n\n @FoundationProperty()\n public declare popupTarget: string;\n}\n", "import { IBaseComponentDelegateConfig } from '../core/delegates/base-component-delegate';\nimport { FormFieldComponentDelegate, IFormFieldComponentDelegateOptions } from '../core/delegates/form-field-component-delegate';\nimport { ITextFieldComponent, ITextFieldComponentDelegateConfig, TextFieldComponentDelegate } from '../text-field';\nimport { ITimePickerComponent } from './time-picker';\nimport { TIME_PICKER_CONSTANTS } from './time-picker-constants';\n\nexport type TimePickerComponentDelegateProps = Partial<ITimePickerComponent>;\nexport interface ITimePickerComponentDelegateOptions extends IFormFieldComponentDelegateOptions {\n textFieldDelegateConfig?: ITextFieldComponentDelegateConfig;\n}\nexport interface ITimePickerComponentDelegateConfig extends IBaseComponentDelegateConfig<ITimePickerComponent, ITimePickerComponentDelegateOptions> {}\n\nexport class TimePickerComponentDelegate extends FormFieldComponentDelegate<ITimePickerComponent, ITimePickerComponentDelegateOptions> {\n private _textFieldDelegate: TextFieldComponentDelegate;\n\n constructor(config?: ITimePickerComponentDelegateConfig) {\n super(config);\n }\n\n protected _build(): ITimePickerComponent {\n const timePicker = document.createElement(TIME_PICKER_CONSTANTS.elementName);\n this._attachTextField(timePicker);\n return timePicker;\n }\n\n public get inputElement(): HTMLInputElement {\n return this._textFieldDelegate.inputElement;\n }\n\n public get textFieldElement(): ITextFieldComponent {\n return this._textFieldDelegate.element;\n }\n\n public get value(): any {\n return this._element.value;\n }\n public set value(value: any) {\n this._element.value = value;\n }\n\n public get disabled(): boolean {\n return this._element.disabled;\n }\n public set disabled(value: boolean) {\n this._element.disabled = value;\n }\n\n public get invalid(): boolean {\n return this._textFieldDelegate.invalid || false;\n }\n public set invalid(value: boolean) {\n this._textFieldDelegate.invalid = value;\n }\n\n public onChange(listener: (value: string) => void): void {\n this._element.addEventListener(TIME_PICKER_CONSTANTS.events.CHANGE, (evt: CustomEvent<string>) => listener(evt.detail ?? ''));\n }\n\n public onInput(listener: (value: string) => void): void {\n this._element.addEventListener(TIME_PICKER_CONSTANTS.events.INPUT, (evt: CustomEvent<string>) => listener(evt.detail ?? ''));\n }\n\n public onFocus(listener: (evt: FocusEvent) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('focus', (evt: FocusEvent) => listener(evt));\n }\n\n public onBlur(listener: (evt: FocusEvent) => void): void {\n this._textFieldDelegate.inputElement.addEventListener('blur', (evt: FocusEvent) => listener(evt));\n }\n\n private _attachTextField(component: ITimePickerComponent): void {\n const textFieldConfig: ITextFieldComponentDelegateConfig = {\n props: { ...this._config.options?.textFieldDelegateConfig?.props },\n options: { ...this._config.options?.textFieldDelegateConfig?.options }\n };\n this._textFieldDelegate = new TextFieldComponentDelegate(textFieldConfig);\n component.appendChild(this._textFieldDelegate.element);\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\n\nimport { TimePickerComponent } from './time-picker';\n\nexport * from './time-picker-adapter';\nexport * from './time-picker-component-delegate';\nexport * from './time-picker-constants';\nexport * from './time-picker-foundation';\nexport * from './time-picker-utils';\nexport * from './time-picker';\n\nexport function defineTimePickerComponent(): void {\n defineCustomElement(TimePickerComponent);\n}\n"],
5
- "mappings": "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",
6
- "names": ["elementName", "COMPONENT_NAME_PREFIX", "attributes", "selectors", "events", "numbers", "TIME_PICKER_CONSTANTS", "TimePickerAdapter", "BaseAdapter", "component", "TIME_PICKER_CONSTANTS", "options", "TimeInputMask", "identifier", "type", "listener", "capture", "textField", "TEXT_FIELD_CONSTANTS", "toggleElement", "existingIconButton", "ICON_BUTTON_CONSTANTS", "iconButtonElement", "buttonElement", "iconElement", "ICON_CONSTANTS", "getActiveElement", "value", "emitEvents", "isDisabled", "config", "ListDropdown", "key", "_a", "id", "toggleAttribute", "selector", "data", "emitEvent", "button", "_b", "index", "textFieldRoot", "getShadowElement", "timeStringToMillis", "time", "use24HourTime", "allowSeconds", "hours", "minutes", "seconds", "TWENTY_FOUR_HOUR_TIME_REGEX", "tokens", "tokenize24HourTimeString", "TWELVE_HOUR_TIME_REGEX", "tokenize12HourTimeString", "hoursToMillis", "minutesToMillis", "secondsToMillis", "millisToTimeString", "value", "millisToHours", "millisToMinutesClamped", "meridiem", "millisToSecondsClamped", "millis", "millisToMinutes", "millisToSeconds", "stripSecondsFromMillis", "getCurrentTimeOfDayMillis", "date", "mergeDateWithTime", "useSeconds", "twentyThreeHoursInMillis", "TimePickerFoundation", "_adapter", "TIME_PICKER_CONSTANTS", "randomChars", "evt", "inputValue", "_a", "_b", "nowMillis", "getCurrentTimeOfDayMillis", "timeString", "millisToTimeString", "activeOption", "Platform", "options", "debounce", "value", "originalValue", "stripSecondsFromMillis", "rawValue", "tryCoerceTimeString", "millis", "force", "isBelowMin", "isAboveMax", "isSupportedTimeFormat", "TWENTY_FOUR_HOUR_TIME_REGEX", "result", "emitEvents", "formattedValue", "selectableOptions", "o", "selectedValues", "visibleStartIndex", "optionIndex", "id", "emitCloseEvent", "date", "currentTimeString", "currentTimeMillis", "timeStringToMillis", "closestItem", "prev", "curr", "minMinutes", "millisToMinutes", "maxMinutes", "minuteStep", "times", "leadingOptions", "totalMinutes", "minutesToMillis", "disabled", "label", "firstPmIndex", "t", "index", "use24HourTime", "allowSeconds", "v", "cb", "template", "styles", "TimePickerComponent", "BaseComponent", "IconRegistry", "tylIconClockOutline", "tylIconClose", "attachShadowTemplate", "TimePickerFoundation", "TimePickerAdapter", "TIME_PICKER_CONSTANTS", "ensureChild", "name", "oldValue", "newValue", "coerceBoolean", "coerceNumber", "__decorateClass", "FoundationProperty", "CustomElement", "ListComponent", "ListItemComponent", "IconButtonComponent", "IconComponent", "PopupComponent", "DialogComponent", "TimePickerComponentDelegate", "FormFieldComponentDelegate", "config", "timePicker", "TIME_PICKER_CONSTANTS", "value", "listener", "evt", "_a", "component", "_b", "_c", "_d", "textFieldConfig", "__spreadValues", "TextFieldComponentDelegate", "defineTimePickerComponent", "defineCustomElement", "TimePickerComponent"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/date-picker/base/base-date-picker-constants.ts", "../../src/date-picker/base/base-date-picker.ts", "../../src/date-picker/base/base-date-picker-utils.ts", "../../src/date-picker/base/base-date-picker-adapter.ts", "../../src/date-picker/base/base-date-picker-foundation.ts"],
4
- "sourcesContent": ["import IMask, { Masked, InputMask } from 'imask';\nimport { DayOfWeek, ICalendarDateSelectEventData } from '../../calendar';\n\nexport declare type DatePickerParseCallback = (value: string) => Date | null;\nexport declare type DatePickerFormatCallback = (value: Date | null) => string;\nexport declare type DatePickerPrepareMaskCallback = (value: string, masked: Masked<string>, flags: IMask.AppendFlags, maskInstance: InputMask<IMask.MaskedPatternOptions>) => string;\nexport declare type DatePickerValueMode = 'object' | 'string' | 'iso-string';\n\nexport interface IDatePickerCalendarDropdownConfig<T> {\n value?: T | null;\n min?: Date | null;\n max?: Date | null;\n disabledDates?: Date | Date[] | null;\n popupClasses: string | string[];\n closeCallback: () => void;\n selectCallback: (value: ICalendarDateSelectEventData) => void;\n activeChangeCallback: (id: string) => void;\n disableDayCallback: (date: Date) => boolean;\n showToday: boolean;\n showClear: boolean;\n todayCallback: () => void;\n clearCallback: () => void;\n disabledDaysOfWeek?: DayOfWeek[] | null;\n}\n\n\nconst observedAttributes = {\n MIN: 'min',\n MAX: 'max',\n OPEN: 'open',\n DISABLED: 'disabled',\n POPUP_CLASSES: 'popup-classes',\n MASKED: 'masked',\n MASK_FORMAT: 'mask-format',\n SHOW_MASK_FORMAT: 'show-mask-format',\n VALUE_MODE: 'value-mode',\n ALLOW_INVALID_DATE: 'allow-invalid-date',\n SHOW_TODAY: 'show-today',\n SHOW_CLEAR: 'show-clear',\n DISABLED_DAYS_OF_WEEK: 'disabled-days-of-week',\n YEAR_RANGE: 'year-range'\n};\n\nconst attributes = {\n TOGGLE: 'forge-date-picker-toggle'\n};\n\nconst selectors = {\n INPUT: 'input',\n TOGGLE: '[forge-date-picker-toggle],[data-forge-date-picker-toggle]'\n};\n\nexport const BASE_DATE_PICKER_CONSTANTS = {\n observedAttributes,\n attributes,\n selectors\n};\n", "import { coerceBoolean, ensureChild, FoundationProperty, coerceNumberArray } from '@tylertech/forge-core';\nimport { DayOfWeek } from '../../calendar/calendar-constants';\nimport { BaseComponent, IBaseComponent } from '../../core/base/base-component';\nimport { BASE_DATE_PICKER_CONSTANTS, DatePickerFormatCallback, DatePickerParseCallback, DatePickerPrepareMaskCallback, DatePickerValueMode } from './base-date-picker-constants';\nimport { BaseDatePickerFoundation } from './base-date-picker-foundation';\nimport { IBaseDatePickerAdapter } from './base-date-picker-adapter';\n\nexport interface IBaseDatePickerComponent<TValue> extends IBaseComponent {\n value: TValue | null | undefined;\n min: Date | string | null | undefined;\n max: Date | string | null | undefined;\n disabledDates: Date | Date[] | null | undefined;\n open: boolean;\n parseCallback: DatePickerParseCallback;\n formatCallback: DatePickerFormatCallback;\n prepareMaskCallback: DatePickerPrepareMaskCallback;\n disableDayCallback: (date: Date) => boolean;\n popupClasses: string | string[];\n disabled: boolean;\n masked: boolean;\n maskFormat: string;\n showMaskFormat: boolean;\n valueMode: DatePickerValueMode;\n notifyInputValueChanges: boolean;\n allowInvalidDate: boolean;\n showToday: boolean;\n showClear: boolean;\n disabledDaysOfWeek: DayOfWeek[];\n yearRange: string;\n}\n\nexport abstract class BaseDatePickerComponent<TPublicValue, TPrivateValue, TFoundation extends BaseDatePickerFoundation<IBaseDatePickerAdapter, TPublicValue, TPrivateValue>> extends BaseComponent implements IBaseDatePickerComponent<TPublicValue> {\n protected _foundation: TFoundation;\n\n constructor() {\n super();\n }\n\n public async connectedCallback(): Promise<void> {\n if (this.querySelector(BASE_DATE_PICKER_CONSTANTS.selectors.INPUT)) {\n this._foundation.initialize();\n } else {\n await ensureChild(this, BASE_DATE_PICKER_CONSTANTS.selectors.INPUT);\n this._foundation.initialize();\n }\n }\n\n public disconnectedCallback(): void {\n this._foundation.disconnect();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.MIN:\n this.min = newValue;\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.MAX:\n this.max = newValue;\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.OPEN:\n this.open = coerceBoolean(newValue);\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.POPUP_CLASSES:\n this.popupClasses = newValue;\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.DISABLED:\n this.disabled = coerceBoolean(newValue);\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.MASKED:\n this.masked = coerceBoolean(newValue);\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.SHOW_MASK_FORMAT:\n this.showMaskFormat = coerceBoolean(newValue);\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.MASK_FORMAT:\n this.maskFormat = newValue;\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.VALUE_MODE:\n this.valueMode = newValue as DatePickerValueMode;\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.ALLOW_INVALID_DATE:\n this.allowInvalidDate = coerceBoolean(newValue);\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.SHOW_TODAY:\n this.showToday = coerceBoolean(newValue);\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.SHOW_CLEAR:\n this.showClear = coerceBoolean(newValue);\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.DISABLED_DAYS_OF_WEEK:\n this.disabledDaysOfWeek = coerceNumberArray(newValue);\n break;\n case BASE_DATE_PICKER_CONSTANTS.observedAttributes.YEAR_RANGE:\n this.yearRange = newValue;\n break;\n }\n }\n\n /** Gets/sets the value of the component. */\n @FoundationProperty()\n public declare value: TPublicValue | null | undefined;\n\n /** Gets/sets the minimum date the calendar will allow. */\n @FoundationProperty()\n public declare min: Date | string | null | undefined;\n\n /** Gets/sets the maximum date the calendar will allow. */\n @FoundationProperty()\n public declare max: Date | string | null | undefined;\n\n /** Gets/sets the dates that are restricted from being selected. */\n @FoundationProperty()\n public declare disabledDates: Date | Date[] | null | undefined;\n\n /** Gets/sets whether the calendar dropdown is open. */\n @FoundationProperty()\n public declare open: boolean;\n\n /** Gets/sets the CSS classes that are applied to the popup element. */\n @FoundationProperty()\n public declare popupClasses: string | string[];\n\n /** Gets/sets whether the date picker is disabled or not. */\n @FoundationProperty()\n public declare disabled: boolean;\n\n /** Gets/sets whether the input mask is applied or not. */\n @FoundationProperty()\n public declare masked: boolean;\n\n /** Gets/sets the mask format that displayed in the input. Default is `MM/DD/YYYY` */\n @FoundationProperty()\n public declare maskFormat: string;\n\n /** Gets/sets whether the mask format is displayed in the input or not. Only applies if `masked` is `true`. */\n @FoundationProperty()\n public declare showMaskFormat: boolean;\n\n /** Gets/sets the type for the `value` property and `forge-date-picker-change` event. */\n @FoundationProperty()\n public declare valueMode: DatePickerValueMode;\n\n /** Gets/sets whether the native input will be notified of value changes via the `input` and `change` events. */\n @FoundationProperty()\n public declare notifyInputValueChanges: boolean;\n\n /** Gets/sets whether to allow an invalid date to be input. When true, the date picker will not clear out the value of the input if the date was invalid (i.e. could not be parsed). */\n @FoundationProperty()\n public declare allowInvalidDate: boolean;\n\n /** Gets/sets whether the today button is visible in the popup. */\n @FoundationProperty()\n public declare showToday: boolean;\n\n /** Gets/sets whether the clear button is visible in the popup. */\n @FoundationProperty()\n public declare showClear: boolean;\n\n /** Sets the callback to use for parsing a date value string to a `Date` object. */\n @FoundationProperty()\n public declare parseCallback: DatePickerParseCallback;\n\n /** Sets the callback to use for formatting `Date` value to a custom string format. */\n @FoundationProperty()\n public declare formatCallback: DatePickerFormatCallback;\n\n /** Sets the callback to use when altering default mask entry. */\n @FoundationProperty()\n public declare prepareMaskCallback: DatePickerPrepareMaskCallback;\n\n /** Sets the days of the week to disable from selection. */\n @FoundationProperty()\n public declare disabledDaysOfWeek: DayOfWeek[];\n\n /** Sets the callback to use for testing whether a specific date should be disabled or not. */\n @FoundationProperty()\n public declare disableDayCallback: (date: Date) => boolean;\n\n /** Sets the year range. */\n @FoundationProperty()\n public declare yearRange: string;\n}\n", "export function createToggleElement(iconName: string): HTMLElement {\n const iconButtonElement = document.createElement('forge-icon-button');\n iconButtonElement.slot = 'trailing';\n iconButtonElement.dense = true;\n iconButtonElement.densityLevel = 3;\n iconButtonElement.style.marginRight = '4px';\n\n const buttonElement = document.createElement('button');\n buttonElement.type = 'button';\n buttonElement.tabIndex = -1;\n buttonElement.setAttribute('aria-label', 'Toggle calendar');\n iconButtonElement.appendChild(buttonElement);\n\n const iconElement = document.createElement('forge-icon');\n iconElement.name = iconName;\n buttonElement.appendChild(iconElement);\n\n return iconButtonElement;\n}\n", "import { getShadowElement, randomChars } from '@tylertech/forge-core';\nimport { CALENDAR_CONSTANTS, DateRange, DayOfWeek, ICalendarComponent, ICalendarDateSelectEventData } from '../../calendar';\nimport { ICalendarDropdown, ICalendarDropdownPopupConfig } from '../../calendar/calendar-dropdown';\nimport { BaseAdapter, IBaseAdapter, IDateInputMaskOptions } from '../../core';\nimport { BaseComponent } from '../../core/base/base-component';\nimport { ICON_BUTTON_CONSTANTS, IIconButtonComponent } from '../../icon-button';\nimport { BASE_DATE_PICKER_CONSTANTS } from './base-date-picker-constants';\nimport { createToggleElement } from './base-date-picker-utils';\nimport { TEXT_FIELD_CONSTANTS } from '../../text-field';\n\nexport interface IBaseDatePickerAdapter extends IBaseAdapter {\n initialize(): void;\n initializeAccessibility(): void;\n destroy(): void;\n setActiveDescendant(id: string): void;\n\n // Mask\n initializeMask(options: IDateInputMaskOptions): void;\n destroyMask(): void;\n\n // Toggle\n tryCreateToggle(): void;\n addToggleListener(type: string, listener: (event: Event) => void): void;\n removeToggleListener(type: string, listener: (event: Event) => void): void;\n \n // Input\n addInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void;\n removeInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void;\n setInputValueChangedListener(context: any, listener: (value: any) => void): void;\n hasInputElement(): boolean;\n tryFocusInput(): void;\n tryBlurInput(): void;\n isInputDisabled(): boolean;\n isInputFocused(): boolean;\n setDisabled(value: boolean): void;\n getInputValue(): string;\n setInputValue(value: string, emitEvents: boolean): void;\n selectInputText(): void;\n emitInputEvent(type: string, data?: any): void;\n \n // Calendar\n attachCalendar(calendarConfig: Partial<ICalendarComponent>, dropdownConfig?: ICalendarDropdownPopupConfig): void;\n detachCalendar(): void;\n goToCalendarDate(date: Date): void;\n addDateSelectListener(listener: (event: CustomEvent<ICalendarDateSelectEventData>) => void): void;\n removeDateSelectListener(listener: (event: CustomEvent<ICalendarDateSelectEventData>) => void): void;\n setCalendarValue(value: Date | DateRange | null | undefined): void;\n setCalendarMinDate(value: Date | null | undefined): void;\n setCalendarMaxDate(value: Date | null | undefined): void;\n setCalendarDisabledDates(value: Date | Date[] | null | undefined): void;\n setCalendarDisabledDaysOfWeek(value: DayOfWeek[]): void;\n setCalendarDisableDayCallback(disableDayCallback: (date: Date) => boolean): void;\n setCalendarActiveDate(date: Date): void;\n getCalendarActiveDate(): Date | undefined;\n setCalendarYearRange(value: string): void;\n propagateCalendarKey(evt: KeyboardEvent): void;\n}\nexport abstract class BaseDatePickerAdapter<T extends BaseComponent> extends BaseAdapter<T> implements IBaseDatePickerAdapter {\n protected _identifier: string;\n protected _calendarDropdown?: ICalendarDropdown;\n protected _toggleElement?: HTMLElement;\n protected _valueChangeListeners: Array<() => void> = [];\n\n constructor(component: T) {\n super(component);\n this._identifier = randomChars();\n }\n\n // Initialization\n public abstract initializeAccessibility(): void;\n protected abstract _initializeInput(): void;\n protected abstract _initializeCalendarDropdown(): void;\n \n // Mask\n public abstract initializeMask(options: IDateInputMaskOptions): void;\n public abstract destroyMask(): void;\n\n // Calendar\n public abstract setActiveDescendant(id: string): void;\n \n // Input\n public abstract hasInputElement(): boolean;\n public abstract hasInputElement(): boolean;\n public abstract tryFocusInput(): void;\n public abstract tryBlurInput(): void;\n public abstract isInputDisabled(): boolean;\n public abstract isInputFocused(): boolean;\n public abstract setDisabled(value: boolean): void;\n public abstract addInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void;\n public abstract removeInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void;\n public abstract setInputValueChangedListener(context: any, listener: (value: any) => void): void;\n public abstract getInputValue(): string;\n public abstract setInputValue(value: string, emitEvents: boolean): void;\n public abstract selectInputText(): void;\n public abstract emitInputEvent(type: string, data?: any): void;\n\n public initialize(): void {\n this._initializeInput();\n }\n\n public destroy(): void {\n this._calendarDropdown?.destroy();\n this.destroyValueChangeListener();\n }\n\n public destroyValueChangeListener(): void {\n this._valueChangeListeners.forEach(cb => cb());\n }\n\n public addToggleListener(type: string, listener: (event: Event) => void): void {\n this._toggleElement?.addEventListener(type, listener);\n }\n\n public removeToggleListener(type: string, listener: (event: Event) => void): void {\n this._toggleElement?.removeEventListener(type, listener);\n }\n\n public attachCalendar(calendarConfig: Partial<ICalendarComponent>, dropdownConfig?: ICalendarDropdownPopupConfig): void {\n if (this._calendarDropdown) {\n this._calendarDropdown?.destroy();\n }\n\n this._initializeCalendarDropdown();\n\n if (!this._calendarDropdown) {\n throw new Error('CalendarDropdown was not initialized.');\n }\n\n if (dropdownConfig) {\n Object.assign(this._calendarDropdown, dropdownConfig);\n }\n\n this._calendarDropdown.open(calendarConfig);\n this._calendarDropdown.dropdownElement?.style.setProperty('--forge-calendar-width', '320px');\n this._calendarDropdown.calendar?.style.setProperty('margin', '8px');\n }\n\n public detachCalendar(): void {\n if (this._calendarDropdown && this._calendarDropdown.isOpen) {\n this._calendarDropdown.close();\n }\n }\n\n public goToCalendarDate(date: Date): void {\n this._calendarDropdown?.calendar?.goToDate(date, true);\n }\n\n public addDateSelectListener(listener: (event: CustomEvent<ICalendarDateSelectEventData>) => void): void {\n this._calendarDropdown?.calendar?.addEventListener(CALENDAR_CONSTANTS.events.DATE_SELECT, listener);\n }\n\n public removeDateSelectListener(listener: (event: CustomEvent<ICalendarDateSelectEventData>) => void): void {\n this._calendarDropdown?.calendar?.removeEventListener(CALENDAR_CONSTANTS.events.DATE_SELECT, listener);\n }\n\n public setCalendarValue(value: Date | DateRange | null | undefined): void {\n if (this._calendarDropdown?.calendar) {\n this._calendarDropdown.calendar.value = value;\n }\n }\n\n public setCalendarMinDate(value: Date | null | undefined): void {\n if (this._calendarDropdown?.calendar) {\n this._calendarDropdown.calendar.min = value;\n }\n }\n\n public setCalendarMaxDate(value: Date | null | undefined): void {\n if (this._calendarDropdown?.calendar) {\n this._calendarDropdown.calendar.max = value;\n }\n }\n\n public setCalendarDisabledDates(value: Date | Date[] | null | undefined): void {\n if (this._calendarDropdown?.calendar) {\n this._calendarDropdown.calendar.disabledDates = value;\n }\n }\n\n public setCalendarDisabledDaysOfWeek(value: DayOfWeek[]): void {\n if (this._calendarDropdown?.calendar) {\n this._calendarDropdown.calendar.disabledDaysOfWeek = value;\n }\n }\n\n public setCalendarDisableDayCallback(disableDayCallback: (date: Date) => boolean): void {\n if (this._calendarDropdown?.calendar) {\n this._calendarDropdown.calendar.disabledDateBuilder = disableDayCallback;\n }\n }\n\n public setCalendarActiveDate(date: Date): void {\n this._calendarDropdown?.calendar?.setActiveDate(date);\n }\n\n public getCalendarActiveDate(): Date | undefined {\n return this._calendarDropdown?.calendar?.activeDate;\n }\n\n public setCalendarYearRange(value: string): void {\n if (this._calendarDropdown?.calendar?.yearRange) {\n this._calendarDropdown.calendar.yearRange = value;\n }\n }\n\n public propagateCalendarKey(evt: KeyboardEvent): void {\n this._calendarDropdown?.calendar?.handleKey(evt);\n }\n\n public tryCreateToggle(): void {\n const textField = this._component.querySelector('forge-text-field');\n const toggleElement = this._component.querySelector(BASE_DATE_PICKER_CONSTANTS.selectors.TOGGLE);\n if (textField) {\n const existingIconButton = textField.querySelector(`${ICON_BUTTON_CONSTANTS.elementName}[slot=trailing]`);\n if (existingIconButton || toggleElement) {\n this._toggleElement = (existingIconButton || toggleElement) as IIconButtonComponent;\n return;\n }\n\n const iconButtonElement = this._createToggleElement();\n textField.appendChild(iconButtonElement);\n this._toggleElement = iconButtonElement;\n } else if (toggleElement) {\n this._toggleElement = toggleElement as HTMLElement;\n }\n }\n\n protected _createToggleElement(): HTMLElement {\n return createToggleElement('insert_invitation');\n }\n\n protected _getDefaultTargetElement(): HTMLElement {\n // This component is often used with the Forge text-field, if so, let's target our popup around\n // one if its internal elements for best alignment\n const textField = this._component.querySelector('forge-text-field');\n if (textField && textField.shadowRoot) {\n const textFieldRoot = getShadowElement(textField, TEXT_FIELD_CONSTANTS.selectors.ROOT) as HTMLElement;\n if (textFieldRoot) {\n return textFieldRoot;\n }\n }\n\n return this._component.querySelector('input') || this._component;\n }\n}\n", "import { ICustomElementFoundation, isValidDate, Platform } from '@tylertech/forge-core';\nimport { ICalendarComponent, ICalendarDropdownPopupConfig } from '../../calendar';\nimport { CalendarMode, DayOfWeek, ICalendarDateSelectEventData } from '../../calendar/calendar-constants';\nimport { DateRange } from '../../calendar/core/date-range';\nimport { formatDate, parseDateString } from '../../core/utils/date-utils';\nimport { DEFAULT_DATE_MASK, IDateInputMaskOptions } from '../../core/mask/date-input-mask';\nimport { IBaseDatePickerAdapter } from './base-date-picker-adapter';\nimport { BASE_DATE_PICKER_CONSTANTS, DatePickerFormatCallback, DatePickerParseCallback, DatePickerPrepareMaskCallback, DatePickerValueMode } from './base-date-picker-constants';\n\nexport interface IBaseDatePickerFoundation<TValue> extends ICustomElementFoundation {\n value: TValue | null | undefined;\n min: Date | string | null | undefined;\n max: Date | string | null | undefined;\n disabledDates: Date | Date[] | null | undefined;\n open: boolean;\n parseCallback: DatePickerParseCallback;\n formatCallback: DatePickerFormatCallback;\n prepareMaskCallback: DatePickerPrepareMaskCallback;\n popupClasses: string | string[];\n disabled: boolean;\n masked: boolean;\n maskFormat: string;\n showMaskFormat: boolean;\n valueMode: DatePickerValueMode;\n notifyInputValueChanges: boolean;\n allowInvalidDate: boolean;\n showToday: boolean;\n showClear: boolean;\n yearRange: string;\n}\n\nexport abstract class BaseDatePickerFoundation<TAdapter extends IBaseDatePickerAdapter, TPublicValue, TPrivateValue = TPublicValue> implements IBaseDatePickerFoundation<TPublicValue> {\n // State\n protected abstract _mode: CalendarMode;\n protected _value?: TPrivateValue | null = null;\n protected _min?: Date | null = null;\n protected _max?: Date | null = null;\n protected _disabledDates?: Date | Date[] | null = null;\n protected _open = false;\n protected _parseCallback: DatePickerParseCallback;\n protected _formatCallback: DatePickerFormatCallback;\n protected _prepareMaskCallback: DatePickerPrepareMaskCallback;\n protected _disableDayCallback: (date: Date) => boolean;\n protected _popupClasses: string | string[];\n protected _disabled = false;\n protected _masked = true;\n protected _maskFormat = DEFAULT_DATE_MASK;\n protected _showMaskFormat = false;\n protected _valueMode: DatePickerValueMode = 'object';\n protected _notifyInputValueChanges = true;\n protected _allowInvalidDate = false;\n protected _showToday = false;\n protected _showClear = false;\n protected _disabledDaysOfWeek: DayOfWeek[];\n protected _yearRange = '-50:+50';\n protected _isInitialized = false;\n\n // Listeners\n private _inputListener: (evt: Event) => void;\n private _inputKeydownListener: (evt: KeyboardEvent) => void;\n private _inputFocusListener: (evt: Event) => void;\n private _inputBlurListener: (evt: Event) => void;\n private _inputValueChangedListener: (value: string) => void;\n private _toggleMousedownListener: (evt: MouseEvent) => void;\n private _dropdownCloseListener: () => void;\n private _activeChangeListener: (id: string) => void;\n private _todayListener: () => void;\n private _clearListener: () => void;\n private _dateSelectListener: (evt: CustomEvent<ICalendarDateSelectEventData>) => void;\n \n constructor(protected _adapter: TAdapter) {\n this._inputListener = evt => this._onInput(evt);\n this._inputKeydownListener = evt => this._onInputKeydown(evt);\n this._inputFocusListener = evt => this._onInputFocus(evt);\n this._inputBlurListener = evt => this._onInputBlur(evt);\n this._inputValueChangedListener = value => this._onInputValueChanged(value);\n this._dropdownCloseListener = () => this._onDropdownClose();\n this._toggleMousedownListener = evt => this._onToggleMousedown(evt);\n this._dateSelectListener = evt => this._onDateSelected(evt.detail);\n this._activeChangeListener = id => this._onActiveDescendantChanged(id);\n this._todayListener = () => this._onToday();\n this._clearListener = () => this._onClear();\n }\n\n protected _initializeState?(): void;\n public abstract value: TPublicValue | null | undefined;\n protected abstract _emitChangeEvent(value: TPrivateValue | null | undefined, force?: boolean): boolean;\n protected abstract _emitOpenEvent(): void;\n protected abstract _emitCloseEvent(): void;\n protected abstract _onToday(): void;\n protected abstract _onClear(): void;\n protected abstract _getCurrentValue(): TPrivateValue | null | undefined;\n protected abstract _setFormattedInputValue(suppressValueChanges?: boolean): void;\n protected abstract _onInputValueChanged(value: string): void;\n protected abstract _handleInput(value: string): void;\n protected abstract _setValue(value: Date | null): void;\n protected abstract _onDateSelected(event: ICalendarDateSelectEventData): void;\n protected abstract _applyDisabledDates(): void;\n protected abstract _applyDisabledDaysOfWeek(): void;\n\n public initialize(): void {\n this._adapter.initialize();\n this._adapter.initializeAccessibility();\n\n if (!this._adapter.hasInputElement()) {\n throw new Error('Unable to locate child <input> element.');\n }\n\n this._initializeState?.();\n this._adapter.tryCreateToggle();\n\n if (!this._masked) {\n this._setInputChangeListeners();\n }\n\n this._initializeListeners();\n this._setFormattedInputValue(true);\n this._applyDisabled();\n this._applyMask();\n this._initializeValueChangedListeners();\n this._isInitialized = true;\n }\n\n public disconnect(): void {\n this._isInitialized = false;\n this._destroyListeners();\n\n if (this._masked) {\n this._adapter.destroyMask();\n }\n\n this._closeCalendar();\n this._adapter.destroy();\n }\n\n protected _initializeListeners(): void {\n this._adapter.addToggleListener('mousedown', this._toggleMousedownListener);\n this._adapter.addInputListener('keydown', this._inputKeydownListener, true);\n this._adapter.addInputListener('focus', this._inputFocusListener);\n this._adapter.addInputListener('blur', this._inputBlurListener);\n }\n\n protected _initializeValueChangedListeners(): void {\n this._adapter.setInputValueChangedListener(this, this._inputValueChangedListener);\n }\n\n protected _setInputChangeListeners(): void {\n this._adapter.addInputListener('input', this._inputListener);\n }\n\n protected _removeInputChangeListeners(): void {\n this._adapter.removeInputListener('input', this._inputListener);\n }\n\n protected _destroyListeners(): void {\n this._adapter.removeToggleListener('mousedown', this._toggleMousedownListener);\n this._adapter.removeInputListener('keydown', this._inputKeydownListener, true);\n this._adapter.removeInputListener('focus', this._inputFocusListener);\n this._adapter.removeInputListener('blur', this._inputBlurListener);\n this._removeInputChangeListeners();\n }\n\n protected _onInput(evt: Event): void {\n this._handleInput(this._adapter.getInputValue());\n }\n\n protected _onInputFocus(evt: Event): void {\n this._adapter.selectInputText();\n }\n\n protected _onInputBlur(evt: Event): void {\n this._formatInputValue();\n if (this._open && !this._adapter.isInputFocused()) {\n this._closeCalendar(true);\n }\n }\n\n protected _openCalendar(emitOpenEvent = false): void {\n this._formatInputValue();\n\n const calendarConfig: Partial<ICalendarComponent> = {\n mode: this._mode,\n value: this._getCurrentValue() as Date | Date[] | DateRange | null | undefined,\n min: this._min,\n max: this._max,\n disabledDates: this._disabledDates,\n yearRange: this._yearRange,\n todayButton: this._showToday,\n clearButton: this._showClear,\n todayCallback: this._todayListener,\n clearCallback: this._clearListener,\n disabledDateBuilder: this._disableDayCallback,\n disabledDaysOfWeek: this._disabledDaysOfWeek,\n preventFocus: true,\n menuAnimation: 'fade',\n fixedHeight: true,\n selectionFollowsMonth: true\n };\n const dropdownConfig: ICalendarDropdownPopupConfig = {\n popupClasses: this._popupClasses,\n closeCallback: this._dropdownCloseListener,\n activeChangeCallback: this._activeChangeListener\n };\n\n this._adapter.attachCalendar(calendarConfig, dropdownConfig);\n this._adapter.addDateSelectListener(this._dateSelectListener);\n this._open = true;\n this._adapter.setHostAttribute(BASE_DATE_PICKER_CONSTANTS.observedAttributes.OPEN);\n\n if (emitOpenEvent) {\n this._emitOpenEvent();\n }\n }\n\n protected _closeCalendar(emitCloseEvent = false): void {\n this._open = false;\n this._adapter.removeHostAttribute(BASE_DATE_PICKER_CONSTANTS.observedAttributes.OPEN);\n this._adapter.removeDateSelectListener(this._dateSelectListener);\n this._adapter.detachCalendar();\n if (emitCloseEvent) {\n this._emitCloseEvent();\n }\n }\n\n protected _onInputKeydown(evt: KeyboardEvent): void {\n // Handle keyboard shortcuts that make use of the shift key first\n if (evt.shiftKey) {\n switch (evt.key) {\n case 'Delete':\n case 'Backspace':\n evt.preventDefault();\n this._onClear();\n if (this._open) {\n this._closeCalendar(true);\n }\n return;\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'm':\n case 'M':\n case 'y':\n case 'Y':\n case 'd':\n case 'D':\n if (this._open) {\n evt.preventDefault();\n this._adapter.propagateCalendarKey(evt);\n return;\n }\n break;\n }\n }\n\n switch (evt.key) {\n case 'Escape':\n if (this._open) {\n evt.preventDefault();\n evt.stopPropagation();\n this._closeCalendar(true);\n }\n break;\n case 'ArrowDown':\n evt.preventDefault();\n if (!this._open) {\n this._adapter.selectInputText();\n this._openCalendar(true);\n } else {\n this._adapter.propagateCalendarKey(evt);\n }\n break;\n case 'ArrowUp':\n if (this._open) {\n evt.preventDefault();\n this._adapter.propagateCalendarKey(evt);\n }\n break;\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'Enter':\n case 'Home':\n case 'End':\n if (this._open) {\n if (evt.key === 'Enter') {\n evt.stopPropagation();\n }\n evt.preventDefault();\n // If we have an input mask applied, we want to make sure it doesn't receive the key events for left and right keys\n const isLeftRight = ['ArrowLeft', 'ArrowRight'].includes(evt.key);\n if (this._masked && isLeftRight) {\n evt.stopImmediatePropagation();\n }\n this._adapter.propagateCalendarKey(evt);\n }\n break;\n case 'n':\n case 't':\n evt.preventDefault();\n this._onToday();\n if (this._open) {\n this._closeCalendar(true);\n }\n break;\n case 'PageUp':\n case 'PageDown':\n if (this._open) {\n evt.preventDefault();\n this._adapter.propagateCalendarKey(evt);\n }\n break;\n case 'Tab':\n if (this._open) {\n const activeDate = this._adapter.getCalendarActiveDate();\n if (activeDate) {\n this._onDateSelected({\n date: activeDate,\n selected: true,\n type: 'date'\n });\n }\n }\n break;\n }\n }\n\n protected _getSanitizedDateString(value: string): string {\n return value.replace(/_|[a-z]|[A-Z]/g, '').replace(/\\/$|\\/\\/$/, '');\n }\n\n private _onToggleMousedown(evt: Event): void {\n if (this._disabled) {\n return;\n }\n\n evt.stopPropagation();\n\n if (this._adapter.isInputDisabled()) {\n return;\n }\n\n evt.preventDefault();\n\n if (this._open) {\n this._closeCalendar(true);\n } else {\n if (!Platform.isMobile) {\n this._adapter.tryFocusInput();\n } else {\n this._adapter.tryBlurInput();\n }\n\n this._openCalendar(true);\n }\n }\n\n private _onDropdownClose(): void {\n this._closeCalendar(true);\n }\n\n private _onActiveDescendantChanged(id: string): void {\n this._adapter.setActiveDescendant(id);\n }\n\n protected _formatInputValue(): void {\n const inputValue = this._adapter.getInputValue();\n if (inputValue) {\n const parsedDate = this._parseDateString(inputValue);\n if (isValidDate(parsedDate) && this._isDateValueAcceptable(parsedDate)) {\n const formattedDate = this._formatDate(parsedDate);\n if (formattedDate && formattedDate !== inputValue) {\n this._adapter.setInputValue(formattedDate, this._notifyInputValueChanges);\n }\n } else {\n if (!this._allowInvalidDate) {\n this._adapter.setInputValue('', this._notifyInputValueChanges);\n }\n }\n }\n }\n\n protected _formatDate(date: Date | null | undefined): string {\n if (!isValidDate(date)) {\n return '';\n }\n return typeof this._formatCallback === 'function' ? this._formatCallback(date) : formatDate(date);\n }\n\n protected _parseDateString(value: string): Date | null {\n value = value.replace(/_|\\s/g, '');\n if (!value || !value.length) {\n return null;\n }\n const parsedDate = typeof this._parseCallback === 'function' ? this._parseCallback(value) : parseDateString(value);\n return isValidDate(parsedDate) ? parsedDate : null;\n }\n\n protected _coerceDateValue(value?: Date | string | null): Date | null | undefined {\n if (typeof value === 'string') {\n return this._parseDateString(value);\n }\n return value;\n }\n\n protected _getTypedValue(value: Date | null | undefined): Date | string | null | undefined {\n switch (this._valueMode) {\n case 'object':\n return value;\n case 'string':\n return this._formatDate(value);\n case 'iso-string':\n if (value) {\n // Remove the time portion of the date\n value.setHours(0, 0, 0, 0);\n }\n return value ? value.toISOString() : null;\n default:\n return value;\n }\n }\n\n protected _isDateValueAcceptable(value?: Date | null): boolean {\n if (!value) {\n return true;\n }\n\n const passesMinDate = (): boolean => this._min && !this._allowInvalidDate ? this._min.getTime() <= value.getTime() : true;\n const passesMaxDate = (): boolean => this._max && !this._allowInvalidDate ? this._max.getTime() >= value.getTime() : true;\n const disabledDates = (): Date[] => Array.isArray(this._disabledDates) ? this._disabledDates : this._disabledDates ? [this._disabledDates] : [];\n const isNotDisabled = (): boolean => !disabledDates().some(bd => bd.getTime() === value.getTime());\n const dayNotDisabled = (): boolean => !(this._disabledDaysOfWeek && this._disabledDaysOfWeek.includes(value.getDay()));\n const dateNotDisabledThroughCallback = (): boolean => typeof this._disableDayCallback !== 'function' || !this._disableDayCallback(value);\n\n return passesMinDate() && passesMaxDate() && isNotDisabled() && dayNotDisabled() && dateNotDisabledThroughCallback();\n }\n\n protected _initializeMask(): void {\n const options: IDateInputMaskOptions = {\n showMaskFormat: this._showMaskFormat,\n pattern: this._maskFormat,\n onChange: (value: string) => this._handleInput(value)\n };\n\n if (this._prepareMaskCallback) {\n options.prepareCallback = (value, masked, flags, maskInstance) => {\n return this._prepareMaskCallback.call(null, value, masked, flags, maskInstance);\n };\n }\n\n this._adapter.initializeMask(options);\n }\n\n private _applyMask(): void {\n if (this._masked) {\n this._initializeMask();\n } else {\n this._adapter.destroyMask();\n this._formatInputValue();\n }\n }\n\n protected _applyMin(): void {\n if (this._isInitialized) {\n this._adapter.setCalendarMinDate(this._min);\n }\n }\n protected _applyMax(): void {\n if (this._isInitialized) {\n this._adapter.setCalendarMaxDate(this._max);\n }\n }\n\n private _applyDisableDayCallback(): void {\n this._adapter.setCalendarDisableDayCallback(this._disableDayCallback);\n }\n\n private _applyDisabled(): void {\n this._adapter.setDisabled(this._disabled);\n }\n\n public get valueMode(): DatePickerValueMode {\n return this._valueMode;\n }\n public set valueMode(value: DatePickerValueMode) {\n if (this._valueMode !== value) {\n const isValidMode = ['object', 'string', 'iso-string'].includes(value);\n if (!isValidMode) {\n return;\n }\n this._valueMode = value;\n this._emitChangeEvent(this._value);\n this._adapter.setHostAttribute(BASE_DATE_PICKER_CONSTANTS.observedAttributes.VALUE_MODE, this._valueMode);\n }\n }\n\n public get min(): Date | string | null | undefined {\n return this._min ? new Date(this._min.getTime()) : null;\n }\n public set min(value: Date | string | null | undefined) {\n if (this._min !== value) {\n const date = this._coerceDateValue(value);\n this._min = !!date ? new Date(date.getTime()) : null;\n this._applyMin();\n\n if (this._isInitialized && this._open) {\n this._adapter.setCalendarMinDate(this._min);\n }\n }\n }\n\n public get max(): Date | string | null | undefined {\n return this._max ? new Date(this._max.getTime()) : null;\n }\n public set max(value: Date | string | null | undefined) {\n if (this._max !== value) {\n this._max = this._coerceDateValue(value);\n this._applyMax();\n\n if (this._isInitialized && this._open) {\n this._adapter.setCalendarMaxDate(this._max);\n }\n }\n }\n\n public get open(): boolean {\n return this._open;\n }\n public set open(value: boolean) {\n if (this._open !== value) {\n if (this._isInitialized) {\n this._open = value;\n if (this._open) {\n this._openCalendar();\n } else {\n this._closeCalendar();\n }\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 if (this._isInitialized) {\n this._applyDisabled();\n }\n }\n }\n\n public get disabledDates(): Date | Date[] | null | undefined {\n if (!this._disabledDates) {\n return null;\n }\n\n if (Array.isArray(this._disabledDates)) {\n return this._disabledDates.map(d => new Date(d.getTime()));\n }\n\n return new Date(this._disabledDates.getTime());\n }\n\n public set disabledDates(value: Date | Date[] | null | undefined) {\n if (!value) {\n this._disabledDates = null;\n } else if (Array.isArray(value)) {\n this._disabledDates = value.map(d => new Date(d.getTime()));\n } else {\n this._disabledDates = new Date(value.getTime());\n }\n\n if (this._isInitialized && this._open) {\n this._adapter.setCalendarDisabledDates(this._disabledDates);\n }\n\n this._applyDisabledDates();\n }\n\n public get popupClasses(): string | string[] {\n if (Array.isArray(this._popupClasses)) {\n return [...this._popupClasses];\n }\n\n return this._popupClasses;\n }\n public set popupClasses(value: string | string[]) {\n if (Array.isArray(value)) {\n this._popupClasses = [...value];\n } else {\n this._popupClasses = value;\n }\n }\n\n public get masked(): boolean {\n return this._masked;\n }\n public set masked(value: boolean) {\n if (this._masked !== value) {\n this._masked = value;\n if (this._isInitialized) {\n if (this._masked) {\n this._removeInputChangeListeners();\n this._applyMask();\n } else {\n this._adapter.destroyMask();\n this._setInputChangeListeners();\n this._formatInputValue();\n }\n }\n }\n }\n\n public get maskFormat(): string {\n return this._maskFormat;\n }\n public set maskFormat(value: string) {\n if (this._maskFormat !== value) {\n this._maskFormat = value;\n if (this._isInitialized) {\n this._applyMask();\n }\n }\n }\n\n public get showMaskFormat(): boolean {\n return this._showMaskFormat;\n }\n public set showMaskFormat(value: boolean) {\n if (this._showMaskFormat !== value) {\n this._showMaskFormat = value;\n if (this._isInitialized) {\n this._applyMask();\n }\n }\n }\n\n public get notifyInputValueChanges(): boolean {\n return this._notifyInputValueChanges;\n }\n public set notifyInputValueChanges(value: boolean) {\n this._notifyInputValueChanges = value;\n }\n\n public get allowInvalidDate(): boolean {\n return this._allowInvalidDate;\n }\n public set allowInvalidDate(value: boolean) {\n if (this._allowInvalidDate !== value) {\n this._allowInvalidDate = value;\n this._adapter.toggleHostAttribute(BASE_DATE_PICKER_CONSTANTS.observedAttributes.ALLOW_INVALID_DATE, this._allowInvalidDate);\n }\n }\n\n public get disabledDaysOfWeek(): DayOfWeek[] {\n return this._disabledDaysOfWeek;\n }\n public set disabledDaysOfWeek(value: DayOfWeek[]) {\n if (this._disabledDaysOfWeek !== value) {\n this._disabledDaysOfWeek = value;\n\n if (this._isInitialized && this._open) {\n this._adapter.setCalendarDisabledDaysOfWeek(this._disabledDaysOfWeek);\n }\n\n this._applyDisabledDaysOfWeek();\n }\n }\n\n public get disableDayCallback(): (date: Date) => boolean {\n return this._disableDayCallback;\n }\n public set disableDayCallback(value: (date: Date) => boolean) {\n if (value !== this._disableDayCallback) {\n this._disableDayCallback = value;\n this._applyDisableDayCallback();\n }\n }\n\n public get parseCallback(): DatePickerParseCallback {\n return this._parseCallback;\n }\n public set parseCallback(cb: DatePickerParseCallback) {\n this._parseCallback = cb;\n if (this._isInitialized) {\n this._applyMask();\n }\n }\n\n public get formatCallback(): DatePickerFormatCallback {\n return this._formatCallback;\n }\n public set formatCallback(cb: DatePickerFormatCallback) {\n this._formatCallback = cb;\n if (this._isInitialized) {\n this._applyMask();\n }\n }\n\n public get prepareMaskCallback(): DatePickerPrepareMaskCallback {\n return this._prepareMaskCallback;\n }\n public set prepareMaskCallback(cb: DatePickerPrepareMaskCallback) {\n this._prepareMaskCallback = cb;\n if (this._isInitialized) {\n this._applyMask();\n }\n }\n\n public get showToday(): boolean {\n return this._showToday;\n }\n public set showToday(value: boolean) {\n this._showToday = value;\n }\n\n public get showClear(): boolean {\n return this._showClear;\n }\n public set showClear(value: boolean) {\n this._showClear = value;\n }\n\n public get yearRange(): string {\n return this._yearRange;\n }\n public set yearRange(value: string) {\n if (this._yearRange !== value) {\n this._yearRange = value;\n\n if (this._isInitialized && this._open) {\n this._adapter.setCalendarYearRange(this._yearRange);\n }\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["observedAttributes", "attributes", "selectors", "BASE_DATE_PICKER_CONSTANTS", "BaseDatePickerComponent", "BaseComponent", "BASE_DATE_PICKER_CONSTANTS", "ensureChild", "name", "oldValue", "newValue", "coerceBoolean", "coerceNumberArray", "__decorateClass", "FoundationProperty", "createToggleElement", "iconName", "iconButtonElement", "buttonElement", "iconElement", "BaseDatePickerAdapter", "BaseAdapter", "component", "randomChars", "_a", "cb", "type", "listener", "calendarConfig", "dropdownConfig", "_b", "_c", "date", "CALENDAR_CONSTANTS", "value", "disableDayCallback", "evt", "textField", "toggleElement", "BASE_DATE_PICKER_CONSTANTS", "existingIconButton", "ICON_BUTTON_CONSTANTS", "iconButtonElement", "createToggleElement", "textFieldRoot", "getShadowElement", "TEXT_FIELD_CONSTANTS", "BaseDatePickerFoundation", "_adapter", "DEFAULT_DATE_MASK", "evt", "value", "id", "_a", "emitOpenEvent", "calendarConfig", "dropdownConfig", "BASE_DATE_PICKER_CONSTANTS", "emitCloseEvent", "isLeftRight", "activeDate", "Platform", "inputValue", "parsedDate", "isValidDate", "formattedDate", "date", "formatDate", "parseDateString", "passesMinDate", "passesMaxDate", "disabledDates", "isNotDisabled", "bd", "dayNotDisabled", "dateNotDisabledThroughCallback", "options", "masked", "flags", "maskInstance", "d", "cb"]
7
- }