@tylertech/forge 2.15.0 → 2.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +240 -86
- package/dist/esm/accordion/index.js +1 -1
- package/dist/esm/app-bar/help-button/index.js +1 -1
- package/dist/esm/app-bar/index.js +1 -1
- package/dist/esm/autocomplete/index.js +1 -1
- package/dist/esm/chip-field/index.js +1 -1
- package/dist/esm/chunks/{chunk.YBEBD4CN.js → chunk.22OZJNVS.js} +2 -2
- package/dist/esm/chunks/chunk.26XTVQKW.js +7 -0
- package/dist/esm/chunks/chunk.26XTVQKW.js.map +7 -0
- package/dist/esm/chunks/{chunk.X5LGVZGO.js → chunk.27TSALYN.js} +2 -2
- package/dist/esm/chunks/chunk.27TSALYN.js.map +7 -0
- package/dist/esm/chunks/{chunk.7HQCLSUK.js → chunk.6LMDKS5P.js} +2 -2
- package/dist/esm/chunks/{chunk.7HQCLSUK.js.map → chunk.6LMDKS5P.js.map} +1 -1
- package/dist/esm/chunks/{chunk.J2H5RXTX.js → chunk.7BESNUTG.js} +2 -2
- package/dist/esm/chunks/chunk.7LI25R6R.js +7 -0
- package/dist/esm/chunks/chunk.7LI25R6R.js.map +7 -0
- package/dist/esm/chunks/chunk.A47X5VG3.js +7 -0
- package/dist/esm/chunks/chunk.A47X5VG3.js.map +7 -0
- package/dist/esm/chunks/{chunk.MXTDW27J.js → chunk.BUCIIOGE.js} +2 -2
- package/dist/esm/chunks/chunk.EE25TGNW.js +7 -0
- package/dist/esm/chunks/chunk.EE25TGNW.js.map +7 -0
- package/dist/esm/chunks/chunk.GCR7QZRO.js +7 -0
- package/dist/esm/chunks/chunk.GCR7QZRO.js.map +7 -0
- package/dist/esm/chunks/{chunk.XHV3GQ7L.js → chunk.HI2DQJZG.js} +2 -2
- package/dist/esm/chunks/{chunk.44IJE5UL.js → chunk.HMCOY5WC.js} +2 -2
- package/dist/esm/chunks/chunk.HMCOY5WC.js.map +7 -0
- package/dist/esm/chunks/{chunk.E6CYXNS2.js → chunk.IJW7Z6YD.js} +2 -2
- package/dist/esm/chunks/{chunk.RHFNK6EE.js → chunk.K4DGAJOM.js} +2 -2
- package/dist/esm/chunks/{chunk.JE7CPIR4.js → chunk.K4M53T3A.js} +2 -2
- package/dist/esm/chunks/{chunk.ESR2NHOS.js → chunk.KKMKGN2I.js} +2 -2
- package/dist/esm/chunks/{chunk.MHOS3IHQ.js → chunk.MUEXD4SD.js} +2 -2
- package/dist/esm/chunks/{chunk.O73S5LF3.js → chunk.P4EW5GAS.js} +2 -2
- package/dist/esm/chunks/{chunk.OZ5BPXNV.js → chunk.REH25ELY.js} +2 -2
- package/dist/esm/chunks/chunk.TQCGXWZF.js +7 -0
- package/dist/esm/chunks/chunk.TQCGXWZF.js.map +7 -0
- package/dist/esm/chunks/{chunk.HU27X3IT.js → chunk.UDAWTDPV.js} +2 -2
- package/dist/esm/chunks/chunk.VPH7GX4C.js +7 -0
- package/dist/esm/chunks/chunk.VPH7GX4C.js.map +7 -0
- package/dist/esm/chunks/chunk.XZOIRI4V.js +7 -0
- package/dist/esm/chunks/chunk.XZOIRI4V.js.map +7 -0
- package/dist/esm/chunks/chunk.Y5A7RQ5M.js +7 -0
- package/dist/esm/chunks/chunk.Y5A7RQ5M.js.map +7 -0
- package/dist/esm/chunks/{chunk.DFJUCHEO.js → chunk.YUCLBBES.js} +2 -2
- package/dist/esm/chunks/chunk.YWVKDJXZ.js +7 -0
- package/dist/esm/chunks/chunk.YWVKDJXZ.js.map +7 -0
- package/dist/esm/date-picker/index.js +1 -1
- package/dist/esm/date-range-picker/index.js +1 -1
- package/dist/esm/expansion-panel/index.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/list-dropdown/index.js +1 -1
- package/dist/esm/menu/index.js +1 -1
- package/dist/esm/paginator/index.js +1 -1
- package/dist/esm/select/core/index.js +1 -1
- package/dist/esm/select/index.js +1 -1
- package/dist/esm/select/select/index.js +1 -1
- package/dist/esm/select/select-dropdown/index.js +1 -1
- package/dist/esm/split-view/index.js +1 -1
- package/dist/esm/split-view/split-view/index.js +1 -1
- package/dist/esm/split-view/split-view-panel/index.js +1 -1
- package/dist/esm/stack/index.js +1 -1
- package/dist/esm/stepper/index.js +1 -1
- package/dist/esm/stepper/step/index.js +1 -1
- package/dist/esm/stepper/stepper/index.js +1 -1
- package/dist/esm/table/index.js +1 -1
- package/dist/esm/text-field/index.js +1 -1
- package/dist/esm/time-picker/index.js +1 -1
- package/esm/autocomplete/autocomplete-constants.d.ts +1 -0
- package/esm/autocomplete/autocomplete-constants.js +1 -0
- package/esm/autocomplete/autocomplete-foundation.d.ts +5 -0
- package/esm/autocomplete/autocomplete-foundation.js +19 -2
- package/esm/autocomplete/autocomplete.d.ts +3 -0
- package/esm/autocomplete/autocomplete.js +7 -0
- package/esm/chip-field/chip-field-foundation.d.ts +1 -1
- package/esm/date-picker/base/base-date-picker-adapter.d.ts +2 -2
- package/esm/date-picker/base/base-date-picker-foundation.d.ts +2 -2
- package/esm/date-picker/base/base-date-picker-foundation.js +8 -5
- package/esm/date-picker/date-picker-adapter.js +5 -7
- package/esm/date-range-picker/date-range-picker-adapter.d.ts +4 -2
- package/esm/date-range-picker/date-range-picker-adapter.js +20 -18
- package/esm/date-range-picker/date-range-picker-foundation.d.ts +4 -1
- package/esm/date-range-picker/date-range-picker-foundation.js +48 -14
- package/esm/expansion-panel/expansion-panel-constants.d.ts +2 -0
- package/esm/expansion-panel/expansion-panel-constants.js +3 -1
- package/esm/expansion-panel/expansion-panel-foundation.js +4 -1
- package/esm/expansion-panel/expansion-panel.js +1 -1
- package/esm/field/field-adapter.d.ts +4 -2
- package/esm/field/field-adapter.js +5 -2
- package/esm/field/field-foundation.d.ts +2 -2
- package/esm/field/field-foundation.js +7 -9
- package/esm/select/core/base-select-foundation.js +8 -3
- package/esm/split-view/split-view/split-view-adapter.js +3 -1
- package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
- package/esm/stack/stack-constants.d.ts +2 -0
- package/esm/stack/stack-constants.js +1 -0
- package/esm/stack/stack-foundation.d.ts +4 -4
- package/esm/stack/stack-foundation.js +2 -2
- package/esm/stack/stack.d.ts +3 -3
- package/esm/stack/stack.js +1 -1
- package/esm/text-field/text-field-adapter.d.ts +1 -1
- package/esm/text-field/text-field-adapter.js +4 -3
- package/esm/time-picker/time-picker-adapter.js +4 -7
- package/esm/time-picker/time-picker-foundation.js +9 -6
- package/package.json +1 -1
- package/styles/stack/_mixins.scss +1 -1
- package/styles/stack/stack.scss +4 -3
- package/dist/esm/chunks/chunk.44IJE5UL.js.map +0 -7
- package/dist/esm/chunks/chunk.DQJPIDVW.js +0 -7
- package/dist/esm/chunks/chunk.DQJPIDVW.js.map +0 -7
- package/dist/esm/chunks/chunk.HV6SPRC4.js +0 -7
- package/dist/esm/chunks/chunk.HV6SPRC4.js.map +0 -7
- package/dist/esm/chunks/chunk.II4Q4QKJ.js +0 -7
- package/dist/esm/chunks/chunk.II4Q4QKJ.js.map +0 -7
- package/dist/esm/chunks/chunk.LDN4HLF7.js +0 -7
- package/dist/esm/chunks/chunk.LDN4HLF7.js.map +0 -7
- package/dist/esm/chunks/chunk.LFLREB3C.js +0 -7
- package/dist/esm/chunks/chunk.LFLREB3C.js.map +0 -7
- package/dist/esm/chunks/chunk.NW7NV2A2.js +0 -7
- package/dist/esm/chunks/chunk.NW7NV2A2.js.map +0 -7
- package/dist/esm/chunks/chunk.SAQVWOVK.js +0 -7
- package/dist/esm/chunks/chunk.SAQVWOVK.js.map +0 -7
- package/dist/esm/chunks/chunk.SN5XYZZP.js +0 -7
- package/dist/esm/chunks/chunk.SN5XYZZP.js.map +0 -7
- package/dist/esm/chunks/chunk.UF43SSFY.js +0 -7
- package/dist/esm/chunks/chunk.UF43SSFY.js.map +0 -7
- package/dist/esm/chunks/chunk.ULIFS3UR.js +0 -7
- package/dist/esm/chunks/chunk.ULIFS3UR.js.map +0 -7
- package/dist/esm/chunks/chunk.X5LGVZGO.js.map +0 -7
- /package/dist/esm/chunks/{chunk.YBEBD4CN.js.map → chunk.22OZJNVS.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.J2H5RXTX.js.map → chunk.7BESNUTG.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.MXTDW27J.js.map → chunk.BUCIIOGE.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.XHV3GQ7L.js.map → chunk.HI2DQJZG.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.E6CYXNS2.js.map → chunk.IJW7Z6YD.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.RHFNK6EE.js.map → chunk.K4DGAJOM.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.JE7CPIR4.js.map → chunk.K4M53T3A.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.ESR2NHOS.js.map → chunk.KKMKGN2I.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.MHOS3IHQ.js.map → chunk.MUEXD4SD.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.O73S5LF3.js.map → chunk.P4EW5GAS.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.OZ5BPXNV.js.map → chunk.REH25ELY.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.HU27X3IT.js.map → chunk.UDAWTDPV.js.map} +0 -0
- /package/dist/esm/chunks/{chunk.DFJUCHEO.js.map → chunk.YUCLBBES.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/select/core/base-select-constants.ts", "../../src/select/core/select-utils.ts", "../../src/select/core/base-select-foundation.ts", "../../src/select/core/base-select.ts", "../../src/select/core/base-select-adapter.ts"],
|
|
4
|
+
"sourcesContent": ["import { IListDropdownOption, IListDropdownOptionGroup } from '../../list-dropdown/list-dropdown-constants';\n\nexport type SelectOptionBuilder = (option: ISelectOption, parentElement: HTMLElement) => HTMLElement;\nexport type SelectSelectedTextBuilder = (selectedOptions: IListDropdownOption[]) => string;\nexport type SelectOptionListenerDestructor = () => void;\nexport type SelectBeforeValueChangeCallback<T> = (value: T | T[]) => boolean | Promise<boolean>;\n\nexport interface ISelectOption extends IListDropdownOption {}\nexport interface ISelectOptionGroup extends IListDropdownOptionGroup {}\n\nconst observedAttributes = {\n VALUE: 'value',\n MULTIPLE: 'multiple',\n OBSERVE_SCROLL: 'observe-scroll',\n OBSERVE_SCROLL_THRESHOLD: 'observe-scroll-threshold',\n POPUP_CLASSES: 'popup-classes',\n OPTION_LIMIT: 'option-limit',\n SYNC_POPUP_WIDTH: 'sync-popup-width',\n CONSTRAIN_POPUP_WIDTH: 'constrain-popup-width',\n WRAP_OPTION_TEXT: 'wrap-option-text'\n};\n\nconst attributes = {\n ...observedAttributes\n};\n\nconst events = {\n CHANGE: 'change'\n};\n\nexport const BASE_SELECT_CONSTANTS = {\n attributes,\n events\n};\n", "import { isDefined, isObject } from '@tylertech/forge-core';\nimport { ISelectOption, ISelectOptionGroup } from './base-select-constants';\n\nexport enum SelectOptionType { Option, Group }\n\n/**\n * Determines if the provided options are of the specified type.\n * @param options The options either grouped or individual.\n * @param type The type of option to detect.\n */\nexport function isSelectOptionType(options: ISelectOption[] | ISelectOptionGroup[], type: SelectOptionType): boolean {\n const isOptionGroups = options.some((o: ISelectOption | ISelectOptionGroup) => isOptionGroupObject(o));\n const isOptionTypes = options.some((o: ISelectOption | ISelectOptionGroup) => isOptionObject(o));\n return (isOptionGroups && type === SelectOptionType.Group) || (isOptionTypes && type === SelectOptionType.Option);\n}\n\nexport function isOptionGroupObject(o: ISelectOption | ISelectOptionGroup): o is ISelectOptionGroup {\n return isDefined(o) && isObject(o) && o.hasOwnProperty('options');\n}\n\nexport function isOptionObject(o: ISelectOption | ISelectOptionGroup): o is ISelectOption {\n return isDefined(o) && isObject(o) && o.hasOwnProperty('label') && o.hasOwnProperty('value');\n}\n", "import { isDefined, isDeepEqual, randomChars } from '@tylertech/forge-core';\nimport { OptionListenerDestructor } from '../select/select-adapter';\nimport { ISelectOption, ISelectOptionGroup, SelectSelectedTextBuilder, SelectOptionBuilder, BASE_SELECT_CONSTANTS, SelectBeforeValueChangeCallback } from './base-select-constants';\nimport { isSelectOptionType, SelectOptionType } from './select-utils';\nimport { IListDropdownConfig, ListDropdownHeaderBuilder, ListDropdownFooterBuilder } from '../../list-dropdown/list-dropdown-constants';\nimport { IBaseSelectAdapter } from './base-select-adapter';\nimport { IListDropdownAwareFoundation, ListDropdownAwareFoundation } from '../../list-dropdown/list-dropdown-aware-foundation';\n\nexport interface IBaseSelectFoundation extends IListDropdownAwareFoundation {\n value: any;\n selectedIndex: number | number[];\n options: ISelectOption[] | ISelectOptionGroup[];\n multiple: boolean;\n open: boolean;\n popupElement: HTMLElement | undefined;\n optionBuilder: SelectOptionBuilder;\n selectedTextBuilder: SelectSelectedTextBuilder;\n beforeValueChange: SelectBeforeValueChangeCallback<any>;\n appendOptions(options: ISelectOption[] | ISelectOptionGroup[]): void;\n selectAll(): void;\n deselectAll(): void;\n initialize(): void;\n initializeTarget(): void;\n disconnect(): void;\n}\n\nexport abstract class BaseSelectFoundation<T extends IBaseSelectAdapter> extends ListDropdownAwareFoundation implements IBaseSelectFoundation {\n protected _options: ISelectOption[] | ISelectOptionGroup[] = [];\n protected _value: any = [];\n protected _multiple = false;\n protected _open = false;\n protected _optionBuilder: SelectOptionBuilder;\n protected _selectedTextBuilder: SelectSelectedTextBuilder;\n protected _selectedValues: string[] = [];\n protected _selectedLabels: string[] = [];\n protected _selectedIndexes: number[] = [];\n protected _filterTimeout: number | undefined;\n protected _filterString = '';\n protected _identifier: string;\n protected _targetWidthCallback: () => number;\n protected _beforeValueChange: SelectBeforeValueChangeCallback<unknown>;\n private _focusListener: (evt: Event) => void;\n private _blurListener: (evt: FocusEvent) => void;\n private _clickListener: (evt: MouseEvent) => void;\n private _keydownListener: (evt: KeyboardEvent) => void;\n private _optionsChangedListener: (options: ISelectOption[] | ISelectOptionGroup[]) => void;\n private _optionListenerDestructor: OptionListenerDestructor;\n private _activeChangeListener: (id: string) => void;\n private _dropdownScrollEndListener: () => void;\n private _valueChanging: Promise<boolean> | undefined;\n private _dismissListener: () => void;\n\n constructor(protected _adapter: T) {\n super();\n this._focusListener = evt => this._onFocus(evt);\n this._blurListener = evt => this._onBlur(evt);\n this._clickListener = evt => this._onClick(evt);\n this._keydownListener = evt => this._onKeydown(evt);\n this._optionsChangedListener = options => this._onOptionsChanged(options);\n this._activeChangeListener = id => this._onActiveOptionChanged(id);\n this._dropdownScrollEndListener = () => this._onDropdownScrollEnd();\n this._dismissListener = () => this._onDismiss();\n this._identifier = randomChars();\n }\n\n protected abstract _onDropdownScrollEnd(): void;\n protected _onFocus(evt: Event): void {}\n\n public initialize(): void {\n if (this._optionListenerDestructor) {\n this._optionListenerDestructor();\n }\n this._optionListenerDestructor = this._adapter.setOptionsListener(this._optionsChangedListener);\n this._initializeValue();\n }\n\n public initializeTarget(): void {\n this._adapter.initializeAccessibility();\n this._adapter.setMultiple(this._multiple);\n this._adapter.addClickListener(this._clickListener);\n this._adapter.addTargetListener('blur', this._blurListener);\n this._adapter.addTargetListener('focus', this._focusListener);\n this._adapter.addTargetListener('keydown', this._keydownListener);\n }\n\n public disconnect(): void {\n this._adapter.removeClickListener(this._clickListener);\n this._adapter.removeTargetListener('blur', this._blurListener);\n this._adapter.removeTargetListener('focus', this._focusListener);\n this._adapter.removeTargetListener('keydown', this._keydownListener);\n\n if (this._open) {\n this._closeDropdown();\n }\n\n if (this._optionListenerDestructor) {\n this._optionListenerDestructor();\n }\n }\n\n public appendOptions(options: ISelectOption[] | ISelectOptionGroup[]): void {\n this._adapter.setOptions(options, false);\n if (this._open) {\n this._adapter.appendDropdownOptions(options);\n }\n }\n\n public selectAll(): void {\n if (this._multiple) {\n this.value = this._flatOptions.map(o => o.value);\n }\n }\n\n public deselectAll(): void {\n if (this._multiple) {\n this.value = [];\n }\n }\n\n protected get _flatOptions(): ISelectOption[] {\n if (isSelectOptionType(this._options, SelectOptionType.Group)) {\n return [].concat.apply([], (this._options as ISelectOptionGroup[]).map(g => g.options)) as ISelectOption[];\n }\n return this._options as ISelectOption[];\n }\n\n private get _nonDividerOptions(): ISelectOption[] {\n return this._flatOptions.filter(o => !o.divider);\n }\n\n protected _initializeValue(): void {\n const options = (this._options.length && this._options) || this._adapter.getOptions();\n if (isDefined(this._value) && options.length) {\n this._applyValue(this._value);\n }\n }\n\n protected _onClick(evt: MouseEvent): void {\n if (evt.button !== 0) {\n return;\n }\n if (!this._open) {\n this._openDropdown();\n } else {\n this._closeDropdown();\n }\n }\n\n protected _onBlur(evt: FocusEvent): void {\n // If the blur event was triggered by an element within the popup then ignore it\n if (this._adapter.isFocusWithinPopup(evt.relatedTarget as HTMLElement)) {\n return;\n }\n\n if (this._open) {\n this._closeDropdown();\n }\n }\n\n\n protected _openDropdown(): void {\n this._options = this._adapter.getOptions();\n\n if (!this._flatOptions.length) {\n return;\n }\n\n this._open = true;\n const config: IListDropdownConfig = {\n options: this._options,\n multiple: this._multiple,\n selectedValues: [...this._selectedValues],\n id: this._identifier,\n optionBuilder: this._optionBuilder,\n syncWidth: this._syncPopupWidth,\n constrainViewportWidth: this._constrainPopupWidth,\n wrapOptionText: this._wrapOptionText,\n observeScroll: this._observeScroll,\n observeScrollThreshold: this._observeScrollThreshold,\n scrollEndListener: this._dropdownScrollEndListener,\n activeChangeCallback: this._activeChangeListener,\n targetWidthCallback: this._targetWidthCallback,\n popupClasses: this._popupClasses,\n optionLimit: this._optionLimit,\n headerBuilder: this._popupHeaderBuilder,\n footerBuilder: this._popupFooterBuilder,\n closeCallback: () => this._closeDropdown(),\n selectCallback: (value: any) => {\n const flatOptions = this._flatOptions;\n const option = flatOptions.find(o => o.value === value);\n if (option) {\n const index = flatOptions.indexOf(option);\n this._onSelect(option, index, true);\n }\n }\n };\n this._adapter.open(config);\n this._adapter.setDismissListener(this._dismissListener);\n }\n\n /**\n * Closes the dropdown.\n */\n protected _closeDropdown(): void {\n this._open = false;\n this._adapter.close();\n }\n\n /**\n * Handles selecting an item in the dropdown.\n * @param {ISelectOption} option The selected option.\n * @param {number} optionIndex The index of the selected option.\n */\n protected async _onSelect(option: ISelectOption, optionIndex: number, closeDropdown = true): Promise<boolean> {\n return new Promise(async resolve => {\n if (this._valueChanging) {\n return Promise.resolve(false);\n }\n\n const value = option ? option.value : '';\n const label = option ? option.label : '';\n\n // Store the current selections in case we need to rollback (if the event was cancelled)\n const prevValues = [...this._value];\n const prevSelectedValues = [...this._selectedValues];\n const prevSelectedLabels = [...this._selectedLabels];\n const prevSelectedIndexes = [...this._selectedIndexes];\n\n if (this._multiple) {\n if (this._selectedValues.includes(value)) {\n const index = this._selectedValues.indexOf(value);\n this._selectedValues.splice(index, 1);\n this._selectedLabels.splice(index, 1);\n this._selectedIndexes.splice(index, 1);\n } else {\n this._selectedValues.push(value);\n this._selectedLabels.push(label);\n this._selectedIndexes.push(optionIndex);\n }\n } else {\n if (isDefined(value)) {\n this._selectedValues[0] = value;\n this._selectedLabels[0] = label;\n this._selectedIndexes[0] = optionIndex;\n } else {\n this._selectedValues = [];\n this._selectedLabels = [];\n this._selectedIndexes = [];\n }\n }\n\n this._value = [...this._selectedValues];\n\n const rollbackValue = (): void => {\n this._selectedValues = [...prevSelectedValues];\n this._selectedLabels = [...prevSelectedLabels];\n this._selectedIndexes = [...prevSelectedIndexes];\n this._value = [...prevValues];\n };\n\n const applyValue = (): void => {\n // If we're in multiselect mode, we need to toggle the selected option\n if (this._multiple) {\n const isSelected = this._selectedIndexes.includes(optionIndex);\n this._adapter.toggleOptionMultiple(optionIndex, isSelected);\n }\n\n this._applySelection();\n };\n\n const data = this.multiple ? [...this._selectedValues] : this._selectedValues[0];\n\n // We close the dropdown immediately if in single selection mode\n if (this._open && closeDropdown && !this._multiple) {\n this._closeDropdown();\n }\n\n // First we check to see if there is an before change callback and execute that\n if (typeof this._beforeValueChange === 'function') {\n this._valueChanging = Promise.resolve(this._beforeValueChange.call(null, data));\n const shouldContinue = await this._valueChanging;\n this._valueChanging = undefined;\n if (!shouldContinue) {\n rollbackValue();\n this._tryUpdateDropdownPosition();\n return resolve(false);\n }\n }\n\n // Now we can emit the change event AFTER the before change callback has been executed and returned true\n const cancelled = !this._adapter.emitHostEvent(BASE_SELECT_CONSTANTS.events.CHANGE, data, true, true);\n if (!cancelled) {\n applyValue();\n } else {\n rollbackValue();\n }\n\n this._tryUpdateDropdownPosition();\n resolve(!cancelled);\n });\n }\n\n private _selectActiveOption(): void {\n const activeOptionIndex = this._adapter.getActiveOptionIndex();\n if (activeOptionIndex >= 0 && this._nonDividerOptions[activeOptionIndex]) {\n this._onSelect(this._nonDividerOptions[activeOptionIndex], activeOptionIndex);\n }\n }\n\n protected _tryUpdateDropdownPosition(): void {\n if (this._open) {\n this._adapter.queueDropdownPositionUpdate();\n }\n }\n\n protected _reset(): void {\n this._selectedValues = [];\n this._selectedLabels = [];\n this._selectedIndexes = [];\n }\n\n protected _applyValue(value: string | string[]): void {\n this._selectedValues = [];\n this._selectedLabels = [];\n\n this._options = this._adapter.getOptions();\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n this._value = [];\n\n // Ensure that the values passed are actually existing options\n for (const val of value) {\n if (!this._value.includes(val)) {\n this._value.push(val);\n }\n const option = this._flatOptions.find(o => isDeepEqual(o.value, val));\n if (option) {\n this._selectedValues.push(option.value);\n this._selectedLabels.push(option.label);\n }\n }\n\n // Update the selected indexes based on the values that are now selected\n this._selectedIndexes = this._selectedValues.map(val => this._flatOptions.findIndex(o => o.value === val));\n\n // Update the selected options in the dropdown\n this._adapter.patchSelectedValues(this._selectedValues);\n }\n \n /**\n * Handles the user dismissing the dropdown.\n */\n protected _onDismiss(): void {\n this._closeDropdown();\n }\n\n /** Creates the selected text value from the selected label values. */\n protected _getSelectedText(): string {\n if (typeof this._selectedTextBuilder === 'function') {\n const selectedOptions = this._flatOptions.filter(o => this._selectedValues.includes(o.value));\n return this._selectedTextBuilder(selectedOptions);\n }\n\n if (this._multiple) {\n if (this._selectedLabels.length) {\n if (this._selectedLabels.length === 1) {\n return this._selectedLabels[0];\n } else {\n return `${this._selectedLabels.length} options selected`;\n }\n } else {\n return '';\n }\n }\n \n return this._selectedLabels\n .filter(v => v && v.length)\n .join(' ')\n .trim();\n }\n\n private _onKeydown(evt: KeyboardEvent): void {\n const isEscapeKey = evt.key === 'Escape' || evt.keyCode === 27;\n const isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n const isSpace = evt.key === 'Space' || evt.keyCode === 32;\n const isArrowDown = evt.key === 'ArrowDown' || evt.keyCode === 40;\n const isArrowUp = evt.key === 'ArrowUp' || evt.keyCode === 38;\n const isFilterableCharacter = evt.keyCode >= 48 && evt.keyCode <= 90;\n const isHomeKey = evt.key === 'Home' || evt.keyCode === 36;\n const isEndKey = evt.key === 'End' || evt.keyCode === 35;\n const isTabKey = evt.key === 'Tab';\n\n // We automatically select the active option if the dropdown is open and in single selection mode\n if (isTabKey && this._open && !this._multiple) {\n this._selectActiveOption();\n return;\n }\n\n // If an active filter was started, clear it now\n if (!isFilterableCharacter && this._filterTimeout) {\n window.clearTimeout(this._filterTimeout);\n this._filterString = '';\n this._filterTimeout = undefined;\n }\n\n if (isEscapeKey) {\n evt.preventDefault();\n evt.stopPropagation();\n if (this._open) {\n this._closeDropdown();\n return;\n }\n }\n\n if (isSpace) {\n evt.preventDefault();\n\n if (!this._open) {\n this._openDropdown();\n } else {\n this._closeDropdown();\n }\n } else if (isEnter) {\n if (this._open) {\n evt.stopPropagation();\n evt.preventDefault();\n this._options = this._adapter.getOptions();\n this._selectActiveOption();\n }\n } else if (isArrowUp || isArrowDown) {\n evt.preventDefault();\n\n if (!this._open) {\n this._openDropdown();\n this._adapter.activateFirstOption();\n return;\n }\n\n if (this._flatOptions.length === 0) {\n return;\n }\n\n let optionIndex = 0;\n if (this._open) {\n optionIndex = this._adapter.getActiveOptionIndex();\n if (optionIndex === -1) {\n optionIndex = this._getFirstSelectedOptionIndex();\n }\n } else {\n optionIndex = this._getFirstSelectedOptionIndex();\n }\n\n if (isArrowUp) {\n optionIndex = this._getPreviousHighlightableOptionIndex(optionIndex, this._nonDividerOptions);\n } else {\n optionIndex = this._getNextHighlightableOptionIndex(optionIndex, this._nonDividerOptions);\n }\n\n this._adapter.highlightActiveOption(optionIndex);\n } else if (isHomeKey) {\n if (this._open) {\n evt.preventDefault();\n this._adapter.highlightActiveOption(this._nonDividerOptions.findIndex(o => !o.disabled));\n }\n } else if (isEndKey) {\n if (this._open) {\n evt.preventDefault();\n const options = this._nonDividerOptions;\n for (let i = options.length - 1; i >= 0; i--) {\n if (!options[i].disabled) {\n this._adapter.highlightActiveOption(i);\n break;\n }\n }\n }\n } else if (isFilterableCharacter) {\n this._filter(evt.key);\n }\n }\n\n private _getFirstSelectedOptionIndex(): number {\n return this._nonDividerOptions.findIndex(option => this._selectedValues.includes(option.value));\n }\n\n private _getPreviousHighlightableOptionIndex(startIndex: number, options: ISelectOption[]): number {\n let index = startIndex;\n if (index <= 0) {\n index = options.length - 1;\n } else {\n index--;\n }\n if (options[index].disabled) {\n return this._getPreviousHighlightableOptionIndex(index, options);\n }\n return index;\n }\n\n private _getNextHighlightableOptionIndex(startIndex: number, options: ISelectOption[]): number {\n let index = startIndex;\n if (index === options.length - 1) {\n index = 0;\n } else {\n index++;\n }\n if (options[index].disabled) {\n return this._getNextHighlightableOptionIndex(index, options);\n }\n return index;\n }\n\n private _filter(key: string): void {\n // This allows for typing numbers and/or characters while the select is focused to auto-select the closest match\n if (this._filterTimeout) {\n window.clearTimeout(this._filterTimeout);\n this._filterTimeout = undefined;\n }\n this._filterString += key;\n this._filterTimeout = window.setTimeout(() => {\n this._filterString = '';\n this._filterTimeout = undefined;\n }, 300);\n this._options = this._adapter.getOptions();\n // TODO: Enhance this to cycle through closest matches (see the native select)\n const matchedOption = this._flatOptions.find(option => !option.disabled && option.label.toLowerCase().startsWith(this._filterString.toLowerCase()));\n if (matchedOption) {\n const optionIndex = this._flatOptions.indexOf(matchedOption);\n if (this._open) {\n this._adapter.highlightActiveOption(optionIndex);\n } else if (!this._multiple) {\n this._onSelect(matchedOption, optionIndex, false);\n }\n }\n }\n\n private _onOptionsChanged(options: ISelectOption[] | ISelectOptionGroup[]): void {\n this._options = options;\n this._applyValue(this._value);\n }\n\n private _onActiveOptionChanged(id: string): void {\n this._adapter.updateActiveDescendant(id);\n }\n\n /** Gets/sets the value of the component. */\n public get value(): any {\n return this._multiple ? [...this._value] : this._value[0];\n }\n public set value(value: any) {\n let _value: string | string[];\n \n if (Array.isArray(value)) {\n _value = [ ...value ];\n } else {\n _value = value;\n }\n\n this._applyValue(_value);\n }\n\n /** Gets/sets the selected index(s). */\n public get selectedIndex(): number | number[] {\n return this._multiple ? [ ...this._selectedIndexes ] : this._selectedIndexes[0];\n }\n public set selectedIndex(indexes: number | number[]) {\n this._options = this._adapter.getOptions();\n\n let indicies: number [];\n if (Array.isArray(indexes)) {\n indicies = [ ...indexes ];\n } else {\n indicies = [indexes];\n }\n\n indicies.sort();\n\n if (this.multiple) {\n this.value = indicies\n .map(index => this._flatOptions[index])\n .filter(o => o)\n .map(o => o.value);\n } else {\n const option = this._flatOptions[indicies[indicies.length - 1]];\n if (!option) {\n return;\n }\n this.value = option.value;\n }\n }\n\n /** Gets/sets the available options. */\n public get options(): ISelectOption[] | ISelectOptionGroup[] {\n return this._adapter.getOptions();\n }\n public set options(value: ISelectOption[] | ISelectOptionGroup[]) {\n let _value: ISelectOption[] | ISelectOptionGroup[];\n if (isSelectOptionType(value, SelectOptionType.Group)) {\n _value = (value as ISelectOptionGroup[]).map(v => ({ ...v }));\n } else {\n _value = (value as ISelectOption[]).map(v => ({ ...v }));\n }\n\n this._options = _value;\n this._adapter.setOptions(_value); // Must set options before intializing value\n this._initializeValue();\n\n if (this._open) {\n this._adapter.setDropdownOptions(_value);\n }\n }\n\n /** Gets/sets the multiple select state. */\n public get multiple(): boolean {\n return this._multiple;\n }\n public set multiple(value: boolean) {\n if (this._multiple !== value) {\n this._multiple = value;\n this._reset();\n if (this._open) {\n this._closeDropdown();\n }\n this._adapter.setMultiple(this._multiple);\n }\n }\n\n /** Gets/sets the open state of the dropdown. */\n public get open(): boolean {\n return this._open;\n }\n public set open(value: boolean) {\n if (this._open !== value) {\n if (value) {\n this._openDropdown();\n } else {\n this._closeDropdown();\n }\n }\n }\n\n /** Gets/sets the builder callback to use when building options. */\n public get optionBuilder(): SelectOptionBuilder {\n return this._optionBuilder;\n }\n public set optionBuilder(value: SelectOptionBuilder) {\n this._optionBuilder = value;\n }\n\n /** Sets the selected text builder callback that will be executed when getting the selected text to display in the field. */\n public get selectedTextBuilder(): SelectSelectedTextBuilder {\n return this._selectedTextBuilder;\n }\n public set selectedTextBuilder(fn: SelectSelectedTextBuilder) {\n this._selectedTextBuilder = fn;\n }\n\n public get optionLimit(): number {\n return this._optionLimit;\n }\n public set optionLimit(value: number) {\n this._optionLimit = value;\n }\n \n public get popupClasses(): string | string[] {\n return this._popupClasses;\n }\n public set popupClasses(value: string | string[]) {\n this._popupClasses = value;\n }\n\n public get popupHeaderBuilder(): ListDropdownHeaderBuilder {\n return this._popupHeaderBuilder;\n }\n public set popupHeaderBuilder(value: ListDropdownHeaderBuilder) {\n this._popupHeaderBuilder = value;\n }\n\n public get popupFooterBuilder(): ListDropdownFooterBuilder {\n return this._popupFooterBuilder;\n }\n public set popupFooterBuilder(value: ListDropdownFooterBuilder) {\n this._popupFooterBuilder = value;\n }\n\n /** Gets the currently active popup element when the dropdown is open. */\n public get popupElement(): HTMLElement | undefined {\n return this._adapter.popupElement;\n }\n\n /** Sets the callback to be executed when the user selects a value. */\n public get beforeValueChange(): SelectBeforeValueChangeCallback<any> {\n return this._beforeValueChange;\n }\n public set beforeValueChange(value: SelectBeforeValueChangeCallback<any>) {\n this._beforeValueChange = value;\n }\n}\n", "import { coerceBoolean, FoundationProperty } from '@tylertech/forge-core';\n\nimport {\n SelectOptionBuilder,\n SelectSelectedTextBuilder,\n ISelectOption,\n ISelectOptionGroup,\n SelectBeforeValueChangeCallback,\n BASE_SELECT_CONSTANTS\n} from './base-select-constants';\nimport { IBaseSelectFoundation } from './base-select-foundation';\nimport { IListDropdownAware, ListDropdownAware } from '../../list-dropdown/list-dropdown-aware';\nimport { IPopupComponent } from '../../popup';\n\n\nexport interface IBaseSelectComponent extends IListDropdownAware {\n value: any;\n selectedIndex: number | number[];\n options: ISelectOption[] | ISelectOptionGroup[];\n multiple: boolean;\n open: boolean;\n optionBuilder: SelectOptionBuilder;\n selectedTextBuilder: SelectSelectedTextBuilder;\n popupElement: IPopupComponent | undefined;\n beforeValueChange: SelectBeforeValueChangeCallback<any>;\n appendOptions(options: ISelectOption[] | ISelectOption[]): void;\n selectAll(): void;\n deselectAll(): void;\n}\n\nexport abstract class BaseSelectComponent<T extends IBaseSelectFoundation> extends ListDropdownAware implements IBaseSelectComponent {\n protected _foundation: T;\n\n constructor() {\n super();\n }\n\n /** Gets/sets the value. */\n @FoundationProperty()\n public declare value: any;\n \n /** Gets/sets the selected index. */\n @FoundationProperty()\n public declare selectedIndex: number | number[];\n \n /** Gets/sets the available options. */\n @FoundationProperty()\n public declare options: ISelectOption[] | ISelectOptionGroup[];\n\n /** Gets/sets the multiple select state. */\n @FoundationProperty()\n public declare multiple: boolean;\n \n /** Gets the open state of the dropdown. */\n @FoundationProperty()\n public declare open: boolean;\n \n /** Sets the option builder callback that will be executed when building the option list in the dropdown. */\n @FoundationProperty()\n public declare optionBuilder: SelectOptionBuilder;\n \n /** Sets the selected text builder callback that will be executed when getting the selected text to display in the field. */\n @FoundationProperty()\n public declare selectedTextBuilder: SelectSelectedTextBuilder;\n\n /** Sets the callback to be executed when the user selects a value. */\n @FoundationProperty()\n public declare beforeValueChange: SelectBeforeValueChangeCallback<any>;\n\n /** Gets the popup element (when the dropdown is open). */\n @FoundationProperty({ set: false })\n public declare popupElement: IPopupComponent | undefined;\n \n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n super.attributeChangedCallback(name, oldValue, newValue);\n switch (name) {\n case BASE_SELECT_CONSTANTS.attributes.MULTIPLE:\n this.multiple = coerceBoolean(newValue);\n break;\n case BASE_SELECT_CONSTANTS.attributes.VALUE:\n this.value = newValue;\n break;\n }\n }\n\n public appendOptions(options: ISelectOption[] | ISelectOptionGroup[]): void {\n this._foundation.appendOptions(options);\n }\n\n public selectAll(): void {\n this._foundation.selectAll();\n }\n \n public deselectAll(): void {\n this._foundation.deselectAll();\n }\n\n public connectedCallback(): void {\n this._foundation.initialize();\n }\n\n public disconnectedCallback(): void {\n this._foundation.disconnect();\n }\n}\n", "import { isDefined, isFunction, removeElement } from '@tylertech/forge-core';\nimport { BaseAdapter, IBaseAdapter } from '../../core/base/base-adapter';\nimport { IBaseSelectComponent } from './base-select';\nimport { ListDropdown, IListDropdown } from '../../list-dropdown';\nimport { IListDropdownConfig, ListDropdownIconType } from '../../list-dropdown/list-dropdown-constants';\nimport { IOptionComponent, OPTION_CONSTANTS } from '../option';\nimport { IOptionGroupComponent, OPTION_GROUP_CONSTANTS } from '../option-group';\nimport { ISelectOption, ISelectOptionGroup, SelectOptionListenerDestructor } from './base-select-constants';\nimport { isOptionGroupObject } from './select-utils';\nimport { IPopupComponent, POPUP_CONSTANTS } from '../../popup';\n\nexport interface IBaseSelectAdapter extends IBaseAdapter {\n initializeAccessibility(): void;\n addClickListener(listener: (evt: Event) => void): void;\n removeClickListener(listener: (evt: Event) => void): void;\n addTargetListener(type: string, listener: (evt: Event) => void): void;\n removeTargetListener(type: string, listener: (evt: Event) => void): void;\n getOptions(): ISelectOption[] | ISelectOptionGroup[];\n setOptions(options: ISelectOption[] | ISelectOptionGroup[], clear?: boolean): void;\n open(config: IListDropdownConfig): void;\n close(): void;\n setDismissListener(listener: () => void): void;\n scrollSelectedOptionIntoView(): void;\n activateSelectedOption(): void;\n activateFirstOption(): void;\n getActiveOptionIndex(): number;\n highlightActiveOption(index: number): void;\n toggleOptionMultiple(index: number, isSelected: boolean): void;\n patchSelectedValues(selectedValues: string[]): void;\n updateActiveDescendant(id: string): void;\n setOptionsListener(listener: (options: ISelectOption[] | ISelectOptionGroup[]) => void): SelectOptionListenerDestructor;\n setDropdownOptions(options: ISelectOption[] | ISelectOptionGroup[]): void;\n appendDropdownOptions(options: ISelectOption[] | ISelectOptionGroup[]): void;\n setMultiple(multiple: boolean): void;\n isFocusWithinPopup(target: HTMLElement): boolean;\n queueDropdownPositionUpdate(): void;\n popupElement: HTMLElement | undefined;\n}\n\nexport abstract class BaseSelectAdapter extends BaseAdapter<IBaseSelectComponent> implements IBaseSelectAdapter {\n private _listDropdown?: IListDropdown;\n protected _targetElement: HTMLElement;\n\n constructor(component: IBaseSelectComponent) {\n super(component);\n }\n\n public abstract initializeAccessibility(): void;\n public abstract updateActiveDescendant(id: string): void;\n public abstract addClickListener(listener: (evt: Event) => void): void;\n public abstract removeClickListener(listener: (evt: Event) => void): void;\n public abstract addTargetListener(type: string, listener: (evt: Event) => void): void;\n public abstract removeTargetListener(type: string, listener: (evt: Event) => void): void;\n public abstract setMultiple(multiple: boolean): void;\n\n public get popupElement(): HTMLElement | undefined {\n return this._listDropdown?.dropdownElement;\n }\n\n public getOptions(): ISelectOption[] | ISelectOptionGroup[] {\n const optionGroupElements = Array.from(this._component.querySelectorAll(OPTION_GROUP_CONSTANTS.elementName)) as IOptionGroupComponent[];\n if (optionGroupElements.length) {\n return optionGroupElements.map(optionGroupElement => {\n const optionElements = Array.from(optionGroupElement.querySelectorAll(OPTION_CONSTANTS.elementName)) as IOptionComponent[];\n const options = this._createOptionsFromElements(optionElements);\n return {\n text: optionGroupElement.label,\n builder: optionGroupElement.builder,\n value: optionGroupElement.value,\n options\n } as ISelectOptionGroup;\n });\n } else {\n const optionElements = Array.from(this._component.querySelectorAll(OPTION_CONSTANTS.elementName)) as IOptionComponent[];\n return this._createOptionsFromElements(optionElements);\n }\n }\n\n private _createOptionsFromElements(optionElements: IOptionComponent[]): ISelectOption[] {\n return optionElements.map(o => {\n let optionClass = o.hasAttribute(OPTION_CONSTANTS.attributes.OPTION_CLASS) ? o.getAttribute(OPTION_CONSTANTS.attributes.OPTION_CLASS) as string : o.optionClass;\n if (typeof optionClass === 'string') {\n optionClass = optionClass.split(' ');\n }\n\n return {\n // eslint-disable-next-line @typescript-eslint/no-extra-parens\n label: o.hasAttribute(OPTION_CONSTANTS.attributes.LABEL) ? o.getAttribute(OPTION_CONSTANTS.attributes.LABEL) as string : (isDefined(o.label) ? o.label : o.innerText),\n value: o.hasAttribute(OPTION_CONSTANTS.attributes.VALUE) ? o.getAttribute(OPTION_CONSTANTS.attributes.VALUE) : o.value,\n disabled: o.hasAttribute(OPTION_CONSTANTS.attributes.DISABLED),\n divider: o.hasAttribute(OPTION_CONSTANTS.attributes.DIVIDER),\n optionClass,\n leadingIcon: o.hasAttribute(OPTION_CONSTANTS.attributes.LEADING_ICON) ? o.getAttribute(OPTION_CONSTANTS.attributes.LEADING_ICON) as string : o.leadingIcon,\n leadingIconClass: o.hasAttribute(OPTION_CONSTANTS.attributes.LEADING_ICON_CLASS) ? o.getAttribute(OPTION_CONSTANTS.attributes.LEADING_ICON_CLASS) as string : o.leadingIconClass,\n leadingIconType: o.hasAttribute(OPTION_CONSTANTS.attributes.LEADING_ICON_TYPE) ? o.getAttribute(OPTION_CONSTANTS.attributes.LEADING_ICON_TYPE) as ListDropdownIconType : o.leadingIconType,\n trailingIcon: o.hasAttribute(OPTION_CONSTANTS.attributes.TRAILING_ICON) ? o.getAttribute(OPTION_CONSTANTS.attributes.TRAILING_ICON) as string : o.trailingIcon,\n trailingIconClass: o.hasAttribute(OPTION_CONSTANTS.attributes.TRAILING_ICON_CLASS) ? o.getAttribute(OPTION_CONSTANTS.attributes.TRAILING_ICON_CLASS) as string : o.trailingIconClass,\n trailingIconType: o.hasAttribute(OPTION_CONSTANTS.attributes.TRAILING_ICON_TYPE) ? o.getAttribute(OPTION_CONSTANTS.attributes.TRAILING_ICON_TYPE) as ListDropdownIconType : o.trailingIconType,\n leadingBuilder: o.leadingBuilder,\n trailingBuilder: o.trailingBuilder\n };\n });\n }\n\n public open(config: IListDropdownConfig): void {\n this._listDropdown = new ListDropdown(this._targetElement, config);\n this._listDropdown.open();\n }\n\n public close(): void {\n if (this._listDropdown) {\n this._listDropdown.close();\n this._listDropdown.destroy();\n this._listDropdown = undefined;\n }\n }\n\n public setDismissListener(listener: () => void): void {\n if (!this._listDropdown || !this._listDropdown.dropdownElement) {\n return;\n }\n const dropdownElement = this._listDropdown.dropdownElement as IPopupComponent;\n if (dropdownElement.targetElement) {\n dropdownElement.targetElement.addEventListener(POPUP_CONSTANTS.events.BLUR, listener);\n }\n }\n\n public toggleOptionMultiple(index: number, isSelected: boolean): void {\n this._listDropdown?.toggleOptionMultiple(index, isSelected);\n }\n\n public getActiveOptionIndex(): number {\n return this._listDropdown?.getActiveOptionIndex() ?? -1;\n }\n\n public activateSelectedOption(): void {\n this._listDropdown?.activateSelectedOption();\n }\n\n public activateFirstOption(): void {\n this._listDropdown?.activateFirstOption();\n }\n\n public highlightActiveOption(index: number): void {\n this._listDropdown?.activateOption(index);\n }\n\n public patchSelectedValues(selectedValues: string[]): void {\n this._listDropdown?.setSelectedValues(selectedValues);\n }\n\n public setOptionsListener(listener: (options: ISelectOption[] | ISelectOptionGroup[]) => void): SelectOptionListenerDestructor {\n // Watch for option value property changes\n const optionValueChangeListener: EventListener = evt => {\n evt.stopPropagation();\n listener(this.getOptions());\n };\n this._component.addEventListener(OPTION_CONSTANTS.events.VALUE_CHANGE, optionValueChangeListener);\n\n // Watch for DOM changes\n const observer = new MutationObserver(() => listener(this.getOptions()));\n observer.observe(this._component, { childList: true, subtree: true });\n\n return () => {\n this._component.removeEventListener(OPTION_CONSTANTS.events.VALUE_CHANGE, optionValueChangeListener);\n observer.disconnect();\n };\n }\n\n public setOptions(options: ISelectOption[] | ISelectOptionGroup[], clear = true): void {\n if (clear) {\n this._clearOptions();\n }\n\n for (const opt of options) {\n if (isOptionGroupObject(opt)) {\n const optionGroupElement = this._createOptionGroupElement(opt);\n for (const option of opt.options) {\n const optionElement = this._createOptionElement(option);\n optionGroupElement.appendChild(optionElement);\n }\n this._component.appendChild(optionGroupElement);\n } else {\n const optionElement = this._createOptionElement(opt);\n this._component.appendChild(optionElement);\n }\n }\n }\n\n public appendDropdownOptions(options: ISelectOption[] | ISelectOptionGroup[]): void {\n this._listDropdown?.appendOptions(options);\n }\n\n public setDropdownOptions(options: ISelectOption[] | ISelectOptionGroup[]): void {\n this._listDropdown?.setOptions(options);\n }\n\n public scrollSelectedOptionIntoView(): void {\n this._listDropdown?.scrollSelectedOptionIntoView();\n }\n\n public isFocusWithinPopup(target: HTMLElement): boolean {\n if (!this._listDropdown || !this._listDropdown.dropdownElement) {\n return false;\n }\n return this._listDropdown.dropdownElement.contains(target);\n }\n\n public queueDropdownPositionUpdate(): void {\n if (!this.popupElement) {\n return;\n }\n // We need to wait for the next animation frame to ensure that the layout has been updated\n window.requestAnimationFrame(() => {\n const dropdownEl = this.popupElement as IPopupComponent | undefined;\n dropdownEl?.position();\n });\n }\n\n private _clearOptions(): void {\n // First we remove all option group elements\n const existingOptionGroupElements = Array.from(this._component.querySelectorAll(OPTION_GROUP_CONSTANTS.elementName));\n existingOptionGroupElements.forEach((optGroup: IOptionGroupComponent) => removeElement(optGroup));\n\n // Then find all top-level option elements that aren't inside of a group, and ensure that those are removed as well\n const existingOptionElements = Array.from(this._component.querySelectorAll(OPTION_CONSTANTS.elementName));\n existingOptionElements.forEach((o: HTMLElement) => removeElement(o));\n }\n\n private _createOptionGroupElement(group: ISelectOptionGroup): HTMLElement {\n const optionGroupElement = document.createElement('forge-option-group');\n Object.assign(optionGroupElement, group);\n return optionGroupElement;\n }\n\n private _createOptionElement(option: ISelectOption): HTMLElement {\n const optionElement = document.createElement('forge-option');\n Object.assign(optionElement, option);\n optionElement.textContent = option.label;\n return optionElement;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["observedAttributes", "attributes", "__spreadValues", "events", "BASE_SELECT_CONSTANTS", "SelectOptionType", "isSelectOptionType", "options", "type", "isOptionGroups", "o", "isOptionGroupObject", "isOptionTypes", "isOptionObject", "isDefined", "isObject", "BaseSelectFoundation", "ListDropdownAwareFoundation", "_adapter", "evt", "options", "id", "randomChars", "o", "isSelectOptionType", "g", "isDefined", "config", "value", "flatOptions", "option", "index", "optionIndex", "closeDropdown", "resolve", "label", "prevValues", "prevSelectedValues", "prevSelectedLabels", "prevSelectedIndexes", "rollbackValue", "applyValue", "isSelected", "data", "shouldContinue", "cancelled", "BASE_SELECT_CONSTANTS", "activeOptionIndex", "val", "isDeepEqual", "selectedOptions", "v", "isEscapeKey", "isEnter", "isSpace", "isArrowDown", "isArrowUp", "isFilterableCharacter", "isHomeKey", "isEndKey", "i", "startIndex", "key", "matchedOption", "_value", "indexes", "indicies", "__spreadValues", "fn", "BaseSelectComponent", "ListDropdownAware", "name", "oldValue", "newValue", "BASE_SELECT_CONSTANTS", "coerceBoolean", "options", "__decorateClass", "FoundationProperty", "BaseSelectAdapter", "BaseAdapter", "component", "_a", "optionGroupElements", "OPTION_GROUP_CONSTANTS", "optionGroupElement", "optionElements", "OPTION_CONSTANTS", "options", "o", "optionClass", "isDefined", "config", "ListDropdown", "listener", "dropdownElement", "POPUP_CONSTANTS", "index", "isSelected", "_b", "selectedValues", "optionValueChangeListener", "evt", "observer", "clear", "opt", "isOptionGroupObject", "option", "optionElement", "target", "dropdownEl", "optGroup", "removeElement", "group"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import{e as E}from"./chunk.DONAMICM.js";import{d as f}from"./chunk.ZUNZKRRK.js";import{a as t}from"./chunk.GO5A4GKZ.js";import{a as m}from"./chunk.G5MGGEFP.js";import{a as r}from"./chunk.KTGSZEAG.js";import{g as n,l as g}from"./chunk.Y4GKBJGI.js";import{f as _,g as b,m as u,o as L,s as c,t as h,z as v}from"./chunk.PN26D52V.js";import{k as d}from"./chunk.J2M2MXP2.js";import{f as o}from"./chunk.MCIQXNKY.js";var S=class extends m{constructor(e){super(e);this._valueChangeListeners=[]}initialize(e){this._rootElement=n(this._component,e),this._labelSlot=n(this._component,"slot[name=label]"),this._leadingSlot=n(this._component,"slot[name=leading]"),this._trailingSlot=n(this._component,"slot[name=trailing]"),this._addonEndSlot=n(this._component,"slot[name=addon-end]"),this._inputElement=this._component.querySelector("input:not([type=checkbox]):not([type=radio])"),this.detectLabel()}destroy(){this._inputMutationObserver&&this._inputMutationObserver.disconnect()}hasLabel(){return!!this._labelElement}ensureSlottedLabel(){this._labelElement.slot="label"}ensureLabelOrder(){if(this._labelElement){let e=Array.from(this._component.children);e.length>1&&e.indexOf(this._labelElement)<e.indexOf(this._inputElement)&&this._component.appendChild(this._labelElement)}}addLabelSlotListener(e){this._labelSlot.addEventListener("slotchange",e)}removeLabelSlotListener(e){this._labelSlot&&this._labelSlot.removeEventListener("slotchange",e)}addLeadingSlotListener(e){this._leadingSlot.addEventListener("slotchange",e)}removeLeadingSlotListener(e){this._leadingSlot&&this._leadingSlot.removeEventListener("slotchange",e)}addTrailingSlotListener(e){this._trailingSlot.addEventListener("slotchange",e)}removeTrailingSlotListener(e){this._trailingSlot&&this._trailingSlot.removeEventListener("slotchange",e)}addAddonEndSlotListener(e){this._addonEndSlot.addEventListener("slotchange",e)}removeAddonEndSlotListener(e){this._addonEndSlot&&this._addonEndSlot.removeEventListener("slotchange",e)}addInputListener(e,s){this._inputElement.addEventListener(e,s)}removeInputListener(e,s){this._inputElement&&this._inputElement.removeEventListener(e,s)}setValueChangedListener(e,s){this.destroyValueChangeListener();let a=E(e,this._inputElement,"value",s);this._valueChangeListeners.push(a)}destroyValueChangeListener(){this._valueChangeListeners.forEach(e=>e())}detectLabel(){this._labelElement=this._component.querySelector("label")}initializeFloatingLabel(){return new f(this._labelElement)}inputHasValue(){return this._inputElement.value?this._inputElement.value.trim().length>0:!1}fieldHasValue(){return this.inputHasValue()}hasPlaceholder(){return this._inputElement.placeholder?this._inputElement.placeholder.trim().length>0:!1}inputHasFocus(e){return this._inputElement===e||this._inputElement===c()}setLabelClass(e){this._labelElement&&this._labelElement.classList.add(e)}removeLabelClass(e){this._labelElement&&this._labelElement.classList.remove(e)}isLabelFloating(){return this._component.hasAttribute(t.attributes.HOST_LABEL_FLOATING)}setRoomy(e){h(this._rootElement,e,t.classes.ROOMY)}setDense(e){h(this._rootElement,e,t.classes.DENSE)}hasLeadingNodes(){return this._leadingSlot?this._leadingSlot.assignedNodes().length>0:!1}hasTrailingNodes(){return this._trailingSlot?this._trailingSlot.assignedNodes().length>0:!1}hasAddonEndNodes(){return this._addonEndSlot?this._addonEndSlot.assignedNodes().length>0:!1}setInputClass(e){this._inputElement.classList.add(e)}removeInputClass(e){this._inputElement.classList.remove(e)}setRootClass(e){_(e,this._rootElement)}removeRootClass(e){b(e,this._rootElement)}setInputAttributeObserver(e){this._inputMutationObserver=v(this._inputElement,e,t.observedInputAttributes)}isDisabled(){return this._inputElement.hasAttribute("disabled")}isReadonly(){return this._inputElement.hasAttribute("readonly")}getLabelWidth(e,s){return L(this._labelElement.innerText,{fontSize:e,fontFamily:s})}getLabelFontMetrics(){let e=getComputedStyle(this._labelElement);return{fontSize:parseInt(e.fontSize||"16",10),fontFamily:e.fontFamily||"Roboto"}}};var y=class{constructor(i){this._adapter=i;this._density="default";this._shape="default";this._invalid=!1;this._required=!1;this._floatLabelType="auto";this._isInitialized=!1;this._labelSlotListener=e=>this._onLabelSlotChanged(e),this._leadingSlotListener=e=>this._onLeadingSlotChanged(e),this._trailingSlotListener=e=>this._onTrailingSlotChanged(e),this._addonEndSlotListener=e=>this._onAddonEndSlotChanged(e),this._focusListener=e=>this._onFocus(e),this._blurListener=e=>this._onBlur(e),this._valueChangedListener=e=>this._onValueChanged(e),this._inputAttributeChangedListener=(e,s)=>this._onInputAttributeChanged(e,s)}initialize(){this._adapter.initialize(""),this._adapter.hasLabel()&&this._adapter.ensureSlottedLabel(),this._initializeLabel(),this._adapter.hasPlaceholder()&&(this._floatLabelType="always"),this._detectSlottedContent(),this._adapter.addLabelSlotListener(this._labelSlotListener),this._adapter.addLeadingSlotListener(this._leadingSlotListener),this._adapter.addTrailingSlotListener(this._trailingSlotListener),this._adapter.addAddonEndSlotListener(this._addonEndSlotListener),this._adapter.setValueChangedListener(this,this._valueChangedListener),this._adapter.addInputListener("focus",this._focusListener),this._adapter.addInputListener("blur",this._blurListener),this._adapter.setInputAttributeObserver(this._inputAttributeChangedListener),this._applyDensity(),this._setShapeType(),this._setValidity(),this._adapter.isDisabled()?this._adapter.setRootClass(t.classes.DISABLED):this._adapter.removeRootClass(t.classes.DISABLED),this._adapter.isReadonly()?this._adapter.setRootClass(t.classes.READONLY):this._adapter.removeRootClass(t.classes.READONLY),this._floatLabelType==="always"&&this.floatLabel(!0),this._isInitialized=!0}disconnect(){this._isInitialized=!1,this._adapter.destroy(),this._floatingLabel&&(this._floatingLabel.destroy(),this._floatingLabel=void 0),this._adapter.removeLabelSlotListener(this._labelSlotListener),this._adapter.removeLeadingSlotListener(this._leadingSlotListener),this._adapter.removeTrailingSlotListener(this._trailingSlotListener),this._adapter.removeAddonEndSlotListener(this._addonEndSlotListener),this._adapter.removeInputListener("focus",this._focusListener),this._adapter.removeInputListener("blur",this._blurListener),this._adapter.destroyValueChangeListener()}get density(){return this._density}set density(i){this._density!==i&&(this._density=i,this._isInitialized&&(this._applyDensity(),this._initializeLabel()),this._adapter.setHostAttribute(t.attributes.DENSITY,this._density.toString()))}get floatLabelType(){return this._floatLabelType}set floatLabelType(i){this._floatLabelType!==i&&(this._floatLabelType=i,this._isInitialized&&this.floatLabel(this._floatLabelType==="always"),this._adapter.setHostAttribute(t.attributes.FLOAT_LABEL_TYPE,this._floatLabelType))}get shape(){return this._shape}set shape(i){this._shape!==i&&(this._shape=i,this._isInitialized&&this._setShapeType(),this._adapter.setHostAttribute(t.attributes.SHAPE,this._shape))}get invalid(){return this._invalid}set invalid(i){this._invalid!==i&&(this._invalid=i,this._isInitialized&&this._setValidity())}get required(){return this._required}set required(i){this._required!==i&&(this._required=i,this._isInitialized&&this._setValidity(),this._required?this._adapter.setHostAttribute(t.attributes.REQUIRED):this._adapter.removeHostAttribute(t.attributes.REQUIRED))}floatLabel(i){var e,s;if(!(((e=this._floatingLabel)==null?void 0:e.isFloating)===i||this._adapter.isLabelFloating()===i)){if(!i&&this._floatLabelType==="always"){(s=this._floatingLabel)==null||s.float(!0,!0),this._adapter.setHostAttribute(t.attributes.HOST_LABEL_FLOATING,"");return}this._floatingLabel&&(this._floatingLabel.float(i,this._floatLabelType==="always"),i?(this._adapter.setInputClass(t.classes.INPUT_FOCUSED),this._adapter.setHostAttribute(t.attributes.HOST_LABEL_FLOATING,"")):(this._adapter.removeInputClass(t.classes.INPUT_FOCUSED),this._adapter.removeHostAttribute(t.attributes.HOST_LABEL_FLOATING)))}}_onLabelSlotChanged(i){this._initializeLabel()}_onLeadingSlotChanged(i){this._detectLeadingContent()}_onTrailingSlotChanged(i){this._detectTrailingContent()}_onAddonEndSlotChanged(i){this._detectAddonEndContent()}_initializeLabel(){this._floatingLabel&&this._floatingLabel.destroy(),this._adapter.detectLabel(),this._adapter.hasLabel()&&this._density!=="dense"?(this._floatingLabel=this._adapter.initializeFloatingLabel(),this._adapter.ensureLabelOrder(),this.floatLabel(this._floatLabelType==="always"||this._adapter.fieldHasValue()||this._adapter.hasPlaceholder()),this._adapter.setRootClass(t.classes.LABEL)):(this._adapter.removeHostAttribute(t.attributes.HOST_LABEL_FLOATING),this._adapter.removeRootClass(t.classes.LABEL),this._floatingLabel=void 0)}_detectLeadingContent(){this._adapter.hasLeadingNodes()?this._adapter.setRootClass(t.classes.LEADING):this._adapter.removeRootClass(t.classes.LEADING)}_detectTrailingContent(){this._adapter.hasTrailingNodes()?this._adapter.setRootClass(t.classes.TRAILING):this._adapter.removeRootClass(t.classes.TRAILING)}_detectAddonEndContent(){this._adapter.hasAddonEndNodes()?this._adapter.setRootClass(t.classes.ADDON_END):this._adapter.removeRootClass(t.classes.ADDON_END)}_detectSlottedContent(){this._detectLeadingContent(),this._detectTrailingContent(),this._detectAddonEndContent()}_onFocus(i){this._adapter.setRootClass(t.classes.FOCUSED),this._adapter.setLabelClass(t.classes.LABEL_FOCUSED),this.floatLabel(!0)}_onBlur(i){this._adapter.inputHasFocus(i.relatedTarget)||(this._adapter.removeRootClass(t.classes.FOCUSED),this._adapter.removeLabelClass(t.classes.LABEL_FOCUSED),!this._adapter.fieldHasValue()&&!this._adapter.hasPlaceholder()&&(this.floatLabel(!1),this._adapter.removeHostAttribute(t.attributes.HOST_LABEL_FLOATING)))}_onValueChanged(i){this._adapter.fieldHasValue()?this.floatLabel(!0):!this._adapter.inputHasFocus()&&!this._adapter.hasPlaceholder()&&this.floatLabel(!1)}_onInputAttributeChanged(i,e){switch(this._adapter.isDisabled()?(this._adapter.setRootClass(t.classes.DISABLED),this._adapter.removeRootClass(t.classes.FOCUSED),this._adapter.removeInputClass(t.classes.INPUT_FOCUSED),this._adapter.removeLabelClass(t.classes.LABEL_FOCUSED),!this._adapter.fieldHasValue()&&!this._adapter.hasPlaceholder()&&this._floatingLabel&&this.floatLabel(!1)):this._adapter.removeRootClass(t.classes.DISABLED),this._adapter.isReadonly()?this._adapter.setRootClass(t.classes.READONLY):(this._adapter.removeRootClass(t.classes.READONLY),this._adapter.removeRootClass(t.classes.FOCUSED),this._adapter.removeInputClass(t.classes.INPUT_FOCUSED)),i){case"readonly":case"disabled":this._adapter.inputHasFocus()&&(this._adapter.setRootClass(t.classes.FOCUSED),this._adapter.setInputClass(t.classes.INPUT_FOCUSED),this._adapter.setLabelClass(t.classes.LABEL_FOCUSED));break;case"value":this._floatingLabel&&this.floatLabel(this._adapter.fieldHasValue());break;case"placeholder":if(this._floatingLabel){let s=!!e&&!!e.trim()||this._adapter.fieldHasValue();s!==this._floatingLabel.isFloating&&this.floatLabel(s)}break}}_setShapeType(){this._shape==="rounded"?this._adapter.setRootClass(t.classes.SHAPE_ROUNDED):this._adapter.removeRootClass(t.classes.SHAPE_ROUNDED)}_setValidity(){this._invalid?this._adapter.setRootClass(t.classes.INVALID):this._adapter.removeRootClass(t.classes.INVALID),this._required?this._adapter.setRootClass(t.classes.REQUIRED):this._adapter.removeRootClass(t.classes.REQUIRED)}_applyDensity(){this._adapter.setRoomy(this._density==="roomy"),this._adapter.setDense(this._density==="dense")}};var l=class extends g{constructor(){super()}static get observedAttributes(){return[t.attributes.DENSITY,t.attributes.FLOAT_LABEL_TYPE,t.attributes.SHAPE,t.attributes.INVALID,t.attributes.REQUIRED]}connectedCallback(){this.querySelector(t.selectors.INPUT)?this._initialize():u(this,t.selectors.INPUT).then(()=>this._initialize())}_initialize(){this._foundation.initialize()}disconnectedCallback(){this._foundation.disconnect()}attributeChangedCallback(e,s,a){switch(e){case t.attributes.DENSITY:this.density=a;break;case t.attributes.FLOAT_LABEL_TYPE:this.floatLabelType=a;break;case t.attributes.SHAPE:this.shape=a;break;case t.attributes.INVALID:this.invalid=d(a);break;case t.attributes.REQUIRED:this.required=d(a);break}}floatLabel(e){this._foundation.floatLabel(e)}};o([r()],l.prototype,"density",2),o([r()],l.prototype,"floatLabelType",2),o([r()],l.prototype,"shape",2),o([r()],l.prototype,"invalid",2),o([r()],l.prototype,"required",2);export{S as a,y as b,l as c};
|
|
7
|
+
//# sourceMappingURL=chunk.A47X5VG3.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/field/field-adapter.ts", "../../src/field/field-foundation.ts", "../../src/field/field.ts"],
|
|
4
|
+
"sourcesContent": ["import { addClass, calculateFontWidth, getShadowElement, IFontInfo, listenOwnProperty, Platform, removeClass, getActiveElement, createElementAttributeObserver, toggleClass, toggleAttribute } from '@tylertech/forge-core';\nimport { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';\nimport { FloatingLabel, IFloatingLabel } from '../floating-label/floating-label';\nimport { IFieldComponent } from './field';\nimport { FIELD_CONSTANTS } from './field-constants';\n\nexport interface IFieldAdapter extends IBaseAdapter {\n // root\n setRootClass(classes: string | string[]): void;\n removeRootClass(classes: string | string[]): void;\n\n // input\n addInputListener(type: string, listener: (evt: Event) => void): void;\n removeInputListener(type: string, listener: (evt: Event) => void): void;\n setInputClass(className: string): void;\n removeInputClass(className: string): void;\n\n // label\n addLabelSlotListener(listener: (evt: Event) => void): void;\n removeLabelSlotListener(listener: (evt: Event) => void): void;\n setLabelClass(name: string): void;\n removeLabelClass(name: string): void;\n isLabelFloating(): boolean;\n\n // leading\n addLeadingSlotListener(listener: (evt: Event) => void): void;\n removeLeadingSlotListener(listener: (evt: Event) => void): void;\n\n // trailing\n addTrailingSlotListener(listener: (evt: Event) => void): void;\n removeTrailingSlotListener(listener: (evt: Event) => void): void;\n\n // add on end\n addAddonEndSlotListener(listener: (evt: Event) => void): void;\n removeAddonEndSlotListener(listener: (evt: Event) => void): void;\n\n // state selectors\n hasAddonEndNodes(): boolean;\n hasLabel(): boolean;\n hasLeadingNodes(): boolean;\n hasPlaceholder(): boolean;\n hasTrailingNodes(): boolean;\n inputHasFocus(target?: EventTarget | null): boolean;\n inputHasValue(): boolean;\n fieldHasValue(): boolean;\n isDisabled(): boolean;\n isReadonly(): boolean;\n getLabelFontMetrics(): IFontInfo;\n getLabelWidth(fontSize: number, fontFamily: string): number;\n\n // state actions\n initialize(rootSelector: string): void;\n initializeFloatingLabel(): IFloatingLabel;\n ensureLabelOrder(): void;\n ensureSlottedLabel(): void;\n destroy(): void;\n setValueChangedListener(context: any, listener: (value: any) => void): void;\n destroyValueChangeListener(): void;\n detectLabel(): void;\n setRoomy(isRoomy: boolean): void;\n setDense(isDense: boolean): void;\n setInputAttributeObserver(listener: (name: string, value: string | null) => void): void;\n}\n\nexport class FieldAdapter extends BaseAdapter<IFieldComponent> implements IFieldAdapter {\n protected _rootElement: HTMLElement;\n protected _labelSlot: HTMLSlotElement;\n protected _leadingSlot: HTMLSlotElement;\n protected _trailingSlot: HTMLSlotElement;\n protected _addonEndSlot: HTMLSlotElement;\n protected _labelElement: HTMLLabelElement;\n protected _inputElement: HTMLInputElement;\n protected _inputMutationObserver: MutationObserver;\n protected _valueChangeListeners: Array<() => void> = [];\n\n constructor(component: IFieldComponent) {\n super(component);\n }\n\n public initialize(rootSelector: string): void {\n this._rootElement = getShadowElement(this._component, rootSelector);\n this._labelSlot = getShadowElement(this._component, 'slot[name=label]') as HTMLSlotElement;\n this._leadingSlot = getShadowElement(this._component, 'slot[name=leading]') as HTMLSlotElement;\n this._trailingSlot = getShadowElement(this._component, 'slot[name=trailing]') as HTMLSlotElement;\n this._addonEndSlot = getShadowElement(this._component, 'slot[name=addon-end]') as HTMLSlotElement;\n this._inputElement = this._component.querySelector('input:not([type=checkbox]):not([type=radio])') as HTMLInputElement;\n this.detectLabel();\n }\n\n public destroy(): void {\n if (this._inputMutationObserver) {\n this._inputMutationObserver.disconnect();\n }\n }\n\n public hasLabel(): boolean {\n return !!this._labelElement;\n }\n\n public ensureSlottedLabel(): void {\n this._labelElement.slot = 'label';\n }\n\n public ensureLabelOrder(): void {\n if (this._labelElement) {\n const children = Array.from(this._component.children);\n if (children.length > 1 && children.indexOf(this._labelElement) < children.indexOf(this._inputElement)) {\n this._component.appendChild(this._labelElement);\n }\n }\n }\n\n public addLabelSlotListener(listener: (evt: Event) => void): void {\n this._labelSlot.addEventListener('slotchange', listener);\n }\n\n public removeLabelSlotListener(listener: (evt: Event) => void): void {\n if (this._labelSlot) {\n this._labelSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addLeadingSlotListener(listener: (evt: Event) => void): void {\n this._leadingSlot.addEventListener('slotchange', listener);\n }\n\n public removeLeadingSlotListener(listener: (evt: Event) => void): void {\n if (this._leadingSlot) {\n this._leadingSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addTrailingSlotListener(listener: (evt: Event) => void): void {\n this._trailingSlot.addEventListener('slotchange', listener);\n }\n\n public removeTrailingSlotListener(listener: (evt: Event) => void): void {\n if (this._trailingSlot) {\n this._trailingSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addAddonEndSlotListener(listener: (evt: Event) => void): void {\n this._addonEndSlot.addEventListener('slotchange', listener);\n }\n\n public removeAddonEndSlotListener(listener: (evt: Event) => void): void {\n if (this._addonEndSlot) {\n this._addonEndSlot.removeEventListener('slotchange', listener);\n }\n }\n\n public addInputListener(type: string, listener: (evt: Event) => void): void {\n this._inputElement.addEventListener(type, listener);\n }\n public removeInputListener(type: string, listener: (evt: Event) => void): void {\n if (this._inputElement) {\n this._inputElement.removeEventListener(type, listener);\n }\n }\n\n public setValueChangedListener(context: any, listener: (value: any) => void): void {\n this.destroyValueChangeListener();\n const destroyListener = listenOwnProperty(context, this._inputElement, 'value', listener);\n this._valueChangeListeners.push(destroyListener);\n }\n\n public destroyValueChangeListener(): void {\n this._valueChangeListeners.forEach(cb => cb());\n }\n\n public detectLabel(): void {\n this._labelElement = this._component.querySelector('label') as HTMLLabelElement;\n }\n\n public initializeFloatingLabel(): IFloatingLabel {\n return new FloatingLabel(this._labelElement);\n }\n\n public inputHasValue(): boolean {\n return this._inputElement.value ? this._inputElement.value.trim().length > 0 : false;\n }\n\n // An overrideable method for more generic field values where input.value is not the value.\n public fieldHasValue(): boolean {\n return this.inputHasValue();\n }\n\n public hasPlaceholder(): boolean {\n return this._inputElement.placeholder ? this._inputElement.placeholder.trim().length > 0 : false;\n }\n\n public inputHasFocus(target?: EventTarget | null): boolean {\n return this._inputElement === target || this._inputElement === getActiveElement();\n }\n\n public setLabelClass(name: string): void {\n if (this._labelElement) {\n this._labelElement.classList.add(name);\n }\n }\n\n public removeLabelClass(name: string): void {\n if (this._labelElement) {\n this._labelElement.classList.remove(name);\n }\n }\n\n public isLabelFloating(): boolean {\n return this._component.hasAttribute(FIELD_CONSTANTS.attributes.HOST_LABEL_FLOATING);\n }\n\n public setRoomy(isRoomy: boolean): void {\n toggleClass(this._rootElement, isRoomy, FIELD_CONSTANTS.classes.ROOMY);\n }\n\n public setDense(isDense: boolean): void {\n toggleClass(this._rootElement, isDense, FIELD_CONSTANTS.classes.DENSE);\n }\n\n public hasLeadingNodes(): boolean {\n if (!this._leadingSlot) {\n return false;\n }\n return this._leadingSlot.assignedNodes().length > 0;\n }\n\n public hasTrailingNodes(): boolean {\n if (!this._trailingSlot) {\n return false;\n }\n return this._trailingSlot.assignedNodes().length > 0;\n }\n\n public hasAddonEndNodes(): boolean {\n if (!this._addonEndSlot) {\n return false;\n }\n return this._addonEndSlot.assignedNodes().length > 0;\n }\n\n public setInputClass(className: string): void {\n this._inputElement.classList.add(className);\n }\n\n public removeInputClass(className: string): void {\n this._inputElement.classList.remove(className);\n }\n\n public setRootClass(classes: string | string[]): void {\n addClass(classes, this._rootElement);\n }\n\n public removeRootClass(classes: string | string[]): void {\n removeClass(classes, this._rootElement);\n }\n\n public setInputAttributeObserver(listener: (name: string, value: string | null) => void): void {\n this._inputMutationObserver = createElementAttributeObserver(this._inputElement, listener, FIELD_CONSTANTS.observedInputAttributes);\n }\n\n public isDisabled(): boolean {\n return this._inputElement.hasAttribute('disabled');\n }\n\n public isReadonly(): boolean {\n return this._inputElement.hasAttribute('readonly');\n }\n\n public getLabelWidth(fontSize: number, fontFamily: string): number {\n return calculateFontWidth(this._labelElement.innerText, { fontSize, fontFamily });\n }\n\n public getLabelFontMetrics(): IFontInfo {\n const style = getComputedStyle(this._labelElement);\n return {\n fontSize: parseInt(style.fontSize || '16', 10),\n fontFamily: style.fontFamily || 'Roboto'\n };\n }\n}\n", "import { ICustomElementFoundation } from '@tylertech/forge-core';\nimport { IFloatingLabel } from '../floating-label/floating-label';\nimport { IFieldAdapter } from './field-adapter';\nimport { FIELD_CONSTANTS, FieldFloatLabelType, FieldShapeType, FieldDensityType } from './field-constants';\n\nexport interface IFieldFoundation extends ICustomElementFoundation {\n density: FieldDensityType;\n floatLabelType: FieldFloatLabelType;\n shape: FieldShapeType;\n invalid: boolean;\n required: boolean;\n floatLabel(value: boolean, alwaysFloat?: boolean): void;\n}\n\nexport class FieldFoundation {\n protected _density: FieldDensityType = 'default';\n protected _floatingLabel: IFloatingLabel | undefined;\n protected _shape: FieldShapeType = 'default';\n protected _invalid = false;\n protected _required = false;\n protected _floatLabelType: FieldFloatLabelType = 'auto';\n protected _isInitialized = false;\n protected _labelSlotListener: (evt: Event) => void;\n protected _leadingSlotListener: (evt: Event) => void;\n protected _trailingSlotListener: (evt: Event) => void;\n protected _addonEndSlotListener: (evt: Event) => void;\n protected _focusListener: (evt: Event) => void;\n protected _blurListener: (evt: Event) => void;\n protected _valueChangedListener: (value: any) => void;\n protected _inputAttributeChangedListener: (name: string, value: string) => void;\n\n constructor(protected _adapter: IFieldAdapter) {\n this._labelSlotListener = evt => this._onLabelSlotChanged(evt);\n this._leadingSlotListener = evt => this._onLeadingSlotChanged(evt);\n this._trailingSlotListener = evt => this._onTrailingSlotChanged(evt);\n this._addonEndSlotListener = evt => this._onAddonEndSlotChanged(evt);\n this._focusListener = (evt: FocusEvent) => this._onFocus(evt);\n this._blurListener = (evt: FocusEvent) => this._onBlur(evt);\n this._valueChangedListener = (value: any) => this._onValueChanged(value);\n this._inputAttributeChangedListener = (name, value) => this._onInputAttributeChanged(name, value);\n }\n\n //\n // Public\n //\n\n public initialize(): void {\n this._adapter.initialize('');\n\n if (this._adapter.hasLabel()) {\n this._adapter.ensureSlottedLabel();\n }\n\n this._initializeLabel();\n\n if (this._adapter.hasPlaceholder()) {\n this._floatLabelType = 'always';\n }\n\n this._detectSlottedContent();\n this._adapter.addLabelSlotListener(this._labelSlotListener);\n this._adapter.addLeadingSlotListener(this._leadingSlotListener);\n this._adapter.addTrailingSlotListener(this._trailingSlotListener);\n this._adapter.addAddonEndSlotListener(this._addonEndSlotListener);\n this._adapter.setValueChangedListener(this, this._valueChangedListener);\n this._adapter.addInputListener('focus', this._focusListener);\n this._adapter.addInputListener('blur', this._blurListener);\n this._adapter.setInputAttributeObserver(this._inputAttributeChangedListener);\n this._applyDensity();\n this._setShapeType();\n this._setValidity();\n\n if (this._adapter.isDisabled()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.DISABLED);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.DISABLED);\n }\n\n if (this._adapter.isReadonly()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.READONLY);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.READONLY);\n }\n\n if (this._floatLabelType === 'always') {\n this.floatLabel(true);\n }\n\n this._isInitialized = true;\n }\n\n public disconnect(): void {\n this._isInitialized = false;\n this._adapter.destroy();\n\n if (this._floatingLabel) {\n this._floatingLabel.destroy();\n this._floatingLabel = undefined;\n }\n\n this._adapter.removeLabelSlotListener(this._labelSlotListener);\n this._adapter.removeLeadingSlotListener(this._leadingSlotListener);\n this._adapter.removeTrailingSlotListener(this._trailingSlotListener);\n this._adapter.removeAddonEndSlotListener(this._addonEndSlotListener);\n this._adapter.removeInputListener('focus', this._focusListener);\n this._adapter.removeInputListener('blur', this._blurListener);\n this._adapter.destroyValueChangeListener();\n }\n\n public get density(): FieldDensityType {\n return this._density;\n }\n public set density(value: FieldDensityType) {\n if (this._density !== value) {\n this._density = value;\n\n if (this._isInitialized) {\n this._applyDensity();\n this._initializeLabel();\n }\n\n this._adapter.setHostAttribute(FIELD_CONSTANTS.attributes.DENSITY, this._density.toString());\n }\n }\n\n public get floatLabelType(): FieldFloatLabelType {\n return this._floatLabelType;\n }\n public set floatLabelType(value: FieldFloatLabelType) {\n if (this._floatLabelType !== value) {\n this._floatLabelType = value;\n\n if (this._isInitialized) {\n this.floatLabel(this._floatLabelType === 'always');\n }\n\n this._adapter.setHostAttribute(FIELD_CONSTANTS.attributes.FLOAT_LABEL_TYPE, this._floatLabelType);\n }\n }\n\n public get shape(): FieldShapeType {\n return this._shape;\n }\n public set shape(value: FieldShapeType) {\n if (this._shape !== value) {\n this._shape = value;\n\n if (this._isInitialized) {\n this._setShapeType();\n }\n\n this._adapter.setHostAttribute(FIELD_CONSTANTS.attributes.SHAPE, this._shape);\n }\n }\n\n public get invalid(): boolean {\n return this._invalid;\n }\n public set invalid(value: boolean) {\n if (this._invalid !== value) {\n this._invalid = value;\n\n if (this._isInitialized) {\n this._setValidity();\n }\n }\n }\n\n public get required(): boolean {\n return this._required;\n }\n public set required(value: boolean) {\n if (this._required !== value) {\n this._required = value;\n\n if (this._isInitialized) {\n this._setValidity();\n }\n\n if (this._required) {\n this._adapter.setHostAttribute(FIELD_CONSTANTS.attributes.REQUIRED);\n } else {\n this._adapter.removeHostAttribute(FIELD_CONSTANTS.attributes.REQUIRED);\n }\n }\n }\n\n public floatLabel(value: boolean): void {\n if (this._floatingLabel?.isFloating === value || this._adapter.isLabelFloating() === value) {\n return;\n }\n\n if (!value && this._floatLabelType === 'always') {\n this._floatingLabel?.float(true, true);\n this._adapter.setHostAttribute(FIELD_CONSTANTS.attributes.HOST_LABEL_FLOATING, '');\n return;\n }\n\n if (this._floatingLabel) {\n this._floatingLabel.float(value, this._floatLabelType === 'always');\n\n if (value) {\n this._adapter.setInputClass(FIELD_CONSTANTS.classes.INPUT_FOCUSED);\n this._adapter.setHostAttribute(FIELD_CONSTANTS.attributes.HOST_LABEL_FLOATING, '');\n } else {\n this._adapter.removeInputClass(FIELD_CONSTANTS.classes.INPUT_FOCUSED);\n this._adapter.removeHostAttribute(FIELD_CONSTANTS.attributes.HOST_LABEL_FLOATING);\n }\n }\n }\n\n //\n // Protected\n //\n\n protected _onLabelSlotChanged(evt: Event): void {\n this._initializeLabel();\n }\n\n protected _onLeadingSlotChanged(evt: Event): void {\n this._detectLeadingContent();\n }\n\n protected _onTrailingSlotChanged(evt: Event): void {\n this._detectTrailingContent();\n }\n\n protected _onAddonEndSlotChanged(evt: Event): void {\n this._detectAddonEndContent();\n }\n\n protected _initializeLabel(): void {\n if (this._floatingLabel) {\n this._floatingLabel.destroy();\n }\n this._adapter.detectLabel();\n if (this._adapter.hasLabel() && this._density !== 'dense') {\n this._floatingLabel = this._adapter.initializeFloatingLabel();\n this._adapter.ensureLabelOrder();\n this.floatLabel(this._floatLabelType === 'always' || this._adapter.fieldHasValue() || this._adapter.hasPlaceholder());\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.LABEL);\n } else {\n this._adapter.removeHostAttribute(FIELD_CONSTANTS.attributes.HOST_LABEL_FLOATING);\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.LABEL);\n this._floatingLabel = undefined;\n }\n }\n\n protected _detectLeadingContent(): void {\n if (this._adapter.hasLeadingNodes()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.LEADING);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.LEADING);\n }\n }\n\n protected _detectTrailingContent(): void {\n if (this._adapter.hasTrailingNodes()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.TRAILING);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.TRAILING);\n }\n }\n\n protected _detectAddonEndContent(): void {\n if (this._adapter.hasAddonEndNodes()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.ADDON_END);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.ADDON_END);\n }\n }\n\n protected _detectSlottedContent(): void {\n this._detectLeadingContent();\n this._detectTrailingContent();\n this._detectAddonEndContent();\n }\n\n protected _onFocus(evt: FocusEvent): void {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.FOCUSED);\n this._adapter.setLabelClass(FIELD_CONSTANTS.classes.LABEL_FOCUSED);\n this.floatLabel(true);\n }\n\n protected _onBlur(evt: FocusEvent): void {\n if (this._adapter.inputHasFocus(evt.relatedTarget)) {\n return;\n }\n\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.FOCUSED);\n this._adapter.removeLabelClass(FIELD_CONSTANTS.classes.LABEL_FOCUSED);\n\n if (!this._adapter.fieldHasValue() && !this._adapter.hasPlaceholder()) {\n this.floatLabel(false);\n this._adapter.removeHostAttribute(FIELD_CONSTANTS.attributes.HOST_LABEL_FLOATING);\n }\n }\n\n protected _onValueChanged(value: any): void {\n if (this._adapter.fieldHasValue()) {\n this.floatLabel(true);\n } else if (!this._adapter.inputHasFocus() && !this._adapter.hasPlaceholder()) {\n this.floatLabel(false);\n }\n }\n\n protected _onInputAttributeChanged(name: string, value: string | null): void {\n if (this._adapter.isDisabled()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.DISABLED);\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.FOCUSED);\n this._adapter.removeInputClass(FIELD_CONSTANTS.classes.INPUT_FOCUSED);\n this._adapter.removeLabelClass(FIELD_CONSTANTS.classes.LABEL_FOCUSED);\n\n if (!this._adapter.fieldHasValue() && !this._adapter.hasPlaceholder() && this._floatingLabel) {\n this.floatLabel(false);\n }\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.DISABLED);\n }\n\n if (this._adapter.isReadonly()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.READONLY);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.READONLY);\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.FOCUSED);\n this._adapter.removeInputClass(FIELD_CONSTANTS.classes.INPUT_FOCUSED);\n }\n\n switch (name) {\n case 'readonly':\n case 'disabled':\n // If we are changing the readonly or disabled attribute, we want to make sure that we apply\n // the focus state properly if the input element also now has focus\n if (this._adapter.inputHasFocus()) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.FOCUSED);\n this._adapter.setInputClass(FIELD_CONSTANTS.classes.INPUT_FOCUSED);\n this._adapter.setLabelClass(FIELD_CONSTANTS.classes.LABEL_FOCUSED);\n }\n break;\n case 'value':\n if (this._floatingLabel) {\n this.floatLabel(this._adapter.fieldHasValue());\n }\n break;\n case 'placeholder':\n if (this._floatingLabel) {\n const float = (!!value && !!value.trim()) || this._adapter.fieldHasValue();\n if (float !== this._floatingLabel.isFloating) {\n this.floatLabel(float);\n }\n }\n break;\n }\n }\n\n protected _setShapeType(): void {\n if (this._shape === 'rounded') {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.SHAPE_ROUNDED);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.SHAPE_ROUNDED);\n }\n }\n\n protected _setValidity(): void {\n if (this._invalid) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.INVALID);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.INVALID);\n }\n\n if (this._required) {\n this._adapter.setRootClass(FIELD_CONSTANTS.classes.REQUIRED);\n } else {\n this._adapter.removeRootClass(FIELD_CONSTANTS.classes.REQUIRED);\n }\n }\n\n protected _applyDensity(): void {\n this._adapter.setRoomy(this._density === 'roomy');\n this._adapter.setDense(this._density === 'dense');\n }\n}\n", "import { FieldDensityType, FieldFloatLabelType, FieldShapeType, FIELD_CONSTANTS } from './field-constants';\nimport { BaseComponent, IBaseComponent } from '../core/base/base-component';\nimport { FieldFoundation } from './field-foundation';\nimport { coerceBoolean, ensureChild, FoundationProperty } from '@tylertech/forge-core';\n\nexport interface IFieldComponent extends IBaseComponent {\n density: FieldDensityType;\n floatLabelType: FieldFloatLabelType;\n shape: FieldShapeType;\n invalid: boolean;\n required: boolean;\n floatLabel(value: boolean): void;\n}\n\nexport abstract class FieldComponent<T extends FieldFoundation> extends BaseComponent implements IFieldComponent {\n public static get observedAttributes(): string[] {\n return [\n FIELD_CONSTANTS.attributes.DENSITY,\n FIELD_CONSTANTS.attributes.FLOAT_LABEL_TYPE,\n FIELD_CONSTANTS.attributes.SHAPE,\n FIELD_CONSTANTS.attributes.INVALID,\n FIELD_CONSTANTS.attributes.REQUIRED\n ];\n }\n\n protected _foundation: T;\n\n constructor() {\n super();\n }\n\n public connectedCallback(): void {\n if (this.querySelector(FIELD_CONSTANTS.selectors.INPUT)) {\n this._initialize();\n } else {\n ensureChild(this, FIELD_CONSTANTS.selectors.INPUT).then(() => this._initialize());\n }\n }\n\n private _initialize(): void {\n this._foundation.initialize();\n }\n\n public disconnectedCallback(): void {\n this._foundation.disconnect();\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case FIELD_CONSTANTS.attributes.DENSITY:\n this.density = newValue as FieldDensityType;\n break;\n case FIELD_CONSTANTS.attributes.FLOAT_LABEL_TYPE:\n this.floatLabelType = newValue as FieldFloatLabelType;\n break;\n case FIELD_CONSTANTS.attributes.SHAPE:\n this.shape = newValue as FieldShapeType;\n break;\n case FIELD_CONSTANTS.attributes.INVALID:\n this.invalid = coerceBoolean(newValue);\n break;\n case FIELD_CONSTANTS.attributes.REQUIRED:\n this.required = coerceBoolean(newValue);\n break;\n }\n }\n\n /** Controls the density type. */\n @FoundationProperty()\n public declare density: FieldDensityType;\n\n /** Whether the label should always float, never float or float as the user types. */\n @FoundationProperty()\n public declare floatLabelType: FieldFloatLabelType;\n\n /** The shape type to use. */\n @FoundationProperty()\n public declare shape: FieldShapeType;\n\n /** Gets/sets the invalid state. */\n @FoundationProperty()\n public declare invalid: boolean;\n\n /** Gets/sets the required state which controls the visibility of the asterisk in the label. */\n @FoundationProperty()\n public declare required: boolean;\n\n /**\n * Controls whether the label should be floating or not.\n * @param {boolean} value\n */\n public floatLabel(value: boolean): void {\n this._foundation.floatLabel(value);\n }\n}\n\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["FieldAdapter", "BaseAdapter", "component", "rootSelector", "getShadowElement", "children", "listener", "type", "context", "destroyListener", "listenOwnProperty", "cb", "FloatingLabel", "target", "getActiveElement", "name", "FIELD_CONSTANTS", "isRoomy", "toggleClass", "isDense", "className", "classes", "addClass", "removeClass", "createElementAttributeObserver", "fontSize", "fontFamily", "calculateFontWidth", "style", "FieldFoundation", "_adapter", "evt", "value", "name", "FIELD_CONSTANTS", "_a", "_b", "float", "FieldComponent", "BaseComponent", "FIELD_CONSTANTS", "ensureChild", "name", "oldValue", "newValue", "coerceBoolean", "value", "__decorateClass", "FoundationProperty"]
|
|
7
|
+
}
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* Copyright 2023 Tyler Technologies, Inc.
|
|
4
4
|
* License: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import{a,d as D}from"./chunk.XHV3GQ7L.js";import{a as I}from"./chunk.4DAIIJ37.js";import{a as C}from"./chunk.YI4JTY4T.js";import{a as N}from"./chunk.G5MGGEFP.js";import{a as d}from"./chunk.KTGSZEAG.js";import{a as R,b as O}from"./chunk.BE7PZANN.js";import{a as y,e as T,g as E,l as x}from"./chunk.Y4GKBJGI.js";import{l as f,s as A,t as b}from"./chunk.PN26D52V.js";import{b as v,d as m,k as _}from"./chunk.J2M2MXP2.js";import{a as g,f as p}from"./chunk.MCIQXNKY.js";var F=`${O}stepper`,M={STEPPER:"forge-stepper",LINEAR:"forge-stepper--linear",ALTERNATIVE:"forge-stepper--alternative",CLUSTERED:"forge-stepper--clustered",FIXED:"forge-stepper--fixed",ALIGN_LEFT:"forge-stepper--align-left",ALIGN_CENTER:"forge-stepper--align-center",ALIGN_RIGHT:"forge-stepper--align-right",VERTICAL:"forge-stepper--vertical",FOCUSED:"forge-stepper--focused"},Y={STEPPER:`.${M.STEPPER}`},K={SELECTED_INDEX:"selected-index",LINEAR:"linear",ALTERNATIVE:"alternative",LAYOUT_MODE:"layout-mode",LAYOUT_ALIGN:"layout-align",DISABLED:"disabled",VERTICAL:"vertical"},n={ARROW_LEFT_KEY:"ArrowLeft",ARROW_RIGHT_KEY:"ArrowRight",ARROW_UP_KEY:"ArrowUp",ARROW_DOWN_KEY:"ArrowDown",END_KEY:"End",ENTER_KEY:"Enter",HOME_KEY:"Home",SPACE_KEY:"Space",TAB_KEY:"Tab"},c={ARROW_LEFT_KEYCODE:37,ARROW_RIGHT_KEYCODE:39,END_KEYCODE:35,HOME_KEYCODE:36,ENTER_KEYCODE:13,SPACE_KEYCODE:32},k=[n.ARROW_LEFT_KEY,n.ARROW_RIGHT_KEY,n.ARROW_DOWN_KEY,n.ARROW_UP_KEY,n.END_KEY,n.HOME_KEY,n.ENTER_KEY,n.SPACE_KEY,n.TAB_KEY],P={[c.ARROW_LEFT_KEYCODE]:n.ARROW_LEFT_KEY,[c.ARROW_RIGHT_KEYCODE]:n.ARROW_RIGHT_KEY,[c.END_KEYCODE]:n.END_KEY,[c.HOME_KEYCODE]:n.HOME_KEY,[c.ENTER_KEYCODE]:n.ENTER_KEY,[c.SPACE_KEYCODE]:n.SPACE_KEY},i={elementName:F,classes:M,selectors:Y,attributes:K,numbers:c,strings:n,ACCEPTABLE_KEYS:k,KEYCODE_MAP:P};var l=class{static createStepElement(t,e,s){let o=document.createElement(a.elementName);return o.index=e,o.completed=t.completed||!1,o.editable=t.editable||!1,o.selected=s.selectedIndex===e,o.alternative=s.alternative,o.error=t.error||!1,o.disabled=t.disabled||!1,o.vertical=t.vertical||!1,o.ignoreUserExpansion=t.ignoreUserExpansion||!1,o.expanded=t.expanded||!1,s.linear&&e>s.selectedIndex&&(o.tabIndex=-1),o.textContent=t.label,t.optionalLabel&&o.appendChild(this.createStepOptionalLabel(t.optionalLabel)),o}static createStepOptionalLabel(t){let e=document.createElement("span");return e.slot="optional",e.textContent=t||"",e}static setLinearState(t,e){let s=t.classList.contains(i.classes.LINEAR);s&&!e&&(t.classList.remove(i.classes.LINEAR),s=!1),!s&&e&&t.classList.add(i.classes.LINEAR)}static setAlternativeState(t,e){let s=t.classList.contains(i.classes.ALTERNATIVE);s&&!e&&(t.classList.remove(i.classes.ALTERNATIVE),s=!1),!s&&e&&t.classList.add(i.classes.ALTERNATIVE)}static setLayoutMode(t,e){switch(e){case"clustered":t.classList.contains(i.classes.FIXED)&&t.classList.remove(i.classes.FIXED),t.classList.add(i.classes.CLUSTERED);break;case"fixed":t.classList.contains(i.classes.CLUSTERED)&&t.classList.remove(i.classes.CLUSTERED),t.classList.add(i.classes.FIXED);break}}static setLayoutAlign(t,e){switch(t.classList.contains(i.classes.ALIGN_LEFT)&&t.classList.remove(i.classes.ALIGN_LEFT),t.classList.contains(i.classes.ALIGN_CENTER)&&t.classList.remove(i.classes.ALIGN_CENTER),t.classList.contains(i.classes.ALIGN_RIGHT)&&t.classList.remove(i.classes.ALIGN_RIGHT),e){case"left":t.classList.add(i.classes.ALIGN_LEFT);break;case"center":t.classList.add(i.classes.ALIGN_CENTER);break;case"right":t.classList.add(i.classes.ALIGN_RIGHT);break}}static createSteps(t){let e=[];return t.steps.forEach((s,o)=>{let u=l.createStepElement(s,o,t);e.push(u)}),e[0].setAttribute(a.attributes.FIRST,""),e[e.length-1].setAttribute(a.attributes.LAST,""),e}};var S=class extends N{constructor(e){super(e);this._rootElement=E(e,i.selectors.STEPPER),this._slotElement=this._rootElement.querySelector("slot")}initializeAccessibility(){this._component.hasAttribute("role")||this._component.setAttribute("role","tablist")}patchSafari(){this._applyToSteps(e=>e.setAttribute("safari",""))}addSlotChangeListener(e){this._slotElement.addEventListener("slotchange",e)}removeSlotChangeListener(e){this._slotElement.addEventListener("slotchange",e)}getLastStep(){let e=this._getSteps();return e.item(e.length-1)}setSelected(e){this._getSteps().forEach(s=>{s===e?s.selected=!0:s.selected=!1})}assignIndices(){this._getSteps().forEach((s,o)=>{s.index=o})}assignFirstLastStep(){let e=this._getSteps();e&&e.length>1&&(e[0].setAttribute("first",""),e[e.length-1].setAttribute("last",""))}setLayoutAlign(e){l.setLayoutAlign(this._rootElement,e)}setLayoutMode(e){l.setLayoutMode(this._rootElement,e),this._applyToSteps(s=>s.setAttribute(a.attributes.CLUSTERED,""))}setAlternativeState(e){l.setAlternativeState(this._rootElement,e),this._applyToSteps(s=>s.alternative=e)}setVertical(e){b(this._rootElement,e,i.classes.VERTICAL),this._applyToSteps(s=>s.vertical=e)}setLinearState(e){l.setLinearState(this._rootElement,e)}removeRootListener(e,s){this._rootElement.removeEventListener("click",s)}addRootListener(e,s){this._rootElement.addEventListener(e,s)}setSelectedByIndex(e){this._applyToSteps(s=>{s.selected&&s.index!==e&&(s.selected=!1),s.index===e&&(s.selected=!0)})}applyConfiguredSteps(e){this._component.querySelectorAll(a.elementName).forEach(s=>{this._component.removeChild(s)}),e.forEach(s=>this._component.appendChild(s))}tryGetFocusedStep(){let e,s=A();return this._applyToSteps(o=>{s===E(o,a.selectors.STEP)&&(e=o)}),e}getFocusedOrSelectedStep(){let e=this.tryGetFocusedStep();return e||(e=this._getSteps()[0],e.focus()),e}getStep(e){let s=0,o=this._getSteps();return e<0?o.item(o.length-1):(o.length>e&&(s=e),o.item(s))}toggleDisabled(e){this._applyToSteps(s=>s.disabled=e)}toggleRootClass(e,s){b(this._rootElement,s,e)}isStepperFocused(){return this._rootElement.classList.contains(i.classes.FOCUSED)}setStepsListener(e,s){this._applyToSteps(o=>o.addEventListener(e,s))}removeStepsListener(e,s){this._applyToSteps(o=>o.removeEventListener(e,s))}_applyToSteps(e){this._getSteps().forEach(e)}_getSteps(){return this._component.querySelectorAll(a.elementName)}};var h=class{constructor(t){this._adapter=t;this._steps=[];this._selectedIndex=0;this._linear=!1;this._alternative=!1;this._layoutMode="fixed";this._layoutAlign="center";this._initialize=!1;this._clickListener=e=>this._handleClick(e),this._keyListener=e=>this._onKeydown(e),this._stepFocusListener=()=>this._onStepFocus(),this._stepBlurListener=()=>this._onStepBlur(),this._stepExpandedContentFocusInListener=e=>this._onStepExpandedContentFocusIn(e),this._stepExpandedContentFocusOutListener=e=>this._onStepExpandedContentFocusOut(e),this._slotChangeListener=e=>this._onSlotChange(e)}initialize(){this._adapter.initializeAccessibility(),this._adapter.assignIndices(),this._adapter.setLinearState(this._linear),this._adapter.setAlternativeState(this._alternative),this._adapter.setLayoutAlign(this._layoutAlign),this._adapter.setLayoutMode(this._layoutMode),this._adapter.addRootListener("click",this._clickListener),this._adapter.addHostListener("keydown",this._keyListener),this._adapter.assignFirstLastStep(),this._adapter.addRootListener(a.events.EXPANDED_CONTENT_FOCUSIN,this._stepExpandedContentFocusInListener),this._adapter.addRootListener(a.events.EXPANDED_CONTENT_FOCUSOUT,this._stepExpandedContentFocusOutListener),this._applySelectedIndex(),this._patchBrowser(),this._adapter.setStepsListener("blur",this._stepBlurListener),this._adapter.setStepsListener("focus",this._stepFocusListener),this._initialize||this._adapter.addSlotChangeListener(this._slotChangeListener),this._initialize=!0}disconnect(){this._adapter.removeRootListener("click",this._clickListener),this._adapter.removeHostListener("keydown",this._keyListener),this._adapter.removeSlotChangeListener(this._slotChangeListener),this._adapter.removeStepsListener("blur",this._stepBlurListener),this._adapter.removeStepsListener("focus",this._stepFocusListener)}get steps(){return JSON.parse(JSON.stringify(this._steps))}set steps(t){if(Array.isArray(t)&&t.length>0)this._steps=[...t.map(e=>g({},e))];else{this._steps=[];return}this._renderConfiguration()}get selectedIndex(){return this._selectedIndex}set selectedIndex(t){if(!v(t))t=0;else if(!m(t)){let e=Number(t);t=isNaN(e)?0:e}this._selectedIndex!==t&&(this._selectedIndex=t,this._adapter.setHostAttribute(i.attributes.SELECTED_INDEX,this._selectedIndex.toString()),this._applySelectedIndex())}get linear(){return this._linear}set linear(t){t=Boolean(t),this._linear!==t&&(this._linear=t,this._adapter.setLinearState(this._linear),this._adapter.setHostAttribute(i.attributes.LINEAR,this._linear.toString()))}get alternative(){return this._alternative}set alternative(t){t=Boolean(t),this._alternative!==t&&(this._alternative=t,this._adapter.setAlternativeState(this._alternative),this._adapter.setHostAttribute(i.attributes.ALTERNATIVE,this._alternative.toString()))}get layoutMode(){return this._layoutMode}set layoutMode(t){!/^(fixed|clustered)$/.test(t)||this._layoutMode!==t&&(this._layoutMode=t,this._adapter.setHostAttribute(i.attributes.LAYOUT_MODE,this._layoutMode),this._adapter.setLayoutMode(this._layoutMode))}get layoutAlign(){return this._layoutAlign}set layoutAlign(t){!/^(left|center|right)$/.test(t)||this._layoutAlign!==t&&(this._layoutAlign=t,this._adapter.setLayoutAlign(this._layoutAlign),this._adapter.setHostAttribute(i.attributes.LAYOUT_ALIGN,this._layoutAlign))}get disabled(){return this._disabled}set disabled(t){t!==this._disabled&&(this._disabled=t,this._applyDisabled())}get vertical(){return this._vertical}set vertical(t){t!==this._vertical&&(this._vertical=t,this._applyVertical(),this._adapter.toggleHostAttribute(i.attributes.VERTICAL,this._vertical))}_applyVertical(){this._adapter.setVertical(this._vertical)}_applyDisabled(){this._disabled?this._adapter.setHostAttribute(i.attributes.DISABLED,"disabled"):this._adapter.removeHostAttribute(i.attributes.DISABLED),this._adapter.toggleDisabled(this._disabled)}_applySelectedIndex(){this._adapter.setSelectedByIndex(this._selectedIndex)}_handleClick(t){if(t.preventDefault(),this._linear)return;let e=I(t),s=e.find(u=>u.classList&&u.classList.contains(a.classes.STEP)),o=e.find(u=>u.localName===a.elementName);s&&o&&!o.selected&&!o.disabled&&this._adapter.emitHostEvent(a.events.SELECT,o.index,!0,!0)&&(this._adapter.setSelected(o),this.selectedIndex=o.index)}_renderConfiguration(){let t=l.createSteps({steps:this._steps,selectedIndex:this._selectedIndex,alternative:this._alternative,layoutAlign:this._layoutAlign,layoutMode:this._layoutMode,linear:this._linear});this.disconnect(),this._adapter.applyConfiguredSteps(t),this.initialize()}_onKeydown(t){if(this._linear)return;let e=this._getKeyFromEvent(t);if(!this._adapter.isStepperFocused()||!e)return;[a.strings.HOME_KEY,a.strings.END_KEY,a.strings.ARROW_DOWN_KEY,i.strings.ARROW_UP_KEY].includes(e)&&t.preventDefault();let s=this._vertical?this._determineVerticalMoveTarget(e):this._determineMoveTarget(e);s&&this._moveFocusTo(s)}_moveFocusTo(t){E(t,a.selectors.STEP).focus()}_getKeyFromEvent(t){return i.ACCEPTABLE_KEYS.includes(t.key)?t.key:i.KEYCODE_MAP[t.keyCode]}_determineMoveTarget(t){let e=this._adapter.getFocusedOrSelectedStep();if(e)switch(t){case i.strings.ARROW_RIGHT_KEY:return this._adapter.getStep(e.index+1);case i.strings.ARROW_LEFT_KEY:return this._adapter.getStep(e.index-1);case i.strings.HOME_KEY:return this._adapter.getStep(0);case i.strings.END_KEY:return this._adapter.getLastStep()}return e}_determineVerticalMoveTarget(t){let e=this._adapter.getFocusedOrSelectedStep();if(e)switch(t){case i.strings.ARROW_DOWN_KEY:return this._adapter.getStep(e.index+1);case i.strings.ARROW_UP_KEY:return this._adapter.getStep(e.index-1);case i.strings.HOME_KEY:return this._adapter.getStep(0);case i.strings.END_KEY:return this._adapter.getLastStep()}return e}_onSlotChange(t){this.disconnect(),this.initialize()}_onStepExpandedContentFocusIn(t){let e=this._adapter.getStep(t.detail.index+1);e&&e.setStepTabIndex(0),t.detail.setStepTabIndex(0)}_onStepExpandedContentFocusOut(t){let e=t.target,s=this._adapter.getStep(e.index+1);s&&s.setStepTabIndex(-1),e.setStepTabIndex(-1)}_onStepFocus(){this._adapter.toggleRootClass(i.classes.FOCUSED,!0)}_onStepBlur(){this._adapter.toggleRootClass(i.classes.FOCUSED,!1)}_patchBrowser(){new C().SAFARI()&&this._adapter.patchSafari()}};var H='<template><div class="forge-stepper" part="root"><slot></slot></div></template>',w=".forge-stepper{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;white-space:nowrap;overflow:hidden}.forge-stepper:not(.forge-stepper--vertical) ::slotted(*){display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;position:relative;min-width:112px}.forge-stepper--fixed ::slotted(*){-webkit-box-flex:1;flex:1}.forge-stepper--alternative{-webkit-box-align:start;align-items:flex-start}.forge-stepper--alternative ::slotted(*){min-width:160px}.forge-stepper--align-left{-webkit-box-pack:start;justify-content:flex-start}.forge-stepper--align-center{-webkit-box-pack:center;justify-content:center}.forge-stepper--align-right{-webkit-box-pack:end;justify-content:flex-end}:host{display:block}:host([hidden]){display:none}:host([vertical]) .forge-stepper{display:unset;-webkit-box-align:unset;align-items:unset;white-space:unset;overflow:unset}",r=class extends x{constructor(){super();T(this,H,w),this._foundation=new h(new S(this))}static get observedAttributes(){return[i.attributes.SELECTED_INDEX,i.attributes.LINEAR,i.attributes.ALTERNATIVE,i.attributes.LAYOUT_MODE,i.attributes.LAYOUT_ALIGN,i.attributes.DISABLED,i.attributes.VERTICAL]}async connectedCallback(){await f(this),this._foundation.initialize()}disconnectedCallback(){this._foundation.disconnect()}attributeChangedCallback(e,s,o){switch(e){case i.attributes.SELECTED_INDEX:this.selectedIndex=Number(o)||0;break;case i.attributes.LINEAR:this.linear=_(o);break;case i.attributes.ALTERNATIVE:this.alternative=_(o);break;case i.attributes.LAYOUT_MODE:this.layoutMode=o;break;case i.attributes.LAYOUT_ALIGN:this.layoutAlign=o;break;case i.attributes.DISABLED:this.disabled=_(o);break;case i.attributes.VERTICAL:this.vertical=_(o);break}}};p([d()],r.prototype,"steps",2),p([d()],r.prototype,"selectedIndex",2),p([d()],r.prototype,"linear",2),p([d()],r.prototype,"alternative",2),p([d()],r.prototype,"layoutMode",2),p([d()],r.prototype,"layoutAlign",2),p([d()],r.prototype,"disabled",2),p([d()],r.prototype,"vertical",2),r=p([R({name:i.elementName,dependencies:[D]})],r);function Ce(){y(r)}export{i as a,S as b,h as c,r as d,Ce as e};
|
|
7
|
-
//# sourceMappingURL=chunk.
|
|
6
|
+
import{a,d as D}from"./chunk.HI2DQJZG.js";import{a as I}from"./chunk.4DAIIJ37.js";import{a as C}from"./chunk.YI4JTY4T.js";import{a as N}from"./chunk.G5MGGEFP.js";import{a as d}from"./chunk.KTGSZEAG.js";import{a as R,b as O}from"./chunk.BE7PZANN.js";import{a as y,e as T,g as E,l as x}from"./chunk.Y4GKBJGI.js";import{l as f,s as A,t as b}from"./chunk.PN26D52V.js";import{b as v,d as m,k as _}from"./chunk.J2M2MXP2.js";import{a as g,f as p}from"./chunk.MCIQXNKY.js";var F=`${O}stepper`,M={STEPPER:"forge-stepper",LINEAR:"forge-stepper--linear",ALTERNATIVE:"forge-stepper--alternative",CLUSTERED:"forge-stepper--clustered",FIXED:"forge-stepper--fixed",ALIGN_LEFT:"forge-stepper--align-left",ALIGN_CENTER:"forge-stepper--align-center",ALIGN_RIGHT:"forge-stepper--align-right",VERTICAL:"forge-stepper--vertical",FOCUSED:"forge-stepper--focused"},Y={STEPPER:`.${M.STEPPER}`},K={SELECTED_INDEX:"selected-index",LINEAR:"linear",ALTERNATIVE:"alternative",LAYOUT_MODE:"layout-mode",LAYOUT_ALIGN:"layout-align",DISABLED:"disabled",VERTICAL:"vertical"},n={ARROW_LEFT_KEY:"ArrowLeft",ARROW_RIGHT_KEY:"ArrowRight",ARROW_UP_KEY:"ArrowUp",ARROW_DOWN_KEY:"ArrowDown",END_KEY:"End",ENTER_KEY:"Enter",HOME_KEY:"Home",SPACE_KEY:"Space",TAB_KEY:"Tab"},c={ARROW_LEFT_KEYCODE:37,ARROW_RIGHT_KEYCODE:39,END_KEYCODE:35,HOME_KEYCODE:36,ENTER_KEYCODE:13,SPACE_KEYCODE:32},k=[n.ARROW_LEFT_KEY,n.ARROW_RIGHT_KEY,n.ARROW_DOWN_KEY,n.ARROW_UP_KEY,n.END_KEY,n.HOME_KEY,n.ENTER_KEY,n.SPACE_KEY,n.TAB_KEY],P={[c.ARROW_LEFT_KEYCODE]:n.ARROW_LEFT_KEY,[c.ARROW_RIGHT_KEYCODE]:n.ARROW_RIGHT_KEY,[c.END_KEYCODE]:n.END_KEY,[c.HOME_KEYCODE]:n.HOME_KEY,[c.ENTER_KEYCODE]:n.ENTER_KEY,[c.SPACE_KEYCODE]:n.SPACE_KEY},i={elementName:F,classes:M,selectors:Y,attributes:K,numbers:c,strings:n,ACCEPTABLE_KEYS:k,KEYCODE_MAP:P};var l=class{static createStepElement(t,e,s){let o=document.createElement(a.elementName);return o.index=e,o.completed=t.completed||!1,o.editable=t.editable||!1,o.selected=s.selectedIndex===e,o.alternative=s.alternative,o.error=t.error||!1,o.disabled=t.disabled||!1,o.vertical=t.vertical||!1,o.ignoreUserExpansion=t.ignoreUserExpansion||!1,o.expanded=t.expanded||!1,s.linear&&e>s.selectedIndex&&(o.tabIndex=-1),o.textContent=t.label,t.optionalLabel&&o.appendChild(this.createStepOptionalLabel(t.optionalLabel)),o}static createStepOptionalLabel(t){let e=document.createElement("span");return e.slot="optional",e.textContent=t||"",e}static setLinearState(t,e){let s=t.classList.contains(i.classes.LINEAR);s&&!e&&(t.classList.remove(i.classes.LINEAR),s=!1),!s&&e&&t.classList.add(i.classes.LINEAR)}static setAlternativeState(t,e){let s=t.classList.contains(i.classes.ALTERNATIVE);s&&!e&&(t.classList.remove(i.classes.ALTERNATIVE),s=!1),!s&&e&&t.classList.add(i.classes.ALTERNATIVE)}static setLayoutMode(t,e){switch(e){case"clustered":t.classList.contains(i.classes.FIXED)&&t.classList.remove(i.classes.FIXED),t.classList.add(i.classes.CLUSTERED);break;case"fixed":t.classList.contains(i.classes.CLUSTERED)&&t.classList.remove(i.classes.CLUSTERED),t.classList.add(i.classes.FIXED);break}}static setLayoutAlign(t,e){switch(t.classList.contains(i.classes.ALIGN_LEFT)&&t.classList.remove(i.classes.ALIGN_LEFT),t.classList.contains(i.classes.ALIGN_CENTER)&&t.classList.remove(i.classes.ALIGN_CENTER),t.classList.contains(i.classes.ALIGN_RIGHT)&&t.classList.remove(i.classes.ALIGN_RIGHT),e){case"left":t.classList.add(i.classes.ALIGN_LEFT);break;case"center":t.classList.add(i.classes.ALIGN_CENTER);break;case"right":t.classList.add(i.classes.ALIGN_RIGHT);break}}static createSteps(t){let e=[];return t.steps.forEach((s,o)=>{let u=l.createStepElement(s,o,t);e.push(u)}),e[0].setAttribute(a.attributes.FIRST,""),e[e.length-1].setAttribute(a.attributes.LAST,""),e}};var S=class extends N{constructor(e){super(e);this._rootElement=E(e,i.selectors.STEPPER),this._slotElement=this._rootElement.querySelector("slot")}initializeAccessibility(){this._component.hasAttribute("role")||this._component.setAttribute("role","tablist")}patchSafari(){this._applyToSteps(e=>e.setAttribute("safari",""))}addSlotChangeListener(e){this._slotElement.addEventListener("slotchange",e)}removeSlotChangeListener(e){this._slotElement.addEventListener("slotchange",e)}getLastStep(){let e=this._getSteps();return e.item(e.length-1)}setSelected(e){this._getSteps().forEach(s=>{s===e?s.selected=!0:s.selected=!1})}assignIndices(){this._getSteps().forEach((s,o)=>{s.index=o})}assignFirstLastStep(){let e=this._getSteps();e&&e.length>1&&(e[0].setAttribute("first",""),e[e.length-1].setAttribute("last",""))}setLayoutAlign(e){l.setLayoutAlign(this._rootElement,e)}setLayoutMode(e){l.setLayoutMode(this._rootElement,e),this._applyToSteps(s=>s.setAttribute(a.attributes.CLUSTERED,""))}setAlternativeState(e){l.setAlternativeState(this._rootElement,e),this._applyToSteps(s=>s.alternative=e)}setVertical(e){b(this._rootElement,e,i.classes.VERTICAL),this._applyToSteps(s=>s.vertical=e)}setLinearState(e){l.setLinearState(this._rootElement,e)}removeRootListener(e,s){this._rootElement.removeEventListener("click",s)}addRootListener(e,s){this._rootElement.addEventListener(e,s)}setSelectedByIndex(e){this._applyToSteps(s=>{s.selected&&s.index!==e&&(s.selected=!1),s.index===e&&(s.selected=!0)})}applyConfiguredSteps(e){this._component.querySelectorAll(a.elementName).forEach(s=>{this._component.removeChild(s)}),e.forEach(s=>this._component.appendChild(s))}tryGetFocusedStep(){let e,s=A();return this._applyToSteps(o=>{s===E(o,a.selectors.STEP)&&(e=o)}),e}getFocusedOrSelectedStep(){let e=this.tryGetFocusedStep();return e||(e=this._getSteps()[0],e.focus()),e}getStep(e){let s=0,o=this._getSteps();return e<0?o.item(o.length-1):(o.length>e&&(s=e),o.item(s))}toggleDisabled(e){this._applyToSteps(s=>s.disabled=e)}toggleRootClass(e,s){b(this._rootElement,s,e)}isStepperFocused(){return this._rootElement.classList.contains(i.classes.FOCUSED)}setStepsListener(e,s){this._applyToSteps(o=>o.addEventListener(e,s))}removeStepsListener(e,s){this._applyToSteps(o=>o.removeEventListener(e,s))}_applyToSteps(e){this._getSteps().forEach(e)}_getSteps(){return this._component.querySelectorAll(a.elementName)}};var h=class{constructor(t){this._adapter=t;this._steps=[];this._selectedIndex=0;this._linear=!1;this._alternative=!1;this._layoutMode="fixed";this._layoutAlign="center";this._initialize=!1;this._clickListener=e=>this._handleClick(e),this._keyListener=e=>this._onKeydown(e),this._stepFocusListener=()=>this._onStepFocus(),this._stepBlurListener=()=>this._onStepBlur(),this._stepExpandedContentFocusInListener=e=>this._onStepExpandedContentFocusIn(e),this._stepExpandedContentFocusOutListener=e=>this._onStepExpandedContentFocusOut(e),this._slotChangeListener=e=>this._onSlotChange(e)}initialize(){this._adapter.initializeAccessibility(),this._adapter.assignIndices(),this._adapter.setLinearState(this._linear),this._adapter.setAlternativeState(this._alternative),this._adapter.setLayoutAlign(this._layoutAlign),this._adapter.setLayoutMode(this._layoutMode),this._adapter.addRootListener("click",this._clickListener),this._adapter.addHostListener("keydown",this._keyListener),this._adapter.assignFirstLastStep(),this._adapter.addRootListener(a.events.EXPANDED_CONTENT_FOCUSIN,this._stepExpandedContentFocusInListener),this._adapter.addRootListener(a.events.EXPANDED_CONTENT_FOCUSOUT,this._stepExpandedContentFocusOutListener),this._applySelectedIndex(),this._patchBrowser(),this._adapter.setStepsListener("blur",this._stepBlurListener),this._adapter.setStepsListener("focus",this._stepFocusListener),this._initialize||this._adapter.addSlotChangeListener(this._slotChangeListener),this._initialize=!0}disconnect(){this._adapter.removeRootListener("click",this._clickListener),this._adapter.removeHostListener("keydown",this._keyListener),this._adapter.removeSlotChangeListener(this._slotChangeListener),this._adapter.removeStepsListener("blur",this._stepBlurListener),this._adapter.removeStepsListener("focus",this._stepFocusListener)}get steps(){return JSON.parse(JSON.stringify(this._steps))}set steps(t){if(Array.isArray(t)&&t.length>0)this._steps=[...t.map(e=>g({},e))];else{this._steps=[];return}this._renderConfiguration()}get selectedIndex(){return this._selectedIndex}set selectedIndex(t){if(!v(t))t=0;else if(!m(t)){let e=Number(t);t=isNaN(e)?0:e}this._selectedIndex!==t&&(this._selectedIndex=t,this._adapter.setHostAttribute(i.attributes.SELECTED_INDEX,this._selectedIndex.toString()),this._applySelectedIndex())}get linear(){return this._linear}set linear(t){t=Boolean(t),this._linear!==t&&(this._linear=t,this._adapter.setLinearState(this._linear),this._adapter.setHostAttribute(i.attributes.LINEAR,this._linear.toString()))}get alternative(){return this._alternative}set alternative(t){t=Boolean(t),this._alternative!==t&&(this._alternative=t,this._adapter.setAlternativeState(this._alternative),this._adapter.setHostAttribute(i.attributes.ALTERNATIVE,this._alternative.toString()))}get layoutMode(){return this._layoutMode}set layoutMode(t){!/^(fixed|clustered)$/.test(t)||this._layoutMode!==t&&(this._layoutMode=t,this._adapter.setHostAttribute(i.attributes.LAYOUT_MODE,this._layoutMode),this._adapter.setLayoutMode(this._layoutMode))}get layoutAlign(){return this._layoutAlign}set layoutAlign(t){!/^(left|center|right)$/.test(t)||this._layoutAlign!==t&&(this._layoutAlign=t,this._adapter.setLayoutAlign(this._layoutAlign),this._adapter.setHostAttribute(i.attributes.LAYOUT_ALIGN,this._layoutAlign))}get disabled(){return this._disabled}set disabled(t){t!==this._disabled&&(this._disabled=t,this._applyDisabled())}get vertical(){return this._vertical}set vertical(t){t!==this._vertical&&(this._vertical=t,this._applyVertical(),this._adapter.toggleHostAttribute(i.attributes.VERTICAL,this._vertical))}_applyVertical(){this._adapter.setVertical(this._vertical)}_applyDisabled(){this._disabled?this._adapter.setHostAttribute(i.attributes.DISABLED,"disabled"):this._adapter.removeHostAttribute(i.attributes.DISABLED),this._adapter.toggleDisabled(this._disabled)}_applySelectedIndex(){this._adapter.setSelectedByIndex(this._selectedIndex)}_handleClick(t){if(t.preventDefault(),this._linear)return;let e=I(t),s=e.find(u=>u.classList&&u.classList.contains(a.classes.STEP)),o=e.find(u=>u.localName===a.elementName);s&&o&&!o.selected&&!o.disabled&&this._adapter.emitHostEvent(a.events.SELECT,o.index,!0,!0)&&(this._adapter.setSelected(o),this.selectedIndex=o.index)}_renderConfiguration(){let t=l.createSteps({steps:this._steps,selectedIndex:this._selectedIndex,alternative:this._alternative,layoutAlign:this._layoutAlign,layoutMode:this._layoutMode,linear:this._linear});this.disconnect(),this._adapter.applyConfiguredSteps(t),this.initialize()}_onKeydown(t){if(this._linear)return;let e=this._getKeyFromEvent(t);if(!this._adapter.isStepperFocused()||!e)return;[a.strings.HOME_KEY,a.strings.END_KEY,a.strings.ARROW_DOWN_KEY,i.strings.ARROW_UP_KEY].includes(e)&&t.preventDefault();let s=this._vertical?this._determineVerticalMoveTarget(e):this._determineMoveTarget(e);s&&this._moveFocusTo(s)}_moveFocusTo(t){E(t,a.selectors.STEP).focus()}_getKeyFromEvent(t){return i.ACCEPTABLE_KEYS.includes(t.key)?t.key:i.KEYCODE_MAP[t.keyCode]}_determineMoveTarget(t){let e=this._adapter.getFocusedOrSelectedStep();if(e)switch(t){case i.strings.ARROW_RIGHT_KEY:return this._adapter.getStep(e.index+1);case i.strings.ARROW_LEFT_KEY:return this._adapter.getStep(e.index-1);case i.strings.HOME_KEY:return this._adapter.getStep(0);case i.strings.END_KEY:return this._adapter.getLastStep()}return e}_determineVerticalMoveTarget(t){let e=this._adapter.getFocusedOrSelectedStep();if(e)switch(t){case i.strings.ARROW_DOWN_KEY:return this._adapter.getStep(e.index+1);case i.strings.ARROW_UP_KEY:return this._adapter.getStep(e.index-1);case i.strings.HOME_KEY:return this._adapter.getStep(0);case i.strings.END_KEY:return this._adapter.getLastStep()}return e}_onSlotChange(t){this.disconnect(),this.initialize()}_onStepExpandedContentFocusIn(t){let e=this._adapter.getStep(t.detail.index+1);e&&e.setStepTabIndex(0),t.detail.setStepTabIndex(0)}_onStepExpandedContentFocusOut(t){let e=t.target,s=this._adapter.getStep(e.index+1);s&&s.setStepTabIndex(-1),e.setStepTabIndex(-1)}_onStepFocus(){this._adapter.toggleRootClass(i.classes.FOCUSED,!0)}_onStepBlur(){this._adapter.toggleRootClass(i.classes.FOCUSED,!1)}_patchBrowser(){new C().SAFARI()&&this._adapter.patchSafari()}};var H='<template><div class="forge-stepper" part="root"><slot></slot></div></template>',w=".forge-stepper{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;white-space:nowrap;overflow:hidden}.forge-stepper:not(.forge-stepper--vertical) ::slotted(*){display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;position:relative;min-width:112px}.forge-stepper--fixed ::slotted(*){-webkit-box-flex:1;flex:1}.forge-stepper--alternative{-webkit-box-align:start;align-items:flex-start}.forge-stepper--alternative ::slotted(*){min-width:160px}.forge-stepper--align-left{-webkit-box-pack:start;justify-content:flex-start}.forge-stepper--align-center{-webkit-box-pack:center;justify-content:center}.forge-stepper--align-right{-webkit-box-pack:end;justify-content:flex-end}:host{display:block}:host([hidden]){display:none}:host([vertical]) .forge-stepper{display:unset;-webkit-box-align:unset;align-items:unset;white-space:unset;overflow:unset}",r=class extends x{constructor(){super();T(this,H,w),this._foundation=new h(new S(this))}static get observedAttributes(){return[i.attributes.SELECTED_INDEX,i.attributes.LINEAR,i.attributes.ALTERNATIVE,i.attributes.LAYOUT_MODE,i.attributes.LAYOUT_ALIGN,i.attributes.DISABLED,i.attributes.VERTICAL]}async connectedCallback(){await f(this),this._foundation.initialize()}disconnectedCallback(){this._foundation.disconnect()}attributeChangedCallback(e,s,o){switch(e){case i.attributes.SELECTED_INDEX:this.selectedIndex=Number(o)||0;break;case i.attributes.LINEAR:this.linear=_(o);break;case i.attributes.ALTERNATIVE:this.alternative=_(o);break;case i.attributes.LAYOUT_MODE:this.layoutMode=o;break;case i.attributes.LAYOUT_ALIGN:this.layoutAlign=o;break;case i.attributes.DISABLED:this.disabled=_(o);break;case i.attributes.VERTICAL:this.vertical=_(o);break}}};p([d()],r.prototype,"steps",2),p([d()],r.prototype,"selectedIndex",2),p([d()],r.prototype,"linear",2),p([d()],r.prototype,"alternative",2),p([d()],r.prototype,"layoutMode",2),p([d()],r.prototype,"layoutAlign",2),p([d()],r.prototype,"disabled",2),p([d()],r.prototype,"vertical",2),r=p([R({name:i.elementName,dependencies:[D]})],r);function Ce(){y(r)}export{i as a,S as b,h as c,r as d,Ce as e};
|
|
7
|
+
//# sourceMappingURL=chunk.BUCIIOGE.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import{a as z,b as B,c as H,d as K,e as U}from"./chunk.27TSALYN.js";import{E as S}from"./chunk.6OKJPSUE.js";import{F as O}from"./chunk.DT7MZR5Y.js";import{a}from"./chunk.YPZNIYQL.js";import{a as _}from"./chunk.MLV25D2G.js";import{e as v}from"./chunk.DONAMICM.js";import{e as w}from"./chunk.V7WKXEZC.js";import{b as N}from"./chunk.7A6MX6CS.js";import{l as A}from"./chunk.MZLPUI6R.js";import{a as V}from"./chunk.YI4JTY4T.js";import{d as R,l as x}from"./chunk.JHBCYICS.js";import{a as L}from"./chunk.ARJ3EVVO.js";import{b as T}from"./chunk.FVRSGKJD.js";import{e as p}from"./chunk.U6WGJELL.js";import{a as E}from"./chunk.KTGSZEAG.js";import{a as M,b as F}from"./chunk.BE7PZANN.js";import{a as y,e as P,i as D}from"./chunk.Y4GKBJGI.js";import{s as k}from"./chunk.PN26D52V.js";import{f as g,g as b}from"./chunk.J2M2MXP2.js";import{f as h}from"./chunk.MCIQXNKY.js";var d=`${F}date-range-picker`,u=class{constructor(r){r&&(this.from=r.from,this.to=r.to)}copy(){return new u(this)}},q={FROM:"from",TO:"to",END_VALUE:"end-value"},G={INPUT:"input"},W={CHANGE:`${d}-change`,OPEN:`${d}-open`,CLOSE:`${d}-close`,INPUT:`${d}-input`},n={elementName:d,selectors:G,events:W,observedAttributes:q};var m=class extends K{constructor(t){super(t);this._dropdownIdentifier=`forge-date-range-picker-${this._identifier}`}_initializeInput(){if(this._fromInputElement=this._component.querySelectorAll(n.selectors.INPUT)[0],this._toInputElement=this._component.querySelectorAll(n.selectors.INPUT)[1],!this._fromInputElement||!this._fromInputElement)throw new Error(`The ${n.elementName} requires two inputs`)}_initializeCalendarDropdown(){let t=this._getDefaultTargetElement();this._calendarDropdown=new O(t,this._dropdownIdentifier)}initializeMask(t){var e;(e=this._fromInputMask)==null||e.destroy(),this._fromInputMask=new T(this._fromInputElement,t)}destroyMask(){var t;(t=this._fromInputMask)==null||t.destroy(),this._fromInputMask=void 0}initializeToMask(t){var e;(e=this._toInputMask)==null||e.destroy(),this._toInputMask=new T(this._toInputElement,t)}destroyToMask(){var t;(t=this._toInputMask)==null||t.destroy(),this._toInputMask=void 0}destroy(){super.destroy(),this._destroyToValueChangeListener()}_destroyToValueChangeListener(){typeof this._toValueChangeListener=="function"&&this._toValueChangeListener()}initializeAccessibility(){this._applyToInputs(t=>t.setAttribute("autocomplete","off")),this._applyToInputs(t=>t.setAttribute("autocorrect","off")),this._applyToInputs(t=>t.setAttribute("autocapitalize","off")),this._applyToInputs(t=>t.setAttribute("spellcheck","false")),this._applyToInputs(t=>t.setAttribute("role","combobox")),this._applyToInputs(t=>t.setAttribute("aria-live","assertive")),this._applyToInputs(t=>t.setAttribute("aria-atomic","true")),this._applyToInputs(t=>t.setAttribute("aria-haspopup","true")),this._applyToInputs(t=>t.setAttribute("aria-expanded","false")),this._applyToInputs(t=>t.setAttribute("aria-owns",this._dropdownIdentifier))}addInputListener(t,e,i){var o;(o=this._fromInputElement)==null||o.addEventListener(t,e,{capture:i})}addToInputListener(t,e,i){var o;(o=this._toInputElement)==null||o.addEventListener(t,e,{capture:i})}removeInputListener(t,e){var i;(i=this._fromInputElement)==null||i.removeEventListener(t,e)}removeToInputListener(t,e){var i;(i=this._toInputElement)==null||i.removeEventListener(t,e)}setInputValueChangedListener(t,e){this._valueChangeListeners.length&&this.destroyValueChangeListener();let i=v(t,this._fromInputElement,"value",e);this._valueChangeListeners.push(i)}setToInputValueChangedListener(t,e){this._destroyToValueChangeListener(),this._toValueChangeListener=v(t,this._toInputElement,"value",e)}hasInputElement(){return!!this._fromInputElement&&!!this._toInputElement}attachCalendar(t,e){super.attachCalendar(t,e),this._fromInputElement.setAttribute("aria-expanded","true")}detachCalendar(){super.detachCalendar(),this._fromInputElement&&(this._fromInputElement.setAttribute("aria-expanded","false"),this._fromInputElement.removeAttribute("aria-activedescendant"))}setActiveDescendant(t){this._fromInputElement.setAttribute("aria-activedescendant",t)}setInputValue(t,e){this._fromInputElement.value!==t&&(this._fromInputElement.value=t,this._fromInputMask&&this._fromInputMask.updateMask(),e&&(this._fromInputElement.dispatchEvent(new Event("change")),this._fromInputElement.dispatchEvent(new Event("input"))))}setToInputValue(t,e){this._toInputElement.value!==t&&(this._toInputElement.value=t,this._toInputMask&&this._toInputMask.updateMask(),e&&(this._toInputElement.dispatchEvent(new Event("change")),this._toInputElement.dispatchEvent(new Event("input"))))}isInputDisabled(){return this._fromInputElement.disabled}isInputFocused(t){if(t&&this._toInputElement===t||this._fromInputElement===t)return!0;let e=k();return this._toInputElement===e||this._fromInputElement===e}getInputValue(){return this._fromInputElement.value}getToInputValue(){return this._toInputElement.value}setDisabled(t){this._fromInputElement.disabled=t,this._toInputElement.disabled=t,this._toInputElement.setAttribute("aria-disabled",t.toString()),this._fromInputElement.setAttribute("aria-disabled",t.toString()),this._toggleElement&&(this._toggleElement.setAttribute("aria-disabled",t.toString()),this._toggleElement.hasOwnProperty("disabled")&&(this._toggleElement.disabled=t))}emitInputEvent(t,e){D(this._fromInputElement,t,e)}emitToInputEvent(t,e){D(this._toInputElement,t,e)}_createToggleElement(){return H("date_range")}tryFocusInput(){this._fromInputElement.focus()}tryBlurInput(){this._fromInputElement.blur()}selectInputText(){this._fromInputElement.select()}selectToInputText(){this._toInputElement.select()}_applyToInputs(t){[this._fromInputElement,this._toInputElement].forEach(t)}};var c=class extends U{constructor(t){super(t);this._mode="range";this._from=null;this._to=null;this._toInputListener=e=>this._onToInput(e),this._toInputValueChangedListener=e=>this._onToInputValueChanged(e),this._toInputKeydownListener=e=>this._onInputKeydown(e),this._toInputFocusListener=e=>this._onToInputFocus(),this._toInputBlurListener=e=>this._onToInputBlur(e)}_initializeState(){this._applyToMask(),this._from||(this._from=this._coerceDateValue(this._adapter.getInputValue())),this._to||(this._to=this._coerceDateValue(this._adapter.getToInputValue()))}_initializeListeners(){super._initializeListeners(),this._adapter.addToInputListener("keydown",this._toInputKeydownListener),this._adapter.addToInputListener("focus",this._toInputFocusListener),this._adapter.addToInputListener("blur",this._toInputBlurListener)}_initializeValueChangedListeners(){super._initializeValueChangedListeners(),this._adapter.setToInputValueChangedListener(this,this._toInputValueChangedListener)}_setInputChangeListeners(){super._setInputChangeListeners(),this._adapter.addToInputListener("input",this._toInputListener)}_removeInputChangeListeners(){super._removeInputChangeListeners(),this._adapter.removeToInputListener("input",this._toInputListener)}_openCalendar(t){this._formatToInputValue(),super._openCalendar(t);let e=this._getCurrentValue();e!=null&&e.to?this._adapter.goToCalendarDate(new Date(e.to)):e!=null&&e.from&&this._adapter.goToCalendarDate(new Date(e.from))}_emitChangeEvent(t,e){let i=this._getTypedValue(t&&t.from||null),o=this._getTypedValue(t&&t.to||null),l=new u({from:i,to:o});return this._adapter.emitHostEvent(n.events.CHANGE,l,!0,!e)?(this._setValue(this._coerceDateValue(t&&t.from||null)),this._setToValue(this._coerceDateValue(t&&t.to||null)),!0):!1}_emitOpenEvent(){this._adapter.emitHostEvent(n.events.OPEN,void 0,!1)}_emitCloseEvent(){this._adapter.emitHostEvent(n.events.CLOSE,void 0,!1)}_onToday(){let t=new Date,e=this._open?new a({from:this._from||t,to:this._to||void 0}):new a({from:t});!this._isDateRangeAcceptable(e)||(this.value=e,this._onDateSelected({date:t,range:e,selected:!0,type:"date"}),this._adapter.setCalendarActiveDate(t))}_onClear(){this._onDateSelected({date:null,range:new a,selected:!1,type:"date"}),this._closeCalendar(!0)}_getCurrentValue(){return this._value}_applyToMask(){this._masked?this._initializeToMask():(this._adapter.destroyToMask(),this._formatToInputValue())}_formatToInputValue(){let t=this._adapter.getToInputValue();if(t){let e=this._parseDateString(t);if(b(e)&&this._isDateValueAcceptable(e)){let i=this._formatDate(e);i&&this._adapter.setToInputValue(i,this._notifyInputValueChanges)}else this._allowInvalidDate||this._adapter.setToInputValue("",this._notifyInputValueChanges)}}_setFormattedInputValue(t){let e=this._formatDate(this._from);!e&&!this._allowInvalidDate&&(e=""),this._adapter.setInputValue(e,t?!1:this._notifyInputValueChanges)}_setFormattedToInputValue(t){let e=this._formatDate(this._to);!e&&!this._allowInvalidDate&&(e=""),this._adapter.setToInputValue(e,t?!1:this._notifyInputValueChanges)}_isDateRangeAcceptable(t){if(!(t!=null&&t.to))return!0;let e=()=>this._isDateValueAcceptable(t.from),i=()=>this._isDateValueAcceptable(t.to),o=()=>(t==null?void 0:t.from)&&(t==null?void 0:t.to)?t.from.getTime()<=t.to.getTime():!0;return e()&&i()&&o()}_setValue(t){this._isDateValueAcceptable(t)&&(this._from=t||null,this._value?this._value.from=this._from:this._value={from:this._from,to:this._to})}_setToValue(t){this._isDateValueAcceptable(t)&&(this._to=t||null,this._value?this._value.to=this._to:this._value={from:this._from,to:this._to})}_onDateSelected(t){let e=t.range;if(t.rangeSelectionState==="to"&&this._closeCalendar(!0),!this._emitChangeEvent(e!=null?e:null))return;let i=this._formatDate(e&&e.from||null),o=this._formatDate(e&&e.to||null);this._adapter.setInputValue(i,this._notifyInputValueChanges),this._adapter.setToInputValue(o,this._notifyInputValueChanges),this._formatInputValue(),this._formatToInputValue(),this._from=e&&e.from||null,this._to=e&&e.to||null,V.isMobile||(o?this._adapter.selectToInputText():this._adapter.selectInputText())}_applyMin(){this._from&&!this._isDateValueAcceptable(this._from)&&(this._emitChangeEvent(new a({to:this._to||void 0}),!0),this._setFormattedInputValue()),this._to&&!this._isDateValueAcceptable(this._to)&&(this._emitChangeEvent(new a({from:this._from||void 0}),!0),this._setFormattedToInputValue()),super._applyMin()}_applyMax(){this._from&&!this._isDateValueAcceptable(this._from)&&(this._emitChangeEvent(new a({to:this._to||void 0}),!0),this._setFormattedInputValue()),this._to&&!this._isDateValueAcceptable(this._to)&&(this._emitChangeEvent(new a({from:this._from||void 0}),!0),this._setFormattedToInputValue()),super._applyMax()}_initializeToMask(){if(!this._masked)return;let t={showMaskFormat:this._showMaskFormat&&this._adapter.isInputFocused(),pattern:this._maskFormat,onChange:e=>this._handleToInput(e)};this._prepareMaskCallback&&(t.prepareCallback=(e,i,o,l)=>this._prepareMaskCallback.call(null,e,i,o,l)),this._adapter.initializeToMask(t)}_applyDisabledDates(){this._from&&!this._isDateValueAcceptable(this._from)&&(this._emitChangeEvent(new a({to:this._to||void 0}),!0),this._setFormattedInputValue()),this._to&&!this._isDateValueAcceptable(this._to)&&(this._emitChangeEvent(new a({from:this._from||void 0}),!0),this._setFormattedToInputValue())}_applyDisabledDaysOfWeek(){this._from&&!this._isDateValueAcceptable(this._from)&&(this._emitChangeEvent(null,!0),this._setFormattedInputValue()),this._to&&!this._isDateValueAcceptable(this._to)&&(this._emitChangeEvent(null,!0),this._setFormattedToInputValue())}_onToInput(t){this._handleInput(this._adapter.getInputValue())}_handleInput(t){let e=this._getSanitizedDateString(t),i=this._coerceDateValue(e);this._masked&&this._adapter.emitInputEvent(n.events.INPUT,e),!p(i,this._from)&&this._isDateValueAcceptable(i)&&this._emitChangeEvent(new a({from:i||void 0,to:this._to||void 0}))}_handleToInput(t){let e=this._getSanitizedDateString(t),i=this._coerceDateValue(e);this._masked&&this._adapter.emitToInputEvent(n.events.INPUT,e),!p(i,this._to)&&this._isDateValueAcceptable(i)&&this._emitChangeEvent(new a({from:this._from||void 0,to:i||void 0}))}_onToInputFocus(){this._adapter.selectToInputText(),this.masked&&this._showMaskFormat&&(this._initializeMask(),this._initializeToMask())}_onToInputBlur(t){this._masked&&!this._adapter.isInputFocused(t.relatedTarget)&&(this._initializeMask(),this._initializeToMask()),this._formatToInputValue(),this._open&&this._closeCalendar(!0)}_onInputFocus(t){this._adapter.selectInputText(),this.masked&&this._showMaskFormat&&(this._initializeMask(),this._initializeToMask())}_onInputBlur(t){this.masked&&!this._adapter.isInputFocused(t.relatedTarget)&&(this._initializeMask(),this._initializeToMask()),this._formatInputValue(),this._open&&!this._adapter.isInputFocused(t.relatedTarget)&&this._closeCalendar(!0)}_onInputValueChanged(t){if(this._masked)return;let e=this._getSanitizedDateString(t),i=this._coerceDateValue(e);p(i,this._from)||(this.from=i,this._emitChangeEvent(new a({from:i||void 0,to:this._to||void 0})))}_onToInputValueChanged(t){if(this._masked)return;let e=this._getSanitizedDateString(t),i=this._coerceDateValue(e);p(i,this._to)||(this.to=i,this._emitChangeEvent(new a({from:this._from||void 0,to:i||void 0})))}get value(){return{from:this.from,to:this.to}}set value(t){t||(t={from:null,to:null}),t.from===void 0&&(t.from=null),t.to===void 0&&(t.to=null),this.from=t.from,this.to=t.to,this._value={from:this.from,to:this.to}}get from(){let t=this._getTypedValue(this._from);return t?g(t)?new Date(t.getTime()):t:null}set from(t){this._from!==t&&(this._setValue(this._coerceDateValue(t)),this._isInitialized&&(this._setFormattedInputValue(),this._open&&this._adapter.setCalendarValue(new a({from:this._coerceDateValue(t)||void 0,to:this._coerceDateValue(this._to)||void 0}))))}get to(){let t=this._getTypedValue(this._to);return t?g(t)?new Date(t.getTime()):t:null}set to(t){this._to!==t&&(this._setToValue(this._coerceDateValue(t)),this._isInitialized&&(this._setFormattedToInputValue(),this._open&&this._adapter.setCalendarValue(new a({to:this._coerceDateValue(t)||void 0,from:this._coerceDateValue(this._from)||void 0}))))}};var X="<template><slot></slot></template>",j=":host{display:block}:host([hidden]){display:none}",s=class extends B{constructor(){super();R.define(A),P(this,X,j),this._foundation=new c(new m(this))}static get observedAttributes(){return[...Object.values(z.observedAttributes),n.observedAttributes.FROM,n.observedAttributes.TO]}attributeChangedCallback(t,e,i){switch(t){case n.observedAttributes.FROM:this.from=i;return;case n.observedAttributes.TO:this.to=i;return}super.attributeChangedCallback(t,e,i)}};h([E()],s.prototype,"from",2),h([E()],s.prototype,"to",2),s=h([M({name:n.elementName,dependencies:[w,S,N,x]})],s);var $=class extends L{constructor(t){super(t)}_build(){let t=document.createElement(n.elementName);return this._attachTextField(t),t}get fromInput(){return this._textField.querySelector(`input[${_.attributes.MULTI_INPUT}-0]`)}get toInput(){return this._textField.querySelector(`input[${_.attributes.MULTI_INPUT}-1]`)}get textField(){return this._textField}get value(){return this._element.value}set value(t){this._element.value=t}get disabled(){return this._element.disabled}set disabled(t){this._element.disabled=t}get invalid(){return this._textField.invalid||!1}set invalid(t){this._textField.invalid=t}onChange(t){this._element.addEventListener(n.events.CHANGE,e=>t(e.detail))}onFocus(t){this._element.addEventListener("focusin",e=>{!this._element.contains(e.relatedTarget)&&t(e)})}onBlur(t){this._element.addEventListener("focusout",e=>{!this._element.contains(e.relatedTarget)&&t(e)})}_attachTextField(t){var i,o,l,I,C;this._textField=document.createElement(_.elementName),(i=this._config.options)!=null&&i.required&&(this._textField.required=!0),(o=this._config.options)!=null&&o.density&&(this._textField.density=this._config.options.density),this._fromInput=document.createElement("input"),this._fromInput.type="text",this._fromInput.placeholder=((l=this._config.options)==null?void 0:l.fromPlaceholder)||"From",this._textField.appendChild(this._fromInput),this._toInput=document.createElement("input"),this._toInput.type="text",this._toInput.placeholder=((I=this._config.options)==null?void 0:I.toPlaceholder)||"To",this._textField.appendChild(this._toInput);let e=document.createElement("label");e.textContent=((C=this._config.options)==null?void 0:C.label)||"Choose date range",this._textField.appendChild(e),t.appendChild(this._textField)}};function $t(){y(s)}export{u as a,n as b,m as c,c as d,s as e,$ as f,$t as g};
|
|
7
|
+
//# sourceMappingURL=chunk.EE25TGNW.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/date-range-picker/date-range-picker-constants.ts", "../../src/date-range-picker/date-range-picker-adapter.ts", "../../src/date-range-picker/date-range-picker-foundation.ts", "../../src/date-range-picker/date-range-picker.ts", "../../src/date-range-picker/date-range-picker-component-delegate.ts", "../../src/date-range-picker/index.ts"],
|
|
4
|
+
"sourcesContent": ["import { COMPONENT_NAME_PREFIX } from '../constants';\n\nconst elementName: keyof HTMLElementTagNameMap = `${COMPONENT_NAME_PREFIX}date-range-picker`;\n\nexport class DatePickerRange implements IDatePickerRange {\n public from?: Date | string | null;\n public to?: Date | string | null;\n constructor(range?: IDatePickerRange) {\n if (range) {\n this.from = range.from;\n this.to = range.to;\n }\n }\n\n public copy(): DatePickerRange {\n return new DatePickerRange(this);\n }\n}\n\nexport interface IDatePickerRange {\n from?: Date | string | null;\n to?: Date | string | null;\n}\n\nconst observedAttributes = {\n FROM: 'from',\n TO: 'to',\n END_VALUE: 'end-value'\n};\n\nconst selectors = {\n INPUT: 'input'\n};\n\nconst events = {\n CHANGE: `${elementName}-change`,\n OPEN: `${elementName}-open`,\n CLOSE: `${elementName}-close`,\n INPUT: `${elementName}-input`\n};\n\nexport const DATE_RANGE_PICKER_CONSTANTS = {\n elementName,\n selectors,\n events,\n observedAttributes\n};\n\n\nexport interface IDateRangePickerChangeEventData extends DatePickerRange {}\n", "import { emitEvent, listenOwnProperty, getActiveElement } from '@tylertech/forge-core';\nimport { CalendarDropdown, ICalendarDropdownPopupConfig } from '../calendar/calendar-dropdown';\nimport { DateInputMask, IDateInputMaskOptions } from '../core';\nimport { BaseDatePickerAdapter, IBaseDatePickerAdapter } from '../date-picker/base/base-date-picker-adapter';\nimport { IDatePickerCalendarDropdownConfig } from '../date-picker/base/base-date-picker-constants';\nimport { createToggleElement } from '../date-picker/base/base-date-picker-utils';\nimport { DateRangePickerComponent, IDateRangePickerComponent } from './date-range-picker';\nimport { DATE_RANGE_PICKER_CONSTANTS } from './date-range-picker-constants';\n\nexport interface IDateRangePickerAdapter extends IBaseDatePickerAdapter {\n initializeToMask(toOptions: IDateInputMaskOptions): void;\n addToInputListener(type: string, listener: (event: Event) => void): void;\n removeToInputListener(type: string, listener: (event: Event) => void): void;\n setToInputValueChangedListener(context: any, listener: (value: any) => void): void;\n getToInputValue(): string;\n setToInputValue(value: string, emitEvents: boolean): void;\n emitInputEvent(type: string, data?: any): void;\n emitToInputEvent(type: string, data?: any): void;\n tryFocusInput(): void;\n tryBlurInput(): void;\n selectToInputText(): void;\n destroyToMask(): void;\n}\n\nexport class DateRangePickerAdapter extends BaseDatePickerAdapter<IDateRangePickerComponent> implements IDateRangePickerAdapter {\n private _fromInputElement: HTMLInputElement;\n private _toInputElement: HTMLInputElement;\n private _toInputMask: DateInputMask | undefined;\n private _fromInputMask: DateInputMask | undefined;\n private _dropdownIdentifier: string;\n private _toValueChangeListener: (() => void) | undefined;\n\n constructor(component: DateRangePickerComponent) {\n super(component);\n this._dropdownIdentifier = `forge-date-range-picker-${this._identifier}`;\n }\n\n protected _initializeInput(): void {\n this._fromInputElement = this._component.querySelectorAll(DATE_RANGE_PICKER_CONSTANTS.selectors.INPUT)[0] as HTMLInputElement;\n this._toInputElement = this._component.querySelectorAll(DATE_RANGE_PICKER_CONSTANTS.selectors.INPUT)[1] as HTMLInputElement;\n\n if (!this._fromInputElement || !this._fromInputElement) {\n throw new Error(`The ${DATE_RANGE_PICKER_CONSTANTS.elementName} requires two inputs`);\n }\n }\n\n protected _initializeCalendarDropdown(): void {\n const targetElement = this._getDefaultTargetElement();\n this._calendarDropdown = new CalendarDropdown(targetElement, this._dropdownIdentifier);\n }\n\n public override initializeMask(fromOptions: IDateInputMaskOptions): void {\n this._fromInputMask?.destroy();\n this._fromInputMask = new DateInputMask(this._fromInputElement, fromOptions);\n }\n\n public override destroyMask(): void {\n this._fromInputMask?.destroy();\n this._fromInputMask = undefined;\n }\n\n public initializeToMask(toOptions: IDateInputMaskOptions): void {\n this._toInputMask?.destroy();\n this._toInputMask = new DateInputMask(this._toInputElement, toOptions);\n }\n\n public destroyToMask(): void {\n this._toInputMask?.destroy();\n this._toInputMask = undefined;\n }\n\n public override destroy(): void {\n super.destroy();\n this._destroyToValueChangeListener();\n }\n\n private _destroyToValueChangeListener(): void {\n if (typeof this._toValueChangeListener === 'function') {\n this._toValueChangeListener();\n }\n }\n\n public initializeAccessibility(): void {\n this._applyToInputs(input => input.setAttribute('autocomplete', 'off'));\n this._applyToInputs(input => input.setAttribute('autocorrect', 'off'));\n this._applyToInputs(input => input.setAttribute('autocapitalize', 'off'));\n this._applyToInputs(input => input.setAttribute('spellcheck', 'false'));\n this._applyToInputs(input => input.setAttribute('role', 'combobox'));\n this._applyToInputs(input => input.setAttribute('aria-live', 'assertive'));\n this._applyToInputs(input => input.setAttribute('aria-atomic', 'true'));\n this._applyToInputs(input => input.setAttribute('aria-haspopup', 'true'));\n this._applyToInputs(input => input.setAttribute('aria-expanded', 'false'));\n this._applyToInputs(input => input.setAttribute('aria-owns', this._dropdownIdentifier));\n }\n\n public addInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void {\n this._fromInputElement?.addEventListener(type, listener, { capture });\n }\n\n public addToInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void {\n this._toInputElement?.addEventListener(type, listener, { capture });\n }\n\n public removeInputListener(type: string, listener: (event: Event) => void): void {\n this._fromInputElement?.removeEventListener(type, listener);\n }\n \n public removeToInputListener(type: string, listener: (event: Event) => void): void {\n this._toInputElement?.removeEventListener(type, listener);\n }\n\n public setInputValueChangedListener(context: any, listener: (value: any) => void): void {\n if (this._valueChangeListeners.length) {\n this.destroyValueChangeListener();\n }\n const destroyListenerCb = listenOwnProperty(context, this._fromInputElement, 'value', listener);\n this._valueChangeListeners.push(destroyListenerCb);\n }\n\n public setToInputValueChangedListener(context: any, listener: (value: any) => void): void {\n this._destroyToValueChangeListener();\n this._toValueChangeListener = listenOwnProperty(context, this._toInputElement, 'value', listener);\n }\n\n public hasInputElement(): boolean {\n return !!this._fromInputElement && !!this._toInputElement;\n }\n\n public override attachCalendar(calendarConfig: IDatePickerCalendarDropdownConfig<Date | null>, dropdownConfig?: ICalendarDropdownPopupConfig): void {\n super.attachCalendar(calendarConfig, dropdownConfig);\n this._fromInputElement.setAttribute('aria-expanded', 'true');\n }\n\n public override detachCalendar(): void {\n super.detachCalendar();\n if (this._fromInputElement) {\n this._fromInputElement.setAttribute('aria-expanded', 'false');\n this._fromInputElement.removeAttribute('aria-activedescendant');\n }\n }\n\n public setActiveDescendant(id: string): void {\n this._fromInputElement.setAttribute('aria-activedescendant', id);\n }\n\n public setInputValue(value: string, emitEvents: boolean): void {\n if (this._fromInputElement.value === value) {\n return;\n }\n\n this._fromInputElement.value = value;\n \n if (this._fromInputMask) {\n this._fromInputMask.updateMask();\n }\n\n if (emitEvents) {\n this._fromInputElement.dispatchEvent(new Event('change'));\n this._fromInputElement.dispatchEvent(new Event('input'));;\n }\n }\n\n public setToInputValue(value: string, emitEvents: boolean): void {\n if (this._toInputElement.value === value) {\n return;\n }\n\n this._toInputElement.value = value;\n \n if (this._toInputMask) {\n this._toInputMask.updateMask();\n }\n \n if (emitEvents) {\n this._toInputElement.dispatchEvent(new Event('change'));\n this._toInputElement.dispatchEvent(new Event('input'));\n }\n }\n\n public isInputDisabled(): boolean {\n return this._fromInputElement.disabled;\n }\n\n public isInputFocused(target?: EventTarget | null): boolean {\n if (target && this._toInputElement === target || this._fromInputElement === target) {\n return true;\n }\n const activeEl = getActiveElement();\n return this._toInputElement === activeEl || this._fromInputElement === activeEl;\n }\n\n public getInputValue(): string {\n return this._fromInputElement.value;\n }\n\n public getToInputValue(): string {\n return this._toInputElement.value;\n }\n\n public setDisabled(isDisabled: boolean): void {\n this._fromInputElement.disabled = isDisabled;\n this._toInputElement.disabled = isDisabled;\n\n this._toInputElement.setAttribute('aria-disabled', isDisabled.toString());\n this._fromInputElement.setAttribute('aria-disabled', isDisabled.toString());\n\n if (this._toggleElement) {\n this._toggleElement.setAttribute('aria-disabled', isDisabled.toString());\n if (this._toggleElement.hasOwnProperty('disabled')) {\n (this._toggleElement as HTMLButtonElement).disabled = isDisabled;\n }\n }\n }\n\n public emitInputEvent(type: string, data?: any): void {\n emitEvent(this._fromInputElement, type, data);\n }\n\n public emitToInputEvent(type: string, data?: any): void {\n emitEvent(this._toInputElement, type, data);\n }\n\n protected override _createToggleElement(): HTMLElement {\n return createToggleElement('date_range');\n }\n\n public tryFocusInput(): void {\n this._fromInputElement.focus();\n }\n\n public tryBlurInput(): void {\n this._fromInputElement.blur();\n }\n\n public selectInputText(): void {\n this._fromInputElement.select();\n }\n\n public selectToInputText(): void {\n this._toInputElement.select();\n }\n\n private _applyToInputs(action: (input: HTMLInputElement) => void): void {\n [this._fromInputElement, this._toInputElement].forEach(action);\n }\n}\n", "import { isDate, isValidDate, Platform } from '@tylertech/forge-core';\nimport { CalendarMode, DateRange, ICalendarDateSelectEventData } from '../calendar';\nimport { isSameDate } from '../core/utils/date-utils';\nimport { IDateInputMaskOptions } from '../core/mask/date-input-mask';\nimport { BaseDatePickerFoundation, IBaseDatePickerFoundation } from '../date-picker/base/base-date-picker-foundation';\nimport { IDateRangePickerAdapter } from './date-range-picker-adapter';\nimport { DatePickerRange, DATE_RANGE_PICKER_CONSTANTS, IDatePickerRange, IDateRangePickerChangeEventData } from './date-range-picker-constants';\n\nexport interface IDateRangePickerFoundation extends IBaseDatePickerFoundation<IDatePickerRange> {\n from: Date | string | null | undefined;\n to: Date | string | null | undefined;\n}\n\nexport class DateRangePickerFoundation extends BaseDatePickerFoundation<IDateRangePickerAdapter, IDatePickerRange> implements IDateRangePickerFoundation {\n protected _mode: CalendarMode = 'range';\n private _from?: Date | null = null;\n private _to?: Date | null = null;\n private _toInputListener: (evt: Event) => void;\n private _toInputKeydownListener: (evt: KeyboardEvent) => void;\n private _toInputFocusListener: (evt: FocusEvent) => void;\n private _toInputBlurListener: (evt: FocusEvent) => void;\n private _toInputValueChangedListener: (value: string) => void;\n\n constructor(adapter: IDateRangePickerAdapter) {\n super(adapter);\n this._toInputListener = evt => this._onToInput(evt);\n this._toInputValueChangedListener = value => this._onToInputValueChanged(value);\n this._toInputKeydownListener = evt => this._onInputKeydown(evt);\n this._toInputFocusListener = evt => this._onToInputFocus();\n this._toInputBlurListener = evt => this._onToInputBlur(evt);\n }\n\n protected _initializeState(): void {\n this._applyToMask();\n\n if (!this._from) {\n this._from = this._coerceDateValue(this._adapter.getInputValue());\n }\n if (!this._to) {\n this._to = this._coerceDateValue(this._adapter.getToInputValue());\n }\n }\n\n protected override _initializeListeners(): void {\n super._initializeListeners();\n this._adapter.addToInputListener('keydown', this._toInputKeydownListener);\n this._adapter.addToInputListener('focus', this._toInputFocusListener);\n this._adapter.addToInputListener('blur', this._toInputBlurListener);\n }\n\n protected override _initializeValueChangedListeners(): void {\n super._initializeValueChangedListeners();\n this._adapter.setToInputValueChangedListener(this, this._toInputValueChangedListener);\n }\n\n protected override _setInputChangeListeners(): void {\n super._setInputChangeListeners();\n this._adapter.addToInputListener('input', this._toInputListener);\n }\n\n protected override _removeInputChangeListeners(): void {\n super._removeInputChangeListeners();\n this._adapter.removeToInputListener('input', this._toInputListener);\n }\n\n protected override _openCalendar(emitOpenEvent?: boolean): void {\n this._formatToInputValue();\n super._openCalendar(emitOpenEvent);\n\n const currentValue = this._getCurrentValue();\n if (!!currentValue?.to) {\n this._adapter.goToCalendarDate(new Date(currentValue.to));\n } else if (!!currentValue?.from) {\n this._adapter.goToCalendarDate(new Date(currentValue.from));\n }\n }\n\n protected _emitChangeEvent(value: DateRange | null | undefined, force?: boolean): boolean {\n const typedStartValue = this._getTypedValue((value && value.from) || null);\n const typedEndValue = this._getTypedValue((value && value.to) || null);\n const detail: IDateRangePickerChangeEventData = new DatePickerRange({ from: typedStartValue, to: typedEndValue });\n const wasCancelled = !this._adapter.emitHostEvent(DATE_RANGE_PICKER_CONSTANTS.events.CHANGE, detail, true, !force);\n if (!wasCancelled) {\n this._setValue(this._coerceDateValue((value && value.from) || null));\n this._setToValue(this._coerceDateValue((value && value.to) || null));\n return true;\n }\n return false;\n }\n\n protected _emitOpenEvent(): void {\n this._adapter.emitHostEvent(DATE_RANGE_PICKER_CONSTANTS.events.OPEN, undefined, false);\n }\n\n protected _emitCloseEvent(): void {\n this._adapter.emitHostEvent(DATE_RANGE_PICKER_CONSTANTS.events.CLOSE, undefined, false);\n }\n \n protected _onToday(): void {\n const today = new Date();\n const range = this._open ? new DateRange({ from: this._from || today, to: this._to || undefined }) : new DateRange({ from: today });\n if (!this._isDateRangeAcceptable(range)) {\n return;\n }\n this.value = range;\n this._onDateSelected({ date: today, range, selected: true, type: 'date' });\n this._adapter.setCalendarActiveDate(today);\n }\n\n protected _onClear(): void {\n this._onDateSelected({ date: null, range: new DateRange(), selected: false, type: 'date' });\n this._closeCalendar(true);\n }\n\n protected _getCurrentValue(): IDatePickerRange | null | undefined {\n return this._value;\n }\n\n private _applyToMask(): void {\n if (this._masked) {\n this._initializeToMask();\n } else {\n this._adapter.destroyToMask();\n this._formatToInputValue();\n }\n }\n\n private _formatToInputValue(): void {\n const inputValue = this._adapter.getToInputValue();\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) {\n this._adapter.setToInputValue(formattedDate, this._notifyInputValueChanges);\n }\n } else {\n if (!this._allowInvalidDate) {\n this._adapter.setToInputValue('', this._notifyInputValueChanges);\n }\n }\n }\n }\n\n protected _setFormattedInputValue(suppressValueChanges?: boolean): void {\n let formattedDate = this._formatDate(this._from);\n if (!formattedDate && !this._allowInvalidDate) {\n formattedDate = '';\n }\n this._adapter.setInputValue(formattedDate, suppressValueChanges ? false : this._notifyInputValueChanges);\n }\n\n private _setFormattedToInputValue(suppressValueChanges?: boolean): void {\n let formattedDate = this._formatDate(this._to);\n if (!formattedDate && !this._allowInvalidDate) {\n formattedDate = '';\n }\n this._adapter.setToInputValue(formattedDate, suppressValueChanges ? false : this._notifyInputValueChanges);\n }\n\n protected _isDateRangeAcceptable(value?: DateRange | null | undefined): boolean {\n if (!value?.to) {\n return true;\n }\n\n const passesMinDate = (): boolean => this._isDateValueAcceptable(value.from);\n const passesMaxDate = (): boolean => this._isDateValueAcceptable(value.to);\n const passesDateRange = (): boolean => value?.from && value?.to ? value.from.getTime() <= value.to.getTime() : true;\n\n return passesMinDate() && passesMaxDate() && passesDateRange();\n }\n\n protected _setValue(value: Date | null | undefined): void {\n if (this._isDateValueAcceptable(value)) {\n this._from = value || null;\n if (!this._value) {\n this._value = { from: this._from, to: this._to };\n } else {\n this._value.from = this._from;\n }\n }\n }\n\n private _setToValue(value: Date | null | undefined): void {\n if (this._isDateValueAcceptable(value)) {\n this._to = value || null;\n if (!this._value) {\n this._value = { from: this._from, to: this._to };\n } else {\n this._value.to = this._to;\n }\n }\n }\n\n protected _onDateSelected(event: ICalendarDateSelectEventData): void {\n const value = event.range;\n\n if (event.rangeSelectionState === 'to') {\n this._closeCalendar(true);\n }\n\n if (!this._emitChangeEvent(value ?? null)) {\n return;\n }\n\n const formattedFromValue = this._formatDate((value && value.from) || null);\n const formattedToValue = this._formatDate((value && value.to) || null);\n this._adapter.setInputValue(formattedFromValue, this._notifyInputValueChanges);\n this._adapter.setToInputValue(formattedToValue, this._notifyInputValueChanges);\n this._formatInputValue();\n this._formatToInputValue();\n\n this._from = (value && value.from) || null;\n this._to = (value && value.to) || null;\n\n if (!Platform.isMobile) {\n if (formattedToValue) {\n this._adapter.selectToInputText();\n } else {\n this._adapter.selectInputText();\n }\n }\n }\n\n protected override _applyMin(): void {\n if (this._from && !this._isDateValueAcceptable(this._from)) {\n this._emitChangeEvent(new DateRange({ to: this._to || undefined }), true);\n this._setFormattedInputValue();\n }\n if (this._to && !this._isDateValueAcceptable(this._to)) {\n this._emitChangeEvent(new DateRange({ from: this._from || undefined }), true);\n this._setFormattedToInputValue();\n }\n super._applyMin();\n }\n\n protected override _applyMax(): void {\n if (this._from && !this._isDateValueAcceptable(this._from)) {\n this._emitChangeEvent(new DateRange({ to: this._to || undefined }), true);\n this._setFormattedInputValue();\n }\n if (this._to && !this._isDateValueAcceptable(this._to)) {\n this._emitChangeEvent(new DateRange({ from: this._from || undefined }), true);\n this._setFormattedToInputValue();\n }\n super._applyMax();\n }\n\n protected _initializeToMask(): void {\n if (!this._masked) {\n return;\n }\n\n const options: IDateInputMaskOptions = {\n showMaskFormat: this._showMaskFormat && this._adapter.isInputFocused(),\n pattern: this._maskFormat,\n onChange: (value: string) => this._handleToInput(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.initializeToMask(options);\n }\n\n protected _applyDisabledDates(): void {\n if (this._from && !this._isDateValueAcceptable(this._from)) {\n this._emitChangeEvent(new DateRange({ to: this._to || undefined }), true);\n this._setFormattedInputValue();\n }\n if (this._to && !this._isDateValueAcceptable(this._to)) {\n this._emitChangeEvent(new DateRange({ from: this._from || undefined }), true);\n this._setFormattedToInputValue();\n }\n }\n\n protected _applyDisabledDaysOfWeek(): void {\n if (this._from && !this._isDateValueAcceptable(this._from)) {\n this._emitChangeEvent(null, true);\n this._setFormattedInputValue();\n }\n if (this._to && !this._isDateValueAcceptable(this._to)) {\n this._emitChangeEvent(null, true);\n this._setFormattedToInputValue();\n }\n }\n\n private _onToInput(evt: Event): void {\n this._handleInput(this._adapter.getInputValue());\n }\n\n protected _handleInput(value: string): void {\n const sanitizedValue = this._getSanitizedDateString(value);\n const date = this._coerceDateValue(sanitizedValue);\n if (this._masked) {\n this._adapter.emitInputEvent(DATE_RANGE_PICKER_CONSTANTS.events.INPUT, sanitizedValue);\n }\n if (!isSameDate(date, this._from) && this._isDateValueAcceptable(date)) {\n this._emitChangeEvent(new DateRange({ from: date || undefined, to: this._to || undefined }));\n }\n }\n\n private _handleToInput(value: string): void {\n const sanitizedValue = this._getSanitizedDateString(value);\n const date = this._coerceDateValue(sanitizedValue);\n if (this._masked) {\n this._adapter.emitToInputEvent(DATE_RANGE_PICKER_CONSTANTS.events.INPUT, sanitizedValue);\n }\n if (!isSameDate(date, this._to) && this._isDateValueAcceptable(date)) {\n this._emitChangeEvent(new DateRange({ from: this._from || undefined, to: date || undefined }));\n }\n }\n\n private _onToInputFocus(): void {\n this._adapter.selectToInputText();\n if (this.masked && this._showMaskFormat) {\n this._initializeMask();\n this._initializeToMask();\n }\n }\n\n private _onToInputBlur(evt: FocusEvent): void {\n if (this._masked && !this._adapter.isInputFocused(evt.relatedTarget)) {\n this._initializeMask();\n this._initializeToMask();\n }\n\n this._formatToInputValue();\n\n if (this._open) {\n this._closeCalendar(true);\n }\n }\n\n protected override _onInputFocus(evt: FocusEvent): void {\n this._adapter.selectInputText();\n if (this.masked && this._showMaskFormat) {\n this._initializeMask();\n this._initializeToMask();\n }\n }\n\n protected override _onInputBlur(evt: FocusEvent): void {\n if (this.masked && !this._adapter.isInputFocused(evt.relatedTarget)) {\n this._initializeMask();\n this._initializeToMask();\n }\n\n this._formatInputValue();\n\n if (this._open && !this._adapter.isInputFocused(evt.relatedTarget)) {\n this._closeCalendar(true);\n }\n }\n\n protected _onInputValueChanged(value: string): void {\n if (this._masked) {\n return;\n }\n const sanitizedValue = this._getSanitizedDateString(value);\n const date = this._coerceDateValue(sanitizedValue);\n if (!isSameDate(date, this._from)) {\n this.from = date;\n this._emitChangeEvent(new DateRange({ from: date || undefined, to: this._to || undefined }));\n }\n }\n\n private _onToInputValueChanged(value: string): void {\n if (this._masked) {\n return;\n }\n const sanitizedValue = this._getSanitizedDateString(value);\n const date = this._coerceDateValue(sanitizedValue);\n if (!isSameDate(date, this._to)) {\n this.to = date;\n this._emitChangeEvent(new DateRange({ from: this._from || undefined, to: date || undefined }));\n }\n }\n\n public get value(): IDatePickerRange | null | undefined {\n return { from: this.from, to: this.to };\n }\n public set value(value: IDatePickerRange | null | undefined) {\n if (!value) {\n value = { from: null, to: null };\n }\n\n if (value.from === undefined) {\n value.from = null;\n }\n\n if (value.to === undefined) {\n value.to = null;\n }\n\n this.from = value.from;\n this.to = value.to;\n\n this._value = { from: this.from, to: this.to };\n }\n\n public get from(): Date | string | null | undefined {\n const date = this._getTypedValue(this._from);\n\n if (!date) {\n return null;\n }\n\n if (isDate(date)) {\n return new Date(date.getTime());\n }\n\n return date;\n }\n public set from(value: Date | string | null | undefined) {\n if (this._from !== value) {\n this._setValue(this._coerceDateValue(value));\n if (this._isInitialized) {\n this._setFormattedInputValue();\n if (this._open) {\n this._adapter.setCalendarValue(new DateRange({ from: this._coerceDateValue(value) || undefined, to: this._coerceDateValue(this._to) || undefined }));\n }\n }\n }\n }\n\n public get to(): Date | string | null | undefined {\n const date = this._getTypedValue(this._to);\n\n if (!date) {\n return null;\n }\n\n if (isDate(date)) {\n return new Date(date.getTime());\n }\n\n return date;\n }\n public set to(value: Date | string | null | undefined) {\n if (this._to !== value) {\n this._setToValue(this._coerceDateValue(value));\n if (this._isInitialized) {\n this._setFormattedToInputValue();\n if (this._open) {\n this._adapter.setCalendarValue(new DateRange({ to: this._coerceDateValue(value) || undefined, from: this._coerceDateValue(this._from) || undefined }));\n }\n }\n }\n }\n}\n", "import { attachShadowTemplate, CustomElement, FoundationProperty } from '@tylertech/forge-core';\nimport { tylIconDateRange } from '@tylertech/tyler-icons/standard';\nimport { CalendarComponent } from '../calendar';\nimport { BaseDatePickerComponent, IBaseDatePickerComponent } from '../date-picker/base/base-date-picker';\nimport { BASE_DATE_PICKER_CONSTANTS } from '../date-picker/base/base-date-picker-constants';\nimport { IconComponent, IconRegistry } from '../icon';\nimport { IconButtonComponent } from '../icon-button';\nimport { PopupComponent } from '../popup';\nimport { DateRangePickerAdapter } from './date-range-picker-adapter';\nimport { DATE_RANGE_PICKER_CONSTANTS, IDatePickerRange, IDateRangePickerChangeEventData } from './date-range-picker-constants';\nimport { DateRangePickerFoundation } from './date-range-picker-foundation';\n\nconst template = '<template><slot></slot></template>';\nconst styles = ':host{display:block}:host([hidden]){display:none}';\n\nexport interface IDateRangePickerComponent extends IBaseDatePickerComponent<IDatePickerRange> {\n from: Date | string | null | undefined;\n to: Date | string | null | undefined;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'forge-date-range-picker': IDateRangePickerComponent;\n }\n\n interface HTMLElementEventMap {\n 'forge-date-range-picker-change': CustomEvent<IDateRangePickerChangeEventData>;\n 'forge-date-range-picker-open': CustomEvent<void>;\n 'forge-date-range-picker-close': CustomEvent<void>;\n 'forge-date-range-picker-input': CustomEvent<string>;\n }\n}\n\n/**\n * The custom element class behind the `<forge-date-range-picker>` element.\n * \n * @tag forge-date-range-picker\n */\n@CustomElement({\n name: DATE_RANGE_PICKER_CONSTANTS.elementName,\n dependencies: [\n PopupComponent,\n CalendarComponent,\n IconButtonComponent,\n IconComponent\n ]\n})\nexport class DateRangePickerComponent extends BaseDatePickerComponent<IDatePickerRange, IDatePickerRange, DateRangePickerFoundation> implements IDateRangePickerComponent {\n public static get observedAttributes(): string[] {\n return [\n ...Object.values(BASE_DATE_PICKER_CONSTANTS.observedAttributes),\n DATE_RANGE_PICKER_CONSTANTS.observedAttributes.FROM,\n DATE_RANGE_PICKER_CONSTANTS.observedAttributes.TO\n ];\n }\n\n constructor() {\n super();\n IconRegistry.define(tylIconDateRange);\n attachShadowTemplate(this, template, styles);\n this._foundation = new DateRangePickerFoundation(new DateRangePickerAdapter(this));\n }\n\n public attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n switch (name) {\n case DATE_RANGE_PICKER_CONSTANTS.observedAttributes.FROM:\n this.from = newValue;\n return;\n case DATE_RANGE_PICKER_CONSTANTS.observedAttributes.TO:\n this.to = newValue;\n return;\n }\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n\n /** Gets/sets the \"from\" date range value. */\n @FoundationProperty()\n public declare from: Date | string | null | undefined;\n\n /** Gets/sets the \"to\" date range value. */\n @FoundationProperty()\n public declare to: Date | string | null | undefined;\n}\n", "import { FormFieldComponentDelegate, IFormFieldComponentDelegateOptions, IBaseComponentDelegateConfig } from '../core/delegates';\nimport { FieldDensityType } from '../field/field-constants';\nimport { ITextFieldComponent, TEXT_FIELD_CONSTANTS } from '../text-field';\nimport { IDateRangePickerComponent } from './date-range-picker';\nimport { DATE_RANGE_PICKER_CONSTANTS, IDateRangePickerChangeEventData } from './date-range-picker-constants';\n\nexport type DateRangePickerComponentDelegateProps = Partial<IDateRangePickerComponent>;\nexport interface IDateRangePickerComponentDelegateOptions extends IFormFieldComponentDelegateOptions {\n useDropdownIcon?: boolean;\n fromPlaceholder?: string;\n toPlaceholder?: string;\n label?: string;\n required?: boolean;\n density?: FieldDensityType;\n}\nexport interface IDateRangePickerComponentDelegateConfig extends IBaseComponentDelegateConfig<IDateRangePickerComponent, IDateRangePickerComponentDelegateOptions> {}\n\nexport class DateRangeComponentDelegate extends FormFieldComponentDelegate<IDateRangePickerComponent, IDateRangePickerComponentDelegateOptions> {\n private _textField: ITextFieldComponent;\n private _fromInput: HTMLInputElement;\n private _toInput: HTMLInputElement;\n\n constructor(config?: IDateRangePickerComponentDelegateConfig) {\n super(config);\n }\n\n protected _build(): IDateRangePickerComponent {\n const dateRangePicker = document.createElement(DATE_RANGE_PICKER_CONSTANTS.elementName) as IDateRangePickerComponent;\n this._attachTextField(dateRangePicker);\n return dateRangePicker;\n }\n\n public get fromInput(): HTMLInputElement {\n return this._textField.querySelector(`input[${TEXT_FIELD_CONSTANTS.attributes.MULTI_INPUT}-0]`) as HTMLInputElement;\n }\n\n public get toInput(): HTMLInputElement {\n return this._textField.querySelector(`input[${TEXT_FIELD_CONSTANTS.attributes.MULTI_INPUT}-1]`) as HTMLInputElement;\n }\n\n public get textField(): ITextFieldComponent {\n return this._textField;\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._textField.invalid || false;\n }\n public set invalid(value: boolean) {\n this._textField.invalid = value;\n }\n\n public onChange(listener: (value: IDateRangePickerChangeEventData) => void): void {\n this._element.addEventListener(DATE_RANGE_PICKER_CONSTANTS.events.CHANGE, (evt: CustomEvent<IDateRangePickerChangeEventData>) => listener(evt.detail));\n }\n\n public onFocus(listener: (evt: FocusEvent) => void): void {\n this._element.addEventListener('focusin', (evt: FocusEvent) => {\n const isFocusWithin = !this._element.contains(evt.relatedTarget as Node);\n if (isFocusWithin) {\n listener(evt);\n }\n });\n }\n\n public onBlur(listener: (evt: FocusEvent) => void): void {\n this._element.addEventListener('focusout', (evt: FocusEvent) => {\n const isFocusOutside = !this._element.contains(evt.relatedTarget as Node);\n if (isFocusOutside) {\n listener(evt);\n }\n });\n }\n\n private _attachTextField(dateRangePicker: IDateRangePickerComponent): void {\n this._textField = document.createElement(TEXT_FIELD_CONSTANTS.elementName);\n\n if (this._config.options?.required) {\n this._textField.required = true;\n }\n if (this._config.options?.density) {\n this._textField.density = this._config.options.density;\n }\n\n this._fromInput = document.createElement('input');\n this._fromInput.type = 'text';\n this._fromInput.placeholder = this._config.options?.fromPlaceholder || 'From';\n this._textField.appendChild(this._fromInput);\n\n this._toInput = document.createElement('input');\n this._toInput.type = 'text';\n this._toInput.placeholder = this._config.options?.toPlaceholder || 'To';\n this._textField.appendChild(this._toInput);\n\n const label = document.createElement('label');\n label.textContent = this._config.options?.label || 'Choose date range';\n this._textField.appendChild(label);\n\n dateRangePicker.appendChild(this._textField);\n }\n}\n", "import { defineCustomElement } from '@tylertech/forge-core';\nimport { DateRangePickerComponent } from './date-range-picker';\n\nexport * from './date-range-picker';\nexport * from './date-range-picker-adapter';\nexport * from './date-range-picker-constants';\nexport * from './date-range-picker-foundation';\nexport * from './date-range-picker-component-delegate';\n\nexport function defineDateRangePickerComponent(): void {\n defineCustomElement(DateRangePickerComponent);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["elementName", "COMPONENT_NAME_PREFIX", "DatePickerRange", "range", "observedAttributes", "selectors", "events", "DATE_RANGE_PICKER_CONSTANTS", "DateRangePickerAdapter", "BaseDatePickerAdapter", "component", "DATE_RANGE_PICKER_CONSTANTS", "targetElement", "CalendarDropdown", "fromOptions", "_a", "DateInputMask", "toOptions", "input", "type", "listener", "capture", "context", "destroyListenerCb", "listenOwnProperty", "calendarConfig", "dropdownConfig", "id", "value", "emitEvents", "target", "activeEl", "getActiveElement", "isDisabled", "data", "emitEvent", "createToggleElement", "action", "DateRangePickerFoundation", "BaseDatePickerFoundation", "adapter", "evt", "value", "emitOpenEvent", "currentValue", "force", "typedStartValue", "typedEndValue", "detail", "DatePickerRange", "DATE_RANGE_PICKER_CONSTANTS", "today", "range", "DateRange", "inputValue", "parsedDate", "isValidDate", "formattedDate", "suppressValueChanges", "passesMinDate", "passesMaxDate", "passesDateRange", "event", "formattedFromValue", "formattedToValue", "Platform", "options", "masked", "flags", "maskInstance", "sanitizedValue", "date", "isSameDate", "isDate", "template", "styles", "DateRangePickerComponent", "BaseDatePickerComponent", "IconRegistry", "tylIconDateRange", "attachShadowTemplate", "DateRangePickerFoundation", "DateRangePickerAdapter", "BASE_DATE_PICKER_CONSTANTS", "DATE_RANGE_PICKER_CONSTANTS", "name", "oldValue", "newValue", "__decorateClass", "FoundationProperty", "CustomElement", "PopupComponent", "CalendarComponent", "IconButtonComponent", "IconComponent", "DateRangeComponentDelegate", "FormFieldComponentDelegate", "config", "dateRangePicker", "DATE_RANGE_PICKER_CONSTANTS", "TEXT_FIELD_CONSTANTS", "value", "listener", "evt", "_a", "_b", "_c", "_d", "_e", "label", "defineDateRangePickerComponent", "defineCustomElement", "DateRangePickerComponent"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Tyler Technologies, Inc.
|
|
4
|
+
* License: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import{a as L}from"./chunk.4BEI55KI.js";import{a as N}from"./chunk.4DAIIJ37.js";import{a as T}from"./chunk.G5MGGEFP.js";import{a as d}from"./chunk.KTGSZEAG.js";import{a as I,b as y}from"./chunk.BE7PZANN.js";import{a as O,e as f,g as h,l as A}from"./chunk.Y4GKBJGI.js";import{k as v,o as u}from"./chunk.J2M2MXP2.js";import{f as a}from"./chunk.MCIQXNKY.js";var C=`${y}expansion-panel`,c={CONTAINER:"forge-expansion-panel",HEADER:"forge-expansion-panel__header",CONTENT:"forge-expansion-panel__content"},x={CONTAINER:`.${c.CONTAINER}`,HEADER:`.${c.HEADER}`,CONTENT:`.${c.CONTENT}`,HEADER_SLOT:`.${c.HEADER} > slot[name=header]`,OPEN_ICON:`[slot=header] ${L.elementName}`},k={TOGGLE:`${C}-toggle`},P={OPEN:"open",ORIENTATION:"orientation",USE_ANIMATIONS:"use-animations",IGNORE:"data-forge-ignore",IGNORE_ALT:"forge-ignore"},p={COLLAPSE_ANIMATION_DURATION:400,CLICK_DEBOUNCE_THRESHOLD:200},S={ORIENTATION_VERTICAL:"vertical",ORIENTATION_HORIZONTAL:"horizontal",EXPANSION_VERTICAL_TRANSITION:`height ${p.COLLAPSE_ANIMATION_DURATION}ms cubic-bezier(0.4, 0, 0.2, 1), opacity ${p.COLLAPSE_ANIMATION_DURATION}ms ease-in-out`,EXPANSION_HORIZONTAL_TRANSITION:`width ${p.COLLAPSE_ANIMATION_DURATION}ms cubic-bezier(0.4, 0, 0.2, 1), opacity ${p.COLLAPSE_ANIMATION_DURATION}ms ease-in-out`},i={elementName:C,classes:c,selectors:x,events:k,attributes:P,numbers:p,strings:S};var _=class extends T{constructor(t){super(t);this._headerElement=h(this._component,i.selectors.HEADER),this._contentElement=h(this._component,i.selectors.CONTENT),this._headerSlotElement=h(this._component,i.selectors.HEADER_SLOT)}initialize(t,n="vertical"){let r=this._headerElement.children[0].assignedNodes();if(this.setHeaderVisibility(!!r.length),n===i.strings.ORIENTATION_HORIZONTAL&&(this._contentElement.style.height="",this._contentElement.style.width="0px"),t){n==="vertical"?this._contentElement.style.height="":this._contentElement.style.width="",this._contentElement.style.removeProperty("opacity"),this._contentElement.style.removeProperty("visibility");let l=this._component.querySelector(i.selectors.OPEN_ICON);l&&(l.open=!0)}this._headerElement.setAttribute("aria-expanded",t?"true":"false")}setHeaderVisibility(t){t?this._headerElement.style.display="":this._headerElement.style.display="none"}setOpenState(t,n=i.strings.ORIENTATION_VERTICAL,r=!0){let l=this._contentElement.children[0].assignedNodes(),s=this._component.querySelector(i.selectors.OPEN_ICON);if(r&&l&&l.length&&l[0]){let E=({propertyName:g})=>{if(this._component.open!==t){this._contentElement.removeEventListener("transitionend",E);return}(g==="height"||g==="width")&&(this._contentElement.removeEventListener("transitionend",E),this._contentElement.style.removeProperty("transition"),t?(n===i.strings.ORIENTATION_HORIZONTAL?this._contentElement.style.width="":this._contentElement.style.height="",this._contentElement.style.removeProperty("opacity")):this._contentElement.style.visibility="hidden")};this._contentElement.addEventListener("transitionend",E),t?(n===i.strings.ORIENTATION_HORIZONTAL?this._contentElement.style.width="0px":this._contentElement.style.height="0px",this._contentElement.style.opacity="0",this._contentElement.style.removeProperty("visibility")):(n===i.strings.ORIENTATION_HORIZONTAL?this._contentElement.style.width=`${this._contentElement.scrollWidth}px`:this._contentElement.style.height=`${this._contentElement.scrollHeight}px`,this._contentElement.style.opacity="1"),n===i.strings.ORIENTATION_HORIZONTAL?this._contentElement.style.transition=i.strings.EXPANSION_HORIZONTAL_TRANSITION:this._contentElement.style.transition=i.strings.EXPANSION_VERTICAL_TRANSITION,window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{t?(n===i.strings.ORIENTATION_HORIZONTAL?this._contentElement.style.width=`${this._contentElement.scrollWidth}px`:this._contentElement.style.height=`${this._contentElement.scrollHeight}px`,this._contentElement.style.opacity="1",this._headerElement.setAttribute("aria-expanded","true"),s&&(s.open=!0)):(n===i.strings.ORIENTATION_HORIZONTAL?this._contentElement.style.width="0px":this._contentElement.style.height="0px",this._contentElement.style.opacity="0",this._headerElement.setAttribute("aria-expanded","false"),s&&(s.open=!1))})})}else this._contentElement.style.removeProperty("transition"),t?(n===i.strings.ORIENTATION_HORIZONTAL?this._contentElement.style.width="":this._contentElement.style.height="",this._contentElement.style.removeProperty("visibility"),this._contentElement.style.removeProperty("opacity"),this._headerElement.setAttribute("aria-expanded","true"),s&&(s.open=!0)):(n===i.strings.ORIENTATION_HORIZONTAL?this._contentElement.style.width="0px":this._contentElement.style.height="0px",this._contentElement.style.opacity="0",this._contentElement.style.visibility="hidden",this._headerElement.setAttribute("aria-expanded","false"),s&&(s.open=!1))}registerClickListener(t){this._headerElement.addEventListener("click",t)}deregisterClickListener(t){this._headerElement.removeEventListener("click",t)}registerKeydownListener(t){this._headerElement.addEventListener("keydown",t)}deregisterKeydownListener(t){this._headerElement.removeEventListener("keydown",t)}registerHeaderSlotListener(t){this._headerSlotElement.addEventListener("slotchange",t)}deregisterHeaderSlotListener(t){this._headerSlotElement.removeEventListener("slotchange",t)}};var m=class{constructor(e){this._adapter=e;this._open=!1;this._useAnimations=!0;this._orientation=i.strings.ORIENTATION_VERTICAL;this._isInitialized=!1;this._clickListener=u(t=>this._onClick(t),i.numbers.CLICK_DEBOUNCE_THRESHOLD,!0),this._keydownListener=t=>this._onKeydown(t),this._headerSlotChangeListener=t=>this._onHeaderSlotChanged(t)}initialize(){this.connect(),this._adapter.initialize(this._open,this._orientation),this._isInitialized=!0}connect(){this._adapter.registerHeaderSlotListener(this._headerSlotChangeListener),this._adapter.registerClickListener(this._clickListener),this._adapter.registerKeydownListener(this._keydownListener)}disconnect(){this._adapter.deregisterHeaderSlotListener(this._headerSlotChangeListener),this._adapter.deregisterClickListener(this._clickListener),this._adapter.deregisterKeydownListener(this._keydownListener)}setOpenImmediate(e){e?this._openPanel(!1):this._closePanel(!1)}_applyOpen(e){if(!this._isInitialized){this._open=e;return}e?this._openCallback?Promise.resolve(this._openCallback()).then(()=>{this._open=e,this._openPanel(this._useAnimations)}).catch(()=>{}):(this._open=e,this._openPanel(this._useAnimations)):this._closeCallback?Promise.resolve(this._closeCallback()).then(()=>{this._open=e,this._closePanel(this._useAnimations)}).catch(()=>{}):(this._open=e,this._closePanel(this._useAnimations))}get open(){return this._open}set open(e){e=Boolean(e),this._open!==e&&this._applyOpen(e)}get openCallback(){return this._openCallback}set openCallback(e){this._openCallback=e}get closeCallback(){return this._closeCallback}set closeCallback(e){this._closeCallback=e}get orientation(){return this._orientation}set orientation(e){this._orientation=e}get useAnimations(){return this._useAnimations}set useAnimations(e){this._useAnimations!==!!e&&(this._useAnimations=!!e,this._adapter.setHostAttribute(i.attributes.USE_ANIMATIONS,`${this._useAnimations}`))}_onClick(e){N(e).find(t=>t.nodeType===1&&(t.hasAttribute(i.attributes.IGNORE)||t.hasAttribute(i.attributes.IGNORE_ALT)))||(e.stopPropagation(),this._toggle(),this._emitEvent())}_onKeydown(e){(e.key===" "||e.key==="Enter")&&(e.stopPropagation(),e.preventDefault(),this._toggle(),this._emitEvent())}_emitEvent(){this._adapter.emitHostEvent(i.events.TOGGLE,this._open)}_toggle(){this.open=!this.open}_openPanel(e){this._adapter.setHostAttribute(i.attributes.OPEN,""),this._adapter.setOpenState(!0,this._orientation,e)}_closePanel(e){this._adapter.removeHostAttribute(i.attributes.OPEN),this._adapter.setOpenState(!1,this._orientation,e)}_onHeaderSlotChanged(e){this._adapter.setHeaderVisibility(!!e.target.assignedNodes().length)}};var R='<template><div class="forge-expansion-panel" part="root"><div class="forge-expansion-panel__header" part="header"><slot name="header"></slot></div><div class="forge-expansion-panel__content" style="height: 0; opacity: 0; visibility: hidden;" part="content"><slot></slot></div></div></template>',H=".forge-expansion-panel{display:block;display:var(--forge-expansion-panel-display,block);height:auto;height:var(--forge-expansion-panel-height,auto)}.forge-expansion-panel__header{outline:0}.forge-expansion-panel__header:hover{cursor:pointer}.forge-expansion-panel__header forge-open-icon{margin-left:auto}.forge-expansion-panel__content{overflow:hidden;overflow:var(--forge-expansion-panel-content-overflow,hidden);max-height:none;max-height:var(--forge-expansion-panel-content-max-height,none)}.forge-expansion-panel__content::-webkit-scrollbar{width:16px;width:var(--forge-scrollbar-width,16px);height:16px;height:var(--forge-scrollbar-height,16px)}.forge-expansion-panel__content::-webkit-scrollbar-corner{background-color:#f0f0f0;background-color:var(--forge-theme-scrollbar-track,#f0f0f0)}.forge-expansion-panel__content::-webkit-scrollbar-track{background-color:#f0f0f0;background-color:var(--forge-theme-scrollbar-track,#f0f0f0)}.forge-expansion-panel__content::-webkit-scrollbar-track:hover{background-color:#ececec;background-color:var(--forge-theme-scrollbar-track-hover,#ececec)}.forge-expansion-panel__content::-webkit-scrollbar-thumb{background-color:#bdbdbd;background-color:var(--forge-theme-scrollbar-thumb,#bdbdbd);height:32px;height:var(--forge-scrollbar-min-height,32px);width:32px;width:var(--forge-scrollbar-min-width,32px);border-radius:10px;border-radius:var(--forge-scrollbar-border-radius,10px);border-width:3px;border-width:var(--forge-scrollbar-border-width,3px);border-style:solid;border-color:transparent;background-clip:content-box}.forge-expansion-panel__content::-webkit-scrollbar-thumb:hover{background-color:#9e9e9e;background-color:var(--forge-theme-scrollbar-thumb-hover,#9e9e9e)}:host{display:block}:host([hidden]){display:none}",o=class extends A{constructor(){super();f(this,R,H),this._foundation=new m(new _(this))}static get observedAttributes(){return[i.attributes.OPEN,i.attributes.ORIENTATION,i.attributes.USE_ANIMATIONS]}initializedCallback(){this._foundation.initialize()}connectedCallback(){this._foundation.connect()}attributeChangedCallback(t,n,r){switch(t){case i.attributes.OPEN:this.open=v(r);break;case i.attributes.ORIENTATION:this.orientation=r;break;case i.attributes.USE_ANIMATIONS:this.useAnimations=v(r);break}}disconnectedCallback(){this._foundation.disconnect()}toggle(){this.open=!this.open}setOpenImmediate(t){this._foundation.setOpenImmediate(t)}};a([d()],o.prototype,"open",2),a([d()],o.prototype,"openCallback",2),a([d()],o.prototype,"closeCallback",2),a([d()],o.prototype,"orientation",2),a([d()],o.prototype,"useAnimations",2),o=a([I({name:i.elementName})],o);function ie(){O(o)}export{i as a,_ as b,m as c,o as d,ie as e};
|
|
7
|
+
//# sourceMappingURL=chunk.GCR7QZRO.js.map
|