@haiilo/catalyst 14.1.0 → 14.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"file":"cat-select2.js","mappings":"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","names":["autosizeInput","__stencil_proxyCustomElement","Subject","debounce","timer","of","distinctUntilChanged","tap","filter","scan","startWith","switchMap","takeWhile","i18n","first","catchError"],"sources":["../node_modules/.pnpm/autosize-input@1.0.2/node_modules/autosize-input/index.js","src/components/cat-select/cat-select.scss?tag=cat-select&encapsulation=shadow","src/components/cat-select/cat-select.tsx"],"sourcesContent":["var GHOST_ELEMENT_ID = '__autosizeInputGhost'\n\nvar characterEntities = {\n ' ': 'nbsp',\n '<': 'lt',\n '>': 'gt'\n}\nfunction mapSpecialCharacterToCharacterEntity (specialCharacter) {\n return '&' + characterEntities[specialCharacter] + ';'\n}\nfunction escapeSpecialCharacters (string) {\n return string.replace(/\\s|<|>/g, mapSpecialCharacterToCharacterEntity)\n}\n\n// Create `ghostElement`, with inline styles to hide it and ensure that the text is all\n// on a single line.\nfunction createGhostElement () {\n var ghostElement = document.createElement('div')\n ghostElement.id = GHOST_ELEMENT_ID\n ghostElement.style.cssText =\n 'display:inline-block;height:0;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:nowrap;'\n document.body.appendChild(ghostElement)\n return ghostElement\n}\n\nmodule.exports = function (element, options) {\n var elementStyle = window.getComputedStyle(element)\n // prettier-ignore\n var elementCssText = 'box-sizing:' + elementStyle.boxSizing +\n ';border-left:' + elementStyle.borderLeftWidth + ' solid red' +\n ';border-right:' + elementStyle.borderRightWidth + ' solid red' +\n ';font-family:' + elementStyle.fontFamily +\n ';font-feature-settings:' + elementStyle.fontFeatureSettings +\n ';font-kerning:' + elementStyle.fontKerning +\n ';font-size:' + elementStyle.fontSize +\n ';font-stretch:' + elementStyle.fontStretch +\n ';font-style:' + elementStyle.fontStyle +\n ';font-variant:' + elementStyle.fontVariant +\n ';font-variant-caps:' + elementStyle.fontVariantCaps +\n ';font-variant-ligatures:' + elementStyle.fontVariantLigatures +\n ';font-variant-numeric:' + elementStyle.fontVariantNumeric +\n ';font-weight:' + elementStyle.fontWeight +\n ';letter-spacing:' + elementStyle.letterSpacing +\n ';margin-left:' + elementStyle.marginLeft +\n ';margin-right:' + elementStyle.marginRight +\n ';padding-left:' + elementStyle.paddingLeft +\n ';padding-right:' + elementStyle.paddingRight +\n ';text-indent:' + elementStyle.textIndent +\n ';text-transform:' + elementStyle.textTransform\n\n // Assigns an appropriate width to the given `element` based on its contents.\n function setWidth () {\n var string = element.value || element.getAttribute('placeholder') || ''\n // Check if the `ghostElement` exists. If no, create it.\n var ghostElement =\n document.getElementById(GHOST_ELEMENT_ID) || createGhostElement()\n // Copy all width-affecting styles to the `ghostElement`.\n ghostElement.style.cssText += elementCssText\n ghostElement.innerHTML = escapeSpecialCharacters(string)\n // Copy the width of `ghostElement` to `element`.\n var width = window.getComputedStyle(ghostElement).width\n element.style.width = width\n return width\n }\n\n element.addEventListener('input', setWidth)\n\n var width = setWidth()\n\n // Set `min-width` only if `options.minWidth` was set, and only if the initial\n // width is non-zero.\n if (options && options.minWidth && width !== '0px') {\n element.style.minWidth = width\n }\n\n // Return a function for unbinding the event listener and removing the `ghostElement`.\n return function () {\n element.removeEventListener('input', setWidth)\n var ghostElement = document.getElementById(GHOST_ELEMENT_ID)\n if (ghostElement) {\n ghostElement.parentNode.removeChild(ghostElement)\n }\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'src/components/cat-form-hint/cat-form-hint';\n@use 'utils/color';\n@use '_snippets/form-label';\n\n:host {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n line-height: 1.25rem;\n position: relative;\n}\n\n:host([hidden]) {\n display: none;\n}\n\nlabel {\n align-self: flex-start;\n\n &.hidden {\n @include cat-visually-hidden;\n }\n}\n\n.select-field,\n.select-container {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n flex: 1 1 auto;\n}\n\n.select-field.select-horizontal {\n flex-direction: row;\n gap: 1rem;\n}\n\n.select-wrapper {\n display: flex;\n align-items: flex-start;\n background: cat-token('color.ui.background.input');\n border-radius: cat-border-radius('m');\n box-shadow: inset 0 0 0 1px rgb(var(--border-color));\n transition: box-shadow cat-token('time.transition.s') linear;\n padding: 0.25rem;\n --border-color: #{cat-token('color.ui.border.dark', $wrap: false)};\n\n &:not(.select-disabled):hover {\n box-shadow:\n inset 0 0 0 1px rgb(var(--border-color)),\n 0 0 0 1px rgb(var(--border-color));\n }\n\n &:focus-within {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: -1px;\n }\n\n &.select-invalid {\n --border-color: #{cat-token('color.theme.danger.bg', 0.2, $wrap: false)};\n }\n\n /* stylelint-disable property-no-vendor-prefix */\n &:has(input:-webkit-autofill) {\n &,\n &:hover,\n &:focus {\n background-color: cat-token('color.ui.background.inputAutofill');\n }\n }\n /* stylelint-enable property-no-vendor-prefix */\n}\n\n:host(.cat-error) {\n .select-wrapper {\n box-shadow: 0 0 0 1px cat-token('color.theme.danger.bg');\n\n &:not(.input-disabled):hover {\n box-shadow: 0 0 0 2px cat-token('color.theme.danger.bg');\n }\n }\n}\n\n.select-disabled {\n background: cat-token('color.ui.background.muted');\n cursor: not-allowed;\n color: cat-token('color.ui.font.muted');\n pointer-events: none;\n}\n\n.select-wrapper-inner {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n gap: 0.25rem;\n min-width: 0;\n\n > cat-avatar {\n display: inline-block;\n padding-left: 0.5rem;\n\n & + .select-input {\n padding-left: 0.25rem;\n }\n }\n\n cat-avatar {\n --cat-avatar-size: 1.25rem;\n --cat-avatar-font-size: 0.5rem;\n }\n\n .select-multiple & {\n flex-wrap: wrap;\n }\n}\n\n.select-input {\n font: inherit;\n background: none;\n border: none;\n outline: none;\n padding: 0.375rem 0.5rem;\n flex: 1 1 auto;\n @include cat-ellipsis;\n\n &::placeholder {\n color: cat-token('color.ui.font.muted');\n opacity: 1;\n }\n\n .select-disabled & {\n cursor: inherit;\n }\n}\n\n.select-pills {\n display: contents;\n}\n\n.pill {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.25rem 0.5rem;\n background: cat-token('color.ui.background.muted');\n border-radius: cat-border-radius('s');\n white-space: nowrap;\n min-width: 0;\n\n > span {\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1 1 0%;\n }\n\n > cat-button {\n margin-right: -0.25rem;\n margin-left: -0.25rem;\n }\n}\n\n.select-btn {\n transition: transform cat-token('time.transition.s') linear;\n\n &::part(button) {\n outline: none;\n }\n}\n\ncat-spinner {\n padding: 0.375rem;\n}\n\n.icon-suffix {\n padding: 0.25rem;\n}\n\n.select-btn-open {\n transform: rotate(180deg);\n}\n\n.select-dropdown {\n position: fixed;\n right: 0;\n background: cat-token('color.ui.background.surface');\n display: none;\n overflow: auto;\n // -webkit-overflow-scrolling: touch;\n @include cat-elevation(4);\n border-radius: cat-border-radius('m');\n border: 1px solid cat-token('color.ui.border.default');\n z-index: cat-z-index('dropdown');\n\n /* Avoid layout interference */\n width: max-content;\n top: 0;\n left: 0;\n}\n\n.select-options-wrapper {\n max-height: 16rem;\n width: 100%;\n}\n\n.select-empty {\n margin: 1rem 0;\n padding: 0 1.25rem;\n}\n\n.select-options {\n list-style-type: none;\n margin: 0;\n padding: 0.5rem 0;\n\n cat-checkbox,\n .select-option-single {\n margin: 0;\n padding: 0.5rem 1rem;\n }\n}\n\n.select-option-inner {\n display: flex;\n gap: 0.5rem;\n\n cat-avatar {\n --cat-avatar-size: 1.25rem;\n --cat-avatar-font-size: 0.5rem;\n }\n}\n\n.select-option-text {\n flex: 1 1 0%;\n min-width: 0;\n}\n\n.select-option-single {\n cursor: pointer;\n}\n\n.select-input-transparent-caret {\n caret-color: transparent;\n}\n\n.select-option-empty,\n.select-option-loading {\n padding: 0.5rem 1rem;\n}\n\n.select-option:hover {\n background-color: cat-token('color.theme.secondary.bg', 0.05);\n}\n\n.select-option-active {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: -2px;\n}\n\n.select-option-label {\n @include cat-ellipsis(2);\n @include cat-break-word;\n}\n\n.select-option-description {\n @include cat-ellipsis(2);\n color: cat-token('color.ui.font.muted');\n}\n","import { autoUpdate, computePosition, flip, offset, Placement } from '@floating-ui/dom';\nimport { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from '@stencil/core';\nimport autosizeInput from 'autosize-input';\nimport {\n catchError,\n debounce,\n distinctUntilChanged,\n filter,\n first,\n Observable,\n of,\n scan,\n startWith,\n Subject,\n Subscription,\n switchMap,\n takeWhile,\n tap,\n timer\n} from 'rxjs';\nimport { coerceBoolean, coerceNumber } from '../../utils/coerce';\nimport { CatFormHint, ErrorMap } from '../cat-form-hint/cat-form-hint';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\n\nexport interface Item {\n id: string;\n}\n\nexport interface Page<T> {\n content: T[];\n last: boolean;\n totalElements?: number;\n}\n\nexport interface RenderInfo {\n label: string;\n description?: string;\n avatar?: {\n src?: string;\n round?: boolean;\n initials?: string;\n icon?: string;\n };\n}\n\n/**\n * @property customId - Change the ID of item for the given one.\n * @property resolve - Resolves the value of the select.\n * @property retrieve - Retrieves the options of the select.\n * @property render - Renders the items of the select.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface CatSelectConnector<T extends Item = any> {\n customId?: (item: T) => string;\n resolve: (ids: string[]) => Observable<T[]>;\n retrieve: (term: string, page: number) => Observable<Page<T>>;\n render: (item: T) => RenderInfo;\n}\n\nexport interface CatSelectState {\n term: string;\n isOpen: boolean;\n isLoading: boolean;\n isFirstLoading: boolean;\n isResolving: boolean;\n options: { item: Item; render: RenderInfo }[];\n tempSelection: { item: Item; render: RenderInfo }[];\n selection: { item: Item; render: RenderInfo }[];\n activeOptionIndex: number;\n activeSelectionIndex: number;\n totalElements?: number;\n}\n\nexport interface CatSelectMultipleTaggingValue {\n ids: string[];\n tags: string[];\n}\n\nexport interface CatSelectTaggingValue {\n id: string;\n tag: string;\n}\n\nconst INIT_STATE: CatSelectState = {\n term: '',\n isOpen: false,\n isLoading: false,\n isFirstLoading: true,\n isResolving: false,\n options: [],\n selection: [],\n tempSelection: [],\n activeOptionIndex: -1,\n activeSelectionIndex: -1\n};\n\nlet nextUniqueId = 0;\nlet nextTagUniqueId = 0;\n\n/**\n * Select lets user choose one option from an options' menu.\n * Consider using select when you have 6 or more options. Select component supports any content type.\n *\n * @slot hint - Optional hint element to be displayed with the select.\n * @slot label - The slotted label. If both the label property and the label slot are present,\n * only the label slot will be displayed.\n * @part label - The native label element.\n * @part input - The native input element.\n */\n@Component({\n tag: 'cat-select',\n styleUrl: 'cat-select.scss',\n shadow: {\n delegatesFocus: true\n }\n})\nexport class CatSelect {\n private static readonly SKELETON_COUNT = 4;\n private static readonly DROPDOWN_OFFSET = 4;\n private readonly _id = `cat-input-${nextUniqueId++}`;\n private get id() {\n return this.identifier || this._id;\n }\n\n private dropdown?: HTMLElement;\n private trigger?: HTMLElement;\n private input?: HTMLInputElement;\n private errorMapSrc?: ErrorMap | true;\n\n private subscription?: Subscription;\n private term$: Subject<string> = new Subject();\n private more$: Subject<void> = new Subject();\n private valueChangedBySelection = false;\n private cleanupFloatingUi?: () => void;\n\n @Element() hostElement!: HTMLElement;\n\n @State() connector?: CatSelectConnector;\n\n @State() state: CatSelectState = INIT_STATE;\n\n @State() hasSlottedLabel = false;\n\n @State() hasSlottedHint = false;\n\n @State() errorMap?: ErrorMap | true;\n\n /**\n * Whether the label need a marker to shown if the select is required or optional.\n */\n @Prop() requiredMarker?: 'none' | 'required' | 'optional' | 'none!' | 'optional!' | 'required!' = 'optional';\n\n /**\n * Whether the label is on top or left.\n */\n @Prop() horizontal?: boolean;\n\n /**\n * If the horizontal value is not provided, this fallback value is used. Can be set by form-group.\n * @internal\n */\n @Prop() fallbackHorizontal?: boolean;\n\n /**\n * Enable multiple selection.\n */\n @Prop() multiple = false;\n\n /**\n * The debounce time for the search.\n */\n @Prop() debounce = 250;\n\n /**\n * The placement of the select.\n */\n @Prop() placement: Placement = 'bottom-start';\n\n /**\n * The value of the select. <br />\n * <br />\n * The value of the select depends on whether it is allowed to choose a single item or several items. <br />\n * When only one item can be selected, the value is the id of the item, in case several items can be selected, the value is an array of ids of the selected items. <br />\n * <br />\n * In case the user can add new items to the select (tags activated), the value in the single select is an object (CatSelectTaggingValue) with the id of the item or the name of the created item,\n * in the case of multiple select, it is an object (CatSelectMultipleTaggingValue) with the array of the ids of the items selected and the array of the names of the items created\n */\n @Prop({ mutable: true }) value?: string | string[] | CatSelectTaggingValue | CatSelectMultipleTaggingValue;\n\n /**\n * Whether the select is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * The placeholder text to display within the select.\n */\n @Prop() placeholder?: string;\n\n /**\n * Optional hint text(s) to be displayed with the select.\n */\n @Prop() hint?: string | string[];\n\n /**\n * A unique identifier for the input.\n */\n @Prop() identifier?: string;\n\n /**\n * The label for the select.\n */\n @Prop() label = '';\n\n /**\n * The name of the form control. Submitted with the form as part of a name/value pair.\n */\n @Prop() name?: string;\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * A value is required or must be checked for the form to be submittable.\n */\n @Prop() required = false;\n\n /**\n * Whether the select should show a clear button.\n */\n @Prop() clearable = false;\n\n /**\n * Whether the select should add new items.\n */\n @Prop() tags = false;\n\n /**\n * Optional hint text to be displayed on the new item to be added.\n */\n @Prop() tagHint?: string;\n\n /**\n * The text to display in the dropdown if no results are found.\n */\n @Prop() noItems?: string;\n\n /**\n * The validation errors for this input. Will render a hint under the input\n * with the translated error message(s) `error.${key}`. If an object is\n * passed, the keys will be used as error keys and the values translation\n * parameters.\n * If the value is `true`, the input will be marked as invalid without any\n * hints under the input.\n */\n @Prop() errors?: boolean | string[] | ErrorMap;\n\n /**\n * Fine-grained control over when the errors are shown. Can be `false` to\n * never show errors, `true` to show errors on blur, or a number to show\n * errors change with the given delay in milliseconds or immediately on blur.\n */\n @Prop() errorUpdate: boolean | number = 0;\n\n /**\n * Attributes that will be added to the native HTML input element.\n */\n @Prop() nativeAttributes?: { [key: string]: string };\n\n /**\n * A unique identifier for the underlying native element that is used for\n * testing purposes. The attribute is added as `data-test` attribute and acts\n * as a shorthand for `nativeAttributes={ 'data-test': 'test-Id' }`.\n */\n @Prop() testId?: string;\n\n @Watch('connector')\n onConnectorChanged(connector: CatSelectConnector) {\n this.reset(connector);\n this.resolve();\n }\n\n @Watch('value')\n onValueChanged() {\n !this.valueChangedBySelection ? this.resolve() : (this.valueChangedBySelection = false);\n }\n\n @Watch('errors')\n onErrorsChanged(newValue?: boolean | string[] | ErrorMap, _oldValue?: unknown, update: boolean = true) {\n if (!coerceBoolean(this.errorUpdate)) {\n this.errorMap = undefined;\n } else {\n this.errorMapSrc = Array.isArray(newValue)\n ? (newValue as string[]).reduce((acc, err) => ({ ...acc, [err]: undefined }), {})\n : newValue || undefined;\n if (update) {\n this.showErrorsIfTimeout() || this.showErrorsIfNoFocus();\n }\n }\n }\n\n @Watch('state')\n onStateChanged(newState: CatSelectState, oldState: CatSelectState) {\n const changed = (key: keyof CatSelectState) => newState[key] !== oldState[key];\n if (changed('isOpen')) {\n this.update();\n }\n if (changed('activeOptionIndex') && this.state.activeOptionIndex >= 0) {\n this.dropdown\n ?.querySelector(`#select-${this.id}-option-${this.state.activeOptionIndex}`)\n ?.scrollIntoView({ block: 'nearest' });\n }\n\n if (changed('selection')) {\n let newValue;\n if (!this.multiple && this.state.selection.length) {\n this.hide();\n }\n const idsSelected = this.state.selection.map(item => item.item.id);\n if (!this.tags) {\n if (this.multiple) {\n newValue = idsSelected;\n } else {\n newValue = idsSelected.length ? idsSelected[0] : '';\n }\n } else {\n const ids = idsSelected.filter(id => !id.startsWith(`select-${this.id}-tag`));\n const tags = this.state.selection\n .filter(item => item.item.id.startsWith(`select-${this.id}-tag`))\n .map(item => item.render.label);\n if (this.multiple) {\n newValue = { ids, tags };\n } else {\n newValue = { id: ids.length ? ids[0] : '', tag: tags.length ? tags[0] : '' };\n }\n }\n\n if (!oldState.isResolving) {\n this.valueChangedBySelection = true;\n this.value = newValue;\n this.catChange.emit();\n }\n this.showErrorsIfTimeout();\n }\n }\n\n /**\n * Emitted when the select dropdown is opened.\n */\n @Event() catOpen!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the select dropdown is closed.\n */\n @Event() catClose!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter<InputEvent>;\n\n /**\n * Emitted when the select loses the focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentDidLoad(): void {\n if (this.input) {\n autosizeInput(this.input, { minWidth: true });\n }\n }\n\n componentWillLoad(): void {\n this.onErrorsChanged(this.errors, undefined, false);\n }\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n this.hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n }\n\n @Listen('blur')\n onBlur(event: FocusEvent): void {\n if (!this.multiple && this.state.activeOptionIndex >= 0) {\n if (this.tags && this.state.options[this.state.activeOptionIndex].item.id === `select-${this.id}-option-tag`) {\n this.createTag(this.state.term);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n }\n this.hide();\n // Conditionally remove selection if the option was not manually selected through click or enter key press\n if (!this.multiple && (!this.tags || !this.state.selection?.length)) {\n if (this.state.tempSelection?.length) {\n this.patchState({\n activeSelectionIndex: -1,\n selection: this.state.tempSelection,\n tempSelection: [],\n options: [],\n term: this.state.tempSelection[0].render.label\n });\n } else if (!this.state.selection?.length) {\n this.patchState({\n activeSelectionIndex: -1,\n selection: [],\n tempSelection: [],\n options: [],\n term: ''\n });\n }\n } else {\n this.patchState({ activeSelectionIndex: -1 });\n }\n\n this.catBlur.emit(event);\n if (coerceBoolean(this.errorUpdate)) {\n this.showErrors();\n }\n }\n\n @Listen('keydown')\n onKeyDown(event: KeyboardEvent): void {\n const isInputFocused = this.hostElement.shadowRoot?.activeElement === this.input;\n\n if (['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n this.onArrowKeyDown(event);\n } else if (['Enter', ' '].includes(event.key) && isInputFocused) {\n if (\n this.tags &&\n this.state.activeOptionIndex === 0 &&\n this.state.options[0].item.id === `select-${this.id}-option-tag`\n ) {\n event.preventDefault();\n if (this.multiple) {\n this.toggleTag(this.state.options[0]);\n } else {\n this.createTag(this.state.options[0].render.label);\n }\n } else if (this.state.activeOptionIndex >= 0) {\n event.preventDefault();\n if (this.multiple) {\n this.toggle(this.state.options[this.state.activeOptionIndex]);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n } else if (this.tags && event.key === 'Enter' && this.state.activeOptionIndex < 0) {\n this.createTag(this.state.term);\n }\n } else if (event.key === 'Escape') {\n if (this.hide()) {\n event.stopPropagation();\n }\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n this.input?.focus();\n if (!this.multiple || !this.state.term || (this.input?.selectionStart === 0 && event.key === 'Backspace')) {\n if (this.state.activeSelectionIndex >= 0) {\n this.deselect(this.state.selection[this.state.activeSelectionIndex].item.id);\n } else if (this.state.selection.length) {\n const selectionClone = [...this.state.selection];\n selectionClone.pop();\n this.patchState({\n selection: selectionClone,\n tempSelection: this.state.term ? [...this.state.selection] : []\n });\n }\n }\n } else if (event.key === 'Tab') {\n this.trigger?.setAttribute('tabindex', '-1');\n if (this.multiple) {\n this.patchState({ activeSelectionIndex: -1, activeOptionIndex: -1 });\n } else if (this.state.activeOptionIndex >= 0) {\n if (this.tags && this.state.options[this.state.activeOptionIndex].item.id === `select-${this.id}-option-tag`) {\n this.createTag(this.state.term);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n }\n } else if (event.key.length === 1) {\n this.input?.focus();\n }\n }\n\n @Listen('keyup')\n onKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Tab' && !event.shiftKey) {\n this.hostElement.shadowRoot?.activeElement === this.trigger && this.input?.focus();\n if (this.hostElement.shadowRoot?.activeElement === this.input) {\n this.show();\n }\n } else if (event.key === 'Tab' && event.shiftKey) {\n const clearButton = this.trigger?.querySelector(`#select-clear-btn-${this.id}`);\n\n if (clearButton) {\n this.hostElement.shadowRoot?.activeElement === clearButton && this.show();\n } else {\n this.show();\n }\n }\n }\n\n /**\n * Programmatically move focus to the input. Use this method instead of\n * `input.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.input?.focus(options);\n }\n\n /**\n * Programmatically remove focus from the input. Use this method instead of\n * `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.input?.blur();\n }\n\n /**\n * Clear the input.\n */\n @Method()\n async clear(): Promise<void> {\n this.clearInput();\n }\n\n /**\n * Connect the functions of the select\n *\n * @param connector - The {@link CatSelectConnector} of the select.\n */\n @Method()\n async connect(connector: CatSelectConnector): Promise<void> {\n this.connector = connector;\n let number$: Observable<number>;\n this.subscription?.unsubscribe();\n this.subscription = this.term$\n .asObservable()\n .pipe(\n debounce(term => (term ? timer(this.debounce) : of(0))),\n distinctUntilChanged(),\n tap(\n () =>\n (number$ = this.more$.pipe(\n filter(() => !this.state.isLoading),\n scan(n => n + 1, 0),\n startWith(0)\n ))\n ),\n switchMap(term =>\n number$.pipe(\n tap(() => this.patchState({ isLoading: true })),\n switchMap(number => connector.retrieve(term, number)),\n tap(page =>\n this.patchState({ isLoading: false, totalElements: page.totalElements, isFirstLoading: false })\n ),\n takeWhile(page => !page.last, true),\n scan((items, page) => [...items, ...page.content], [] as Item[])\n )\n )\n )\n .subscribe(items => {\n const options = this.toSelectItems(connector, items);\n\n if (\n this.tags &&\n this.state.term.trim().length &&\n !options.find(value1 => value1.render.label.toLowerCase() === this.state.term.toLowerCase())\n ) {\n let label;\n if (this.isTagSelected(this.state.term)) {\n label = this.state.selection.find(item => item.render.label.toLowerCase() === this.state.term.toLowerCase())\n ?.render.label;\n }\n options.unshift({\n item: { id: `select-${this.id}-option-tag` },\n render: { label: label ? label : this.state.term }\n });\n }\n this.patchState({\n options\n });\n });\n }\n\n render() {\n this.hostElement.tabIndex = Number(this.hostElement.getAttribute('tabindex')) || 0;\n return (\n <Host>\n <div\n class={{\n 'select-field': true,\n 'select-horizontal': this.horizontal ?? this.fallbackHorizontal ?? false,\n 'select-multiple': this.multiple\n }}\n >\n <div class={{ 'label-container': true, hidden: this.labelHidden }}>\n {(this.hasSlottedLabel || this.label) && (\n <label htmlFor={`select-${this.id}-input`} part=\"label\">\n <span class=\"label-wrapper\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n <div class=\"label-metadata\">\n {!this.required && (this.requiredMarker ?? 'optional').startsWith('optional') && (\n <span class=\"label-optional\" aria-hidden=\"true\">\n ({i18n.t('input.optional')})\n </span>\n )}\n {this.required && this.requiredMarker?.startsWith('required') && (\n <span class=\"label-optional\" aria-hidden=\"true\">\n ({i18n.t('input.required')})\n </span>\n )}\n </div>\n </span>\n </label>\n )}\n </div>\n\n <div class=\"select-container\">\n <div\n class={{ 'select-wrapper': true, 'select-disabled': this.disabled, 'select-invalid': this.invalid }}\n ref={el => (this.trigger = el)}\n id={this.id}\n role=\"combobox\"\n aria-expanded={this.state.isOpen || this.isPillboxActive()}\n aria-controls={this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`}\n aria-required={this.required ? 'true' : false}\n aria-activedescendant={this.activeDescendant}\n onClick={e => this.onClick(e)}\n >\n <div class=\"select-wrapper-inner\">\n {this.multiple && this.state.selection.length ? (\n <div\n id={`select-pillbox-${this.id}`}\n role=\"listbox\"\n aria-orientation=\"horizontal\"\n class=\"select-pills\"\n >\n {this.state.selection.map((item, i) => (\n <span\n class={{\n pill: true,\n 'select-no-open': true,\n 'select-option-active': this.state.activeSelectionIndex === i\n }}\n role=\"option\"\n aria-selected=\"true\"\n id={`select-${this.id}-selection-${i}`}\n >\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n icon={item.render.avatar.icon}\n initials={item.render.avatar.initials ?? ''}\n ></cat-avatar>\n ) : null}\n <span>{item.render.label}</span>\n {!this.disabled && (\n <cat-button\n size=\"xs\"\n variant=\"text\"\n icon=\"$cat:select-clear\"\n iconOnly\n a11yLabel={i18n.t('select.deselect')}\n onClick={() => this.deselect(item.item.id)}\n tabIndex={-1}\n data-dropdown-no-close\n ></cat-button>\n )}\n </span>\n ))}\n </div>\n ) : this.state.selection.length && this.state.selection[0].render.avatar ? (\n <cat-avatar\n label={this.state.selection[0].render.label}\n round={this.state.selection[0].render.avatar.round}\n src={this.state.selection[0].render.avatar.src}\n icon={this.state.selection[0].render.avatar.icon}\n initials={this.state.selection[0].render.avatar.initials ?? ''}\n ></cat-avatar>\n ) : null}\n <input\n data-test={this.testId}\n {...this.nativeAttributes}\n part=\"input\"\n id={`select-${this.id}-input`}\n class=\"select-input\"\n role=\"combobox\"\n ref={el => (this.input = el)}\n aria-controls={this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`}\n aria-activedescendant={this.activeDescendant}\n aria-invalid={this.invalid ? 'true' : undefined}\n aria-describedby={this.hasHint ? this.id + '-hint' : undefined}\n aria-autocomplete=\"list\"\n onInput={this.onInput.bind(this)}\n value={!this.multiple ? this.state.term : undefined}\n placeholder={this.placeholder}\n disabled={this.disabled || this.state.isResolving}\n ></input>\n </div>\n {this.state.isResolving && <cat-spinner></cat-spinner>}\n {this.invalid && (\n <cat-icon icon=\"$cat:input-error\" class=\"icon-suffix cat-text-danger\" size=\"l\"></cat-icon>\n )}\n {(this.state.selection.length || this.state.term.length) &&\n !this.disabled &&\n !this.state.isResolving &&\n this.clearable ? (\n <cat-button\n id={`select-clear-btn-${this.id}`}\n iconOnly\n icon=\"$cat:input-close\"\n variant=\"text\"\n size=\"s\"\n a11yLabel={i18n.t('input.clear')}\n onCatClick={() => this.clearInput()}\n data-dropdown-no-close\n ></cat-button>\n ) : null}\n {!this.state.isResolving && (\n <cat-button\n iconOnly\n icon=\"$cat:select-open\"\n class={{ 'select-btn': true, 'select-btn-open': this.state.isOpen }}\n variant=\"text\"\n size=\"s\"\n a11yLabel={this.state.isOpen ? i18n.t('select.close') : i18n.t('select.open')}\n aria-controls={`select-listbox-${this.id}`}\n aria-expanded={this.state.isOpen}\n tabIndex={-1}\n disabled={this.disabled || this.state.isResolving}\n data-dropdown-no-close\n ></cat-button>\n )}\n </div>\n {this.hasHint && (\n <CatFormHint\n id={this.id}\n hint={this.hint}\n slottedHint={this.hasSlottedHint && <slot name=\"hint\"></slot>}\n errorMap={this.errorMap}\n />\n )}\n </div>\n </div>\n\n <div\n class=\"select-dropdown\"\n ref={el => (this.dropdown = el)}\n style={{ display: this.state.isOpen ? 'block' : undefined }}\n >\n {this.state.isOpen && (\n <cat-scrollable\n class=\"select-options-wrapper\"\n scrolledBuffer={56}\n noOverflowX\n noOverscroll\n noScrolledInit\n onScrolledBottom={() => this.more$.next()}\n >\n <ul\n class=\"select-options\"\n role=\"listbox\"\n aria-multiselectable={this.multiple}\n aria-setsize={this.state.totalElements}\n id={`select-listbox-${this.id}`}\n >\n {this.optionsList}\n {this.state.isFirstLoading\n ? Array.from(Array(CatSelect.SKELETON_COUNT)).map(() => (\n <li class=\"select-option-loading\">\n <cat-skeleton variant=\"body\" lines={1}></cat-skeleton>\n <cat-skeleton variant=\"body\" lines={1}></cat-skeleton>\n </li>\n ))\n : !this.state.options.length &&\n !this.tags && (\n <li class=\"select-option-empty\">{this.noItems ? this.noItems : i18n.t('select.empty')}</li>\n )}\n </ul>\n </cat-scrollable>\n )}\n </div>\n </Host>\n );\n }\n\n private get hasHint() {\n return !!this.hint || !!this.hasSlottedHint || this.invalid;\n }\n\n private get invalid() {\n return this.errorMap === true || !!Object.keys(this.errorMap || {}).length;\n }\n\n private get optionsList() {\n return this.state.options.map((item, i) => {\n const isTagOption = this.tags && item.item.id === `select-${this.id}-option-tag`;\n\n const isOptionSelected = this.isSelected(item.item.id) || (this.tags && this.isTagSelected(item.render.label));\n\n const getLabel = () => {\n if (isTagOption) {\n return item.render.label + this.tagTextHelp;\n }\n return item.render.label;\n };\n\n return (\n <li\n role=\"option\"\n class=\"select-option\"\n id={`select-${this.id}-option-${i}`}\n aria-selected={isOptionSelected ? 'true' : 'false'}\n >\n {this.multiple ? (\n <cat-checkbox\n class={{ 'select-option-active': this.state.activeOptionIndex === i }}\n checked={isOptionSelected}\n tabIndex={-1}\n labelLeft\n onFocus={() => this.input?.focus()}\n onCatChange={e => {\n !isTagOption ? this.toggle(item) : this.toggleTag(item);\n e.stopPropagation();\n }}\n >\n <span slot=\"label\" class=\"select-option-inner\">\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n icon={item.render.avatar.icon}\n initials={item.render.avatar.initials ?? ''}\n ></cat-avatar>\n ) : null}\n <span class=\"select-option-text\">\n <span class=\"select-option-label\">{getLabel()}</span>\n <span class=\"select-option-description\">{item.render.description}</span>\n </span>\n </span>\n </cat-checkbox>\n ) : (\n <div\n class={{\n 'select-option-inner': true,\n 'select-option-single': true,\n 'select-option-active': this.state.activeOptionIndex === i\n }}\n onFocus={() => this.input?.focus()}\n onClick={() => (isTagOption ? this.createTag(item.render.label) : this.select(item))}\n tabIndex={-1}\n >\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n icon={item.render.avatar.icon}\n initials={item.render.avatar.initials ?? ''}\n ></cat-avatar>\n ) : null}\n <span class=\"select-option-text\">\n <span class=\"select-option-label\">{getLabel()}</span>\n <span class=\"select-option-description\">{item.render.description}</span>\n </span>\n </div>\n )}\n </li>\n );\n });\n }\n\n private resolve() {\n const connector = this.connector;\n if (!connector) {\n return;\n }\n this.patchState({ isResolving: true });\n\n const ids = this.initIds();\n let tags: string[];\n\n if (this.tags) {\n tags = this.initTags();\n }\n\n const data$ = ids.length ? connector.resolve(ids).pipe(first()) : of([]);\n data$.pipe(catchError(() => of([]))).subscribe(items => {\n const selection = this.toSelectItems(connector, items);\n if (this.tags) {\n tags\n .filter(tag => !this.isTagSelected(tag, selection))\n .forEach((tag, index) => {\n const item = { id: `select-${this.id}-tag-${index}`, name: tag };\n selection.push({ item, render: { label: item.name } });\n });\n }\n const term = !this.multiple && selection.length ? selection[0].render.label : '';\n this.patchState({ isResolving: false, selection, term, activeOptionIndex: -1 });\n this.term$.next(term);\n this.input && (this.input.value = term);\n });\n }\n\n private toSelectItems(connector: CatSelectConnector, items: Item[]) {\n return items.map(item => ({\n item: { ...item, id: connector.customId ? connector.customId(item) : item.id },\n render: connector.render(item)\n }));\n }\n\n private show() {\n if (!this.state.isOpen && this.connector) {\n if (this.trigger && this.dropdown) {\n this.cleanupFloatingUi = autoUpdate(this.trigger, this.dropdown, () => this.update());\n }\n // reconnect to reset the connection, i.e. the pagination\n this.connect(this.connector);\n this.patchState({ isOpen: true, isFirstLoading: true, options: [] });\n this.catOpen.emit();\n this.term$.next('');\n this.input?.classList.remove('select-input-transparent-caret');\n }\n }\n\n private hide() {\n if (this.state.isOpen) {\n this.patchState({ isOpen: false, activeOptionIndex: -1 });\n this.cleanupFloatingUi?.();\n this.cleanupFloatingUi = undefined;\n this.catClose.emit();\n return true;\n }\n return false;\n }\n\n private search(term: string) {\n this.patchState({ term, activeOptionIndex: -1, activeSelectionIndex: -1 });\n this.term$.next(term);\n }\n\n private isSelected(id: string) {\n return this.state.selection.findIndex(s => s.item.id === id) >= 0;\n }\n\n private select(item: { item: Item; render: RenderInfo }) {\n if (!this.isSelected(item.item.id)) {\n let newSelection;\n if (this.multiple) {\n newSelection = [...this.state.selection, item];\n } else {\n newSelection = [item];\n this.patchState({ term: item.render.label, activeOptionIndex: -1, activeSelectionIndex: -1 });\n }\n this.patchState({ selection: newSelection, tempSelection: [] });\n\n if (this.multiple && this.state.term.trim() && this.input) {\n this.patchState({ term: '', activeOptionIndex: -1 });\n this.term$.next('');\n this.input.value = '';\n }\n }\n this.setTransparentCaret();\n }\n\n private deselect(id: string) {\n if (this.isSelected(id)) {\n this.patchState({\n selection: this.state.selection.filter(item => item.item.id !== id),\n activeSelectionIndex: -1\n });\n }\n }\n\n private toggle(item: { item: Item; render: RenderInfo }) {\n this.isSelected(item.item.id)\n ? this.deselect(item.item.id)\n : this.tags && this.isTagSelected(item.render.label)\n ? this.removeTag(item.render.label)\n : this.select(item);\n }\n\n private clearInput() {\n if (this.input && this.state.term) {\n this.patchState({ selection: [], term: '', activeOptionIndex: -1, tempSelection: [] });\n this.term$.next('');\n this.input.value = '';\n } else {\n this.patchState({ selection: [], tempSelection: [] });\n }\n }\n\n private reset(connector?: CatSelectConnector) {\n this.connector = connector ?? this.connector;\n this.subscription?.unsubscribe();\n this.subscription = undefined;\n this.state = INIT_STATE;\n }\n\n private onClick(event: MouseEvent) {\n if (this.disabled) {\n return;\n }\n const elem = event.target as Element;\n this.trigger?.setAttribute('tabindex', '0');\n this.input?.focus();\n if (\n elem === this.trigger ||\n elem === this.input ||\n elem.classList.contains('select-btn') ||\n elem.nodeName === 'SPAN'\n ) {\n this.state.isOpen ? this.hide() : this.show();\n }\n }\n\n private onInput() {\n this.search(this.input?.value.trim() || '');\n if (!this.multiple) {\n if (this.state.selection.length) {\n const selectionClone = [...this.state.selection];\n selectionClone.pop();\n this.patchState({ selection: selectionClone, tempSelection: [...this.state.selection] });\n }\n if (!this.required && !this.input?.value.trim()) {\n this.patchState({ tempSelection: [] });\n }\n }\n this.show();\n }\n\n private update() {\n if (this.trigger && this.dropdown) {\n computePosition(this.trigger, this.dropdown, {\n strategy: 'fixed',\n placement: this.placement,\n middleware: [offset(CatSelect.DROPDOWN_OFFSET), flip()]\n }).then(({ x, y, placement }) => {\n if (this.dropdown) {\n this.dropdown.dataset.placement = placement;\n Object.assign(this.dropdown.style, {\n width: `${this.trigger?.clientWidth}px`,\n left: `${x}px`,\n top: `${y}px`\n });\n }\n });\n }\n }\n\n private patchState(update: Partial<CatSelectState>) {\n this.state = { ...this.state, ...update };\n }\n\n private isPillboxActive() {\n return this.state.activeSelectionIndex >= 0;\n }\n\n private get activeDescendant() {\n let activeDescendant = undefined;\n if (this.state.activeOptionIndex >= 0) {\n activeDescendant = `select-${this.id}-option-${this.state.activeOptionIndex}`;\n } else if (this.state.activeSelectionIndex >= 0) {\n activeDescendant = `select-${this.id}-selection-${this.state.activeSelectionIndex}`;\n }\n return activeDescendant;\n }\n\n private onArrowKeyDown(event: KeyboardEvent) {\n let preventDefault = false;\n this.input?.focus();\n\n switch (event.key) {\n case 'ArrowDown':\n preventDefault = true;\n this.state.isOpen\n ? this.patchState({\n activeOptionIndex: Math.min(this.state.activeOptionIndex + 1, this.state.options.length - 1),\n activeSelectionIndex: -1\n })\n : this.show();\n break;\n case 'ArrowUp':\n preventDefault = true;\n this.state.activeOptionIndex >= 0\n ? this.patchState({\n activeOptionIndex: Math.max(this.state.activeOptionIndex - 1, -1),\n activeSelectionIndex: -1\n })\n : this.hide();\n break;\n case 'ArrowLeft':\n if (this.input?.selectionStart === 0) {\n preventDefault = true;\n let index;\n this.state.activeSelectionIndex > 0\n ? (index = Math.max(this.state.activeSelectionIndex - 1, -1))\n : (index = this.state.selection.length - 1);\n this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });\n }\n break;\n case 'ArrowRight':\n if (this.state.activeSelectionIndex >= 0) {\n preventDefault = true;\n let index = -1;\n if (this.state.activeSelectionIndex < this.state.selection.length - 1) {\n index = Math.min(this.state.activeSelectionIndex + 1, this.state.selection.length - 1);\n } else if (!this.state.term) {\n index = 0;\n }\n this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });\n }\n }\n\n if (preventDefault) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private get tagTextHelp() {\n return this.tagHint && !this.isTagSelected(this.state.term) ? ' (' + this.tagHint + ')' : '';\n }\n\n private isTagSelected(term: string, selection: { item: Item; render: RenderInfo }[] = this.state.selection) {\n return selection.findIndex(item => item.render.label.toLowerCase() === term.toLowerCase()) >= 0;\n }\n\n private createTag(term: string) {\n if (term.trim().length && !this.isTagSelected(term)) {\n const value = this.value as CatSelectMultipleTaggingValue;\n const tags = value?.tags;\n const tag = { id: `select-${this.id}-tag-${tags?.length ? tags?.length + nextTagUniqueId++ : 0}`, name: term };\n this.select({ item: tag, render: { label: tag.name } });\n }\n this.setTransparentCaret();\n }\n\n private removeTag(label: string) {\n if (this.isTagSelected(label)) {\n const item = this.state.selection.find(item => item.render.label.toLowerCase() === label.toLowerCase());\n item && this.deselect(item.item.id);\n }\n }\n\n private toggleTag(item: { item: Item; render: RenderInfo }) {\n this.isTagSelected(item.render.label) ? this.removeTag(item.render.label) : this.createTag(item.render.label);\n }\n\n private initIds() {\n let ids: string[] = [];\n if (this.value) {\n if (!this.tags) {\n if (this.multiple) {\n ids = this.value as string[];\n } else {\n ids = [this.value as string];\n }\n } else {\n if (this.multiple) {\n const value = this.value as CatSelectMultipleTaggingValue;\n ids = value.ids ? value.ids : [];\n } else {\n const value = this.value as CatSelectTaggingValue;\n ids = value.id ? [value.id] : [];\n }\n }\n }\n return ids;\n }\n\n private initTags() {\n let tags: string[] = [];\n if (this.value) {\n if (this.multiple) {\n const value = this.value as CatSelectMultipleTaggingValue;\n tags = value.tags ? value.tags : [];\n } else {\n const value = this.value as CatSelectTaggingValue;\n tags = value.tag ? [value.tag] : [];\n }\n }\n return tags;\n }\n\n private setTransparentCaret() {\n if (!this.multiple) {\n this.hide();\n this.input?.classList.add('select-input-transparent-caret');\n }\n }\n\n private showErrors() {\n this.errorMap = this.errorMapSrc;\n }\n\n private errorUpdateTimeoutId?: number;\n private showErrorsIfTimeout() {\n const errorUpdate = coerceNumber(this.errorUpdate, null);\n if (errorUpdate !== null) {\n typeof this.errorUpdateTimeoutId === 'number' && window.clearTimeout(this.errorUpdateTimeoutId);\n this.errorUpdateTimeoutId = window.setTimeout(() => this.showErrors(), errorUpdate);\n return true;\n }\n return false;\n }\n\n private showErrorsIfNoFocus() {\n const hasFocus = document.activeElement === this.hostElement || document.activeElement === this.input;\n if (!hasFocus) {\n this.showErrors();\n }\n }\n}\n"],"version":3}
1
+ {"file":"cat-select2.js","mappings":"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","names":["autosizeInput","__stencil_proxyCustomElement","Subject","debounce","timer","of","distinctUntilChanged","tap","filter","scan","startWith","switchMap","takeWhile","i18n","first","catchError"],"sources":["../node_modules/.pnpm/autosize-input@1.0.2/node_modules/autosize-input/index.js","src/components/cat-select/cat-select.scss?tag=cat-select&encapsulation=shadow","src/components/cat-select/cat-select.tsx"],"sourcesContent":["var GHOST_ELEMENT_ID = '__autosizeInputGhost'\n\nvar characterEntities = {\n ' ': 'nbsp',\n '<': 'lt',\n '>': 'gt'\n}\nfunction mapSpecialCharacterToCharacterEntity (specialCharacter) {\n return '&' + characterEntities[specialCharacter] + ';'\n}\nfunction escapeSpecialCharacters (string) {\n return string.replace(/\\s|<|>/g, mapSpecialCharacterToCharacterEntity)\n}\n\n// Create `ghostElement`, with inline styles to hide it and ensure that the text is all\n// on a single line.\nfunction createGhostElement () {\n var ghostElement = document.createElement('div')\n ghostElement.id = GHOST_ELEMENT_ID\n ghostElement.style.cssText =\n 'display:inline-block;height:0;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:nowrap;'\n document.body.appendChild(ghostElement)\n return ghostElement\n}\n\nmodule.exports = function (element, options) {\n var elementStyle = window.getComputedStyle(element)\n // prettier-ignore\n var elementCssText = 'box-sizing:' + elementStyle.boxSizing +\n ';border-left:' + elementStyle.borderLeftWidth + ' solid red' +\n ';border-right:' + elementStyle.borderRightWidth + ' solid red' +\n ';font-family:' + elementStyle.fontFamily +\n ';font-feature-settings:' + elementStyle.fontFeatureSettings +\n ';font-kerning:' + elementStyle.fontKerning +\n ';font-size:' + elementStyle.fontSize +\n ';font-stretch:' + elementStyle.fontStretch +\n ';font-style:' + elementStyle.fontStyle +\n ';font-variant:' + elementStyle.fontVariant +\n ';font-variant-caps:' + elementStyle.fontVariantCaps +\n ';font-variant-ligatures:' + elementStyle.fontVariantLigatures +\n ';font-variant-numeric:' + elementStyle.fontVariantNumeric +\n ';font-weight:' + elementStyle.fontWeight +\n ';letter-spacing:' + elementStyle.letterSpacing +\n ';margin-left:' + elementStyle.marginLeft +\n ';margin-right:' + elementStyle.marginRight +\n ';padding-left:' + elementStyle.paddingLeft +\n ';padding-right:' + elementStyle.paddingRight +\n ';text-indent:' + elementStyle.textIndent +\n ';text-transform:' + elementStyle.textTransform\n\n // Assigns an appropriate width to the given `element` based on its contents.\n function setWidth () {\n var string = element.value || element.getAttribute('placeholder') || ''\n // Check if the `ghostElement` exists. If no, create it.\n var ghostElement =\n document.getElementById(GHOST_ELEMENT_ID) || createGhostElement()\n // Copy all width-affecting styles to the `ghostElement`.\n ghostElement.style.cssText += elementCssText\n ghostElement.innerHTML = escapeSpecialCharacters(string)\n // Copy the width of `ghostElement` to `element`.\n var width = window.getComputedStyle(ghostElement).width\n element.style.width = width\n return width\n }\n\n element.addEventListener('input', setWidth)\n\n var width = setWidth()\n\n // Set `min-width` only if `options.minWidth` was set, and only if the initial\n // width is non-zero.\n if (options && options.minWidth && width !== '0px') {\n element.style.minWidth = width\n }\n\n // Return a function for unbinding the event listener and removing the `ghostElement`.\n return function () {\n element.removeEventListener('input', setWidth)\n var ghostElement = document.getElementById(GHOST_ELEMENT_ID)\n if (ghostElement) {\n ghostElement.parentNode.removeChild(ghostElement)\n }\n }\n}\n","@use 'variables' as *;\n@use 'mixins' as *;\n@use 'src/components/cat-form-hint/cat-form-hint';\n@use 'utils/color';\n@use '_snippets/form-label';\n\n:host {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n line-height: 1.25rem;\n position: relative;\n}\n\n:host([hidden]) {\n display: none;\n}\n\nlabel {\n align-self: flex-start;\n\n &.hidden {\n @include cat-visually-hidden;\n }\n}\n\n.select-field,\n.select-container {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n flex: 1 1 auto;\n}\n\n.select-field.select-horizontal {\n flex-direction: row;\n gap: 1rem;\n}\n\n.select-wrapper {\n display: flex;\n align-items: flex-start;\n background: cat-token('color.ui.background.input');\n border-radius: cat-border-radius('m');\n box-shadow: inset 0 0 0 1px rgb(var(--border-color));\n transition: box-shadow cat-token('time.transition.s') linear;\n padding: 0.25rem;\n --border-color: #{cat-token('color.ui.border.dark', $wrap: false)};\n\n &:not(.select-disabled):hover {\n box-shadow:\n inset 0 0 0 1px rgb(var(--border-color)),\n 0 0 0 1px rgb(var(--border-color));\n }\n\n &:focus-within {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: -1px;\n }\n\n &.select-invalid {\n --border-color: #{cat-token('color.theme.danger.bg', 0.2, $wrap: false)};\n }\n\n /* stylelint-disable property-no-vendor-prefix */\n &:has(input:-webkit-autofill) {\n &,\n &:hover,\n &:focus {\n background-color: cat-token('color.ui.background.inputAutofill');\n }\n }\n /* stylelint-enable property-no-vendor-prefix */\n}\n\n:host(.cat-error) {\n .select-wrapper {\n box-shadow: 0 0 0 1px cat-token('color.theme.danger.bg');\n\n &:not(.input-disabled):hover {\n box-shadow: 0 0 0 2px cat-token('color.theme.danger.bg');\n }\n }\n}\n\n.select-disabled {\n background: cat-token('color.ui.background.muted');\n cursor: not-allowed;\n color: cat-token('color.ui.font.muted');\n pointer-events: none;\n}\n\n.select-wrapper-inner {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n gap: 0.25rem;\n min-width: 0;\n\n > cat-avatar {\n display: inline-block;\n padding-left: 0.5rem;\n\n & + .select-input {\n padding-left: 0.25rem;\n }\n }\n\n cat-avatar {\n --cat-avatar-size: 1.25rem;\n --cat-avatar-font-size: 0.5rem;\n }\n\n .select-multiple & {\n flex-wrap: wrap;\n }\n}\n\n.select-input {\n font: inherit;\n background: none;\n border: none;\n outline: none;\n padding: 0.375rem 0.5rem;\n flex: 1 1 auto;\n @include cat-ellipsis;\n\n &::placeholder {\n color: cat-token('color.ui.font.muted');\n opacity: 1;\n }\n\n .select-disabled & {\n cursor: inherit;\n }\n}\n\n.select-pills {\n display: contents;\n}\n\n.pill {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.25rem 0.5rem;\n background: cat-token('color.ui.background.muted');\n border-radius: cat-border-radius('s');\n white-space: nowrap;\n min-width: 0;\n\n > span {\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1 1 0%;\n }\n\n > cat-button {\n margin-right: -0.25rem;\n margin-left: -0.25rem;\n }\n}\n\n.select-btn {\n transition: transform cat-token('time.transition.s') linear;\n\n &::part(button) {\n outline: none;\n }\n}\n\ncat-spinner {\n padding: 0.375rem;\n}\n\n.icon-suffix {\n padding: 0.25rem;\n}\n\n.select-btn-open {\n transform: rotate(180deg);\n}\n\n.select-dropdown {\n position: fixed;\n right: 0;\n background: cat-token('color.ui.background.surface');\n display: none;\n overflow: auto;\n // -webkit-overflow-scrolling: touch;\n @include cat-elevation(4);\n border-radius: cat-border-radius('m');\n border: 1px solid cat-token('color.ui.border.default');\n z-index: cat-z-index('dropdown');\n\n /* Avoid layout interference */\n width: max-content;\n top: 0;\n left: 0;\n}\n\n.select-options-wrapper {\n max-height: 16rem;\n width: 100%;\n}\n\n.select-empty {\n margin: 1rem 0;\n padding: 0 1.25rem;\n}\n\n.select-options {\n list-style-type: none;\n margin: 0;\n padding: 0.5rem 0;\n\n cat-checkbox,\n .select-option-single {\n margin: 0;\n padding: 0.5rem 1rem;\n }\n}\n\n.select-option-inner {\n display: flex;\n gap: 0.5rem;\n\n cat-avatar {\n --cat-avatar-size: 1.25rem;\n --cat-avatar-font-size: 0.5rem;\n }\n}\n\n.select-option-text {\n flex: 1 1 0%;\n min-width: 0;\n}\n\n.select-option-single {\n cursor: pointer;\n}\n\n.select-input-transparent-caret {\n caret-color: transparent;\n}\n\n.select-option-empty,\n.select-option-loading {\n padding: 0.5rem 1rem;\n}\n\n.select-option:hover {\n background-color: cat-token('color.theme.secondary.bg', 0.05);\n}\n\n.select-option-active {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: -2px;\n}\n\n.select-option-label {\n @include cat-ellipsis(2);\n @include cat-break-word;\n}\n\n.select-option-description {\n @include cat-ellipsis(2);\n color: cat-token('color.ui.font.muted');\n}\n","import { autoUpdate, computePosition, flip, offset, Placement } from '@floating-ui/dom';\nimport { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from '@stencil/core';\nimport autosizeInput from 'autosize-input';\nimport {\n catchError,\n debounce,\n distinctUntilChanged,\n filter,\n first,\n Observable,\n of,\n scan,\n startWith,\n Subject,\n Subscription,\n switchMap,\n takeWhile,\n tap,\n timer\n} from 'rxjs';\nimport { coerceBoolean, coerceNumber } from '../../utils/coerce';\nimport { CatFormHint, ErrorMap } from '../cat-form-hint/cat-form-hint';\nimport { catI18nRegistry as i18n } from '../cat-i18n/cat-i18n-registry';\n\nexport interface Item {\n id: string;\n}\n\nexport interface Page<T> {\n content: T[];\n last: boolean;\n totalElements?: number;\n}\n\nexport interface RenderInfo {\n label: string;\n description?: string;\n avatar?: {\n src?: string;\n round?: boolean;\n initials?: string;\n icon?: string;\n };\n}\n\n/**\n * @property customId - Change the ID of item for the given one.\n * @property resolve - Resolves the value of the select.\n * @property retrieve - Retrieves the options of the select.\n * @property render - Renders the items of the select.\n * @property renderOptions$ - Observable that triggers re-rendering of options when emitted (doesn't support tags).\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface CatSelectConnector<T extends Item = any> {\n customId?: (item: T) => string;\n resolve: (ids: string[]) => Observable<T[]>;\n retrieve: (term: string, page: number) => Observable<Page<T>>;\n render: (item: T) => RenderInfo;\n renderOptions$?: Observable<void>;\n}\n\nexport interface CatSelectState {\n term: string;\n isOpen: boolean;\n isLoading: boolean;\n isFirstLoading: boolean;\n isResolving: boolean;\n options: { item: Item; render: RenderInfo }[];\n tempSelection: { item: Item; render: RenderInfo }[];\n selection: { item: Item; render: RenderInfo }[];\n activeOptionIndex: number;\n activeSelectionIndex: number;\n totalElements?: number;\n}\n\nexport interface CatSelectMultipleTaggingValue {\n ids: string[];\n tags: string[];\n}\n\nexport interface CatSelectTaggingValue {\n id: string;\n tag: string;\n}\n\nconst INIT_STATE: CatSelectState = {\n term: '',\n isOpen: false,\n isLoading: false,\n isFirstLoading: true,\n isResolving: false,\n options: [],\n selection: [],\n tempSelection: [],\n activeOptionIndex: -1,\n activeSelectionIndex: -1\n};\n\nlet nextUniqueId = 0;\nlet nextTagUniqueId = 0;\n\n/**\n * Select lets user choose one option from an options' menu.\n * Consider using select when you have 6 or more options. Select component supports any content type.\n *\n * @slot hint - Optional hint element to be displayed with the select.\n * @slot label - The slotted label. If both the label property and the label slot are present,\n * only the label slot will be displayed.\n * @part label - The native label element.\n * @part input - The native input element.\n */\n@Component({\n tag: 'cat-select',\n styleUrl: 'cat-select.scss',\n shadow: {\n delegatesFocus: true\n }\n})\nexport class CatSelect {\n private static readonly SKELETON_COUNT = 4;\n private static readonly DROPDOWN_OFFSET = 4;\n private readonly _id = `cat-input-${nextUniqueId++}`;\n private get id() {\n return this.identifier || this._id;\n }\n\n private dropdown?: HTMLElement;\n private trigger?: HTMLElement;\n private input?: HTMLInputElement;\n private errorMapSrc?: ErrorMap | true;\n\n private subscription?: Subscription;\n private renderSubscription?: Subscription;\n private term$: Subject<string> = new Subject();\n private more$: Subject<void> = new Subject();\n private valueChangedBySelection = false;\n private cleanupFloatingUi?: () => void;\n\n @Element() hostElement!: HTMLElement;\n\n @State() connector?: CatSelectConnector;\n\n @State() state: CatSelectState = INIT_STATE;\n\n @State() hasSlottedLabel = false;\n\n @State() hasSlottedHint = false;\n\n @State() errorMap?: ErrorMap | true;\n\n /**\n * Whether the label need a marker to shown if the select is required or optional.\n */\n @Prop() requiredMarker?: 'none' | 'required' | 'optional' | 'none!' | 'optional!' | 'required!' = 'optional';\n\n /**\n * Whether the label is on top or left.\n */\n @Prop() horizontal?: boolean;\n\n /**\n * If the horizontal value is not provided, this fallback value is used. Can be set by form-group.\n * @internal\n */\n @Prop() fallbackHorizontal?: boolean;\n\n /**\n * Enable multiple selection.\n */\n @Prop() multiple = false;\n\n /**\n * The debounce time for the search.\n */\n @Prop() debounce = 250;\n\n /**\n * The placement of the select.\n */\n @Prop() placement: Placement = 'bottom-start';\n\n /**\n * The value of the select. <br />\n * <br />\n * The value of the select depends on whether it is allowed to choose a single item or several items. <br />\n * When only one item can be selected, the value is the id of the item, in case several items can be selected, the value is an array of ids of the selected items. <br />\n * <br />\n * In case the user can add new items to the select (tags activated), the value in the single select is an object (CatSelectTaggingValue) with the id of the item or the name of the created item,\n * in the case of multiple select, it is an object (CatSelectMultipleTaggingValue) with the array of the ids of the items selected and the array of the names of the items created\n */\n @Prop({ mutable: true }) value?: string | string[] | CatSelectTaggingValue | CatSelectMultipleTaggingValue;\n\n /**\n * Whether the select is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * The placeholder text to display within the select.\n */\n @Prop() placeholder?: string;\n\n /**\n * Optional hint text(s) to be displayed with the select.\n */\n @Prop() hint?: string | string[];\n\n /**\n * A unique identifier for the input.\n */\n @Prop() identifier?: string;\n\n /**\n * The label for the select.\n */\n @Prop() label = '';\n\n /**\n * The name of the form control. Submitted with the form as part of a name/value pair.\n */\n @Prop() name?: string;\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * A value is required or must be checked for the form to be submittable.\n */\n @Prop() required = false;\n\n /**\n * Whether the select should show a clear button.\n */\n @Prop() clearable = false;\n\n /**\n * Whether the select should add new items.\n */\n @Prop() tags = false;\n\n /**\n * Optional hint text to be displayed on the new item to be added.\n */\n @Prop() tagHint?: string;\n\n /**\n * The text to display in the dropdown if no results are found.\n */\n @Prop() noItems?: string;\n\n /**\n * The validation errors for this input. Will render a hint under the input\n * with the translated error message(s) `error.${key}`. If an object is\n * passed, the keys will be used as error keys and the values translation\n * parameters.\n * If the value is `true`, the input will be marked as invalid without any\n * hints under the input.\n */\n @Prop() errors?: boolean | string[] | ErrorMap;\n\n /**\n * Fine-grained control over when the errors are shown. Can be `false` to\n * never show errors, `true` to show errors on blur, or a number to show\n * errors change with the given delay in milliseconds or immediately on blur.\n */\n @Prop() errorUpdate: boolean | number = 0;\n\n /**\n * Attributes that will be added to the native HTML input element.\n */\n @Prop() nativeAttributes?: { [key: string]: string };\n\n /**\n * A unique identifier for the underlying native element that is used for\n * testing purposes. The attribute is added as `data-test` attribute and acts\n * as a shorthand for `nativeAttributes={ 'data-test': 'test-Id' }`.\n */\n @Prop() testId?: string;\n\n @Watch('connector')\n onConnectorChanged(connector: CatSelectConnector) {\n this.reset(connector);\n this.resolve();\n }\n\n @Watch('value')\n onValueChanged() {\n !this.valueChangedBySelection ? this.resolve() : (this.valueChangedBySelection = false);\n }\n\n @Watch('errors')\n onErrorsChanged(newValue?: boolean | string[] | ErrorMap, _oldValue?: unknown, update: boolean = true) {\n if (!coerceBoolean(this.errorUpdate)) {\n this.errorMap = undefined;\n } else {\n this.errorMapSrc = Array.isArray(newValue)\n ? (newValue as string[]).reduce((acc, err) => ({ ...acc, [err]: undefined }), {})\n : newValue || undefined;\n if (update) {\n this.showErrorsIfTimeout() || this.showErrorsIfNoFocus();\n }\n }\n }\n\n @Watch('state')\n onStateChanged(newState: CatSelectState, oldState: CatSelectState) {\n const changed = (key: keyof CatSelectState) => newState[key] !== oldState[key];\n if (changed('isOpen')) {\n this.update();\n }\n if (changed('activeOptionIndex') && this.state.activeOptionIndex >= 0) {\n this.dropdown\n ?.querySelector(`#select-${this.id}-option-${this.state.activeOptionIndex}`)\n ?.scrollIntoView({ block: 'nearest' });\n }\n\n if (changed('selection')) {\n let newValue;\n if (!this.multiple && this.state.selection.length) {\n this.hide();\n }\n const idsSelected = this.state.selection.map(item => item.item.id);\n if (!this.tags) {\n if (this.multiple) {\n newValue = idsSelected;\n } else {\n newValue = idsSelected.length ? idsSelected[0] : '';\n }\n } else {\n const ids = idsSelected.filter(id => !id.startsWith(`select-${this.id}-tag`));\n const tags = this.state.selection\n .filter(item => item.item.id.startsWith(`select-${this.id}-tag`))\n .map(item => item.render.label);\n if (this.multiple) {\n newValue = { ids, tags };\n } else {\n newValue = { id: ids.length ? ids[0] : '', tag: tags.length ? tags[0] : '' };\n }\n }\n\n if (!oldState.isResolving) {\n this.valueChangedBySelection = true;\n this.value = newValue;\n this.catChange.emit();\n }\n this.showErrorsIfTimeout();\n }\n }\n\n /**\n * Emitted when the select dropdown is opened.\n */\n @Event() catOpen!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the select dropdown is closed.\n */\n @Event() catClose!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter<InputEvent>;\n\n /**\n * Emitted when the select loses the focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentDidLoad(): void {\n if (this.input) {\n autosizeInput(this.input, { minWidth: true });\n }\n }\n\n componentWillLoad(): void {\n this.onErrorsChanged(this.errors, undefined, false);\n }\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n this.hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n }\n\n @Listen('blur')\n onBlur(event: FocusEvent): void {\n if (!this.multiple && this.state.activeOptionIndex >= 0) {\n if (this.tags && this.state.options[this.state.activeOptionIndex].item.id === `select-${this.id}-option-tag`) {\n this.createTag(this.state.term);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n }\n this.hide();\n // Conditionally remove selection if the option was not manually selected through click or enter key press\n if (!this.multiple && (!this.tags || !this.state.selection?.length)) {\n if (this.state.tempSelection?.length) {\n this.patchState({\n activeSelectionIndex: -1,\n selection: this.state.tempSelection,\n tempSelection: [],\n options: [],\n term: this.state.tempSelection[0].render.label\n });\n } else if (!this.state.selection?.length) {\n this.patchState({\n activeSelectionIndex: -1,\n selection: [],\n tempSelection: [],\n options: [],\n term: ''\n });\n }\n } else {\n this.patchState({ activeSelectionIndex: -1 });\n }\n\n this.catBlur.emit(event);\n if (coerceBoolean(this.errorUpdate)) {\n this.showErrors();\n }\n }\n\n @Listen('keydown')\n onKeyDown(event: KeyboardEvent): void {\n const isInputFocused = this.hostElement.shadowRoot?.activeElement === this.input;\n\n if (['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n this.onArrowKeyDown(event);\n } else if (['Enter', ' '].includes(event.key) && isInputFocused) {\n if (\n this.tags &&\n this.state.activeOptionIndex === 0 &&\n this.state.options[0].item.id === `select-${this.id}-option-tag`\n ) {\n event.preventDefault();\n if (this.multiple) {\n this.toggleTag(this.state.options[0]);\n } else {\n this.createTag(this.state.options[0].render.label);\n }\n } else if (this.state.activeOptionIndex >= 0) {\n event.preventDefault();\n if (this.multiple) {\n this.toggle(this.state.options[this.state.activeOptionIndex]);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n } else if (this.tags && event.key === 'Enter' && this.state.activeOptionIndex < 0) {\n this.createTag(this.state.term);\n }\n } else if (event.key === 'Escape') {\n if (this.hide()) {\n event.stopPropagation();\n }\n } else if (event.key === 'Backspace' || event.key === 'Delete') {\n this.input?.focus();\n if (!this.multiple || !this.state.term || (this.input?.selectionStart === 0 && event.key === 'Backspace')) {\n if (this.state.activeSelectionIndex >= 0) {\n this.deselect(this.state.selection[this.state.activeSelectionIndex].item.id);\n } else if (this.state.selection.length) {\n const selectionClone = [...this.state.selection];\n selectionClone.pop();\n this.patchState({\n selection: selectionClone,\n tempSelection: this.state.term ? [...this.state.selection] : []\n });\n }\n }\n } else if (event.key === 'Tab') {\n this.trigger?.setAttribute('tabindex', '-1');\n if (this.multiple) {\n this.patchState({ activeSelectionIndex: -1, activeOptionIndex: -1 });\n } else if (this.state.activeOptionIndex >= 0) {\n if (this.tags && this.state.options[this.state.activeOptionIndex].item.id === `select-${this.id}-option-tag`) {\n this.createTag(this.state.term);\n } else {\n this.select(this.state.options[this.state.activeOptionIndex]);\n }\n }\n } else if (event.key.length === 1) {\n this.input?.focus();\n }\n }\n\n @Listen('keyup')\n onKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Tab' && !event.shiftKey) {\n this.hostElement.shadowRoot?.activeElement === this.trigger && this.input?.focus();\n if (this.hostElement.shadowRoot?.activeElement === this.input) {\n this.show();\n }\n } else if (event.key === 'Tab' && event.shiftKey) {\n const clearButton = this.trigger?.querySelector(`#select-clear-btn-${this.id}`);\n\n if (clearButton) {\n this.hostElement.shadowRoot?.activeElement === clearButton && this.show();\n } else {\n this.show();\n }\n }\n }\n\n /**\n * Programmatically move focus to the input. Use this method instead of\n * `input.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.input?.focus(options);\n }\n\n /**\n * Programmatically remove focus from the input. Use this method instead of\n * `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.input?.blur();\n }\n\n /**\n * Clear the input.\n */\n @Method()\n async clear(): Promise<void> {\n this.clearInput();\n }\n\n /**\n * Connect the functions of the select\n *\n * @param connector - The {@link CatSelectConnector} of the select.\n */\n @Method()\n async connect(connector: CatSelectConnector): Promise<void> {\n this.connector = connector;\n let number$: Observable<number>;\n this.subscription?.unsubscribe();\n this.subscription = this.term$\n .asObservable()\n .pipe(\n debounce(term => (term ? timer(this.debounce) : of(0))),\n distinctUntilChanged(),\n tap(\n () =>\n (number$ = this.more$.pipe(\n filter(() => !this.state.isLoading),\n scan(n => n + 1, 0),\n startWith(0)\n ))\n ),\n switchMap(term =>\n number$.pipe(\n tap(() => this.patchState({ isLoading: true })),\n switchMap(number => connector.retrieve(term, number)),\n tap(page =>\n this.patchState({ isLoading: false, totalElements: page.totalElements, isFirstLoading: false })\n ),\n takeWhile(page => !page.last, true),\n scan((items, page) => [...items, ...page.content], [] as Item[])\n )\n )\n )\n .subscribe(items => {\n const options = this.toSelectItems(connector, items);\n\n if (\n this.tags &&\n this.state.term.trim().length &&\n !options.find(value1 => value1.render.label.toLowerCase() === this.state.term.toLowerCase())\n ) {\n let label;\n if (this.isTagSelected(this.state.term)) {\n label = this.state.selection.find(item => item.render.label.toLowerCase() === this.state.term.toLowerCase())\n ?.render.label;\n }\n options.unshift({\n item: { id: `select-${this.id}-option-tag` },\n render: { label: label ? label : this.state.term }\n });\n }\n this.patchState({\n options\n });\n });\n\n this.renderSubscription?.unsubscribe();\n if (connector.renderOptions$) {\n this.renderSubscription = connector.renderOptions$.subscribe(() => {\n this.rerenderOptions();\n });\n }\n }\n\n render() {\n this.hostElement.tabIndex = Number(this.hostElement.getAttribute('tabindex')) || 0;\n return (\n <Host>\n <div\n class={{\n 'select-field': true,\n 'select-horizontal': this.horizontal ?? this.fallbackHorizontal ?? false,\n 'select-multiple': this.multiple\n }}\n >\n <div class={{ 'label-container': true, hidden: this.labelHidden }}>\n {(this.hasSlottedLabel || this.label) && (\n <label htmlFor={`select-${this.id}-input`} part=\"label\">\n <span class=\"label-wrapper\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n <div class=\"label-metadata\">\n {!this.required && (this.requiredMarker ?? 'optional').startsWith('optional') && (\n <span class=\"label-optional\" aria-hidden=\"true\">\n ({i18n.t('input.optional')})\n </span>\n )}\n {this.required && this.requiredMarker?.startsWith('required') && (\n <span class=\"label-optional\" aria-hidden=\"true\">\n ({i18n.t('input.required')})\n </span>\n )}\n </div>\n </span>\n </label>\n )}\n </div>\n\n <div class=\"select-container\">\n <div\n class={{ 'select-wrapper': true, 'select-disabled': this.disabled, 'select-invalid': this.invalid }}\n ref={el => (this.trigger = el)}\n id={this.id}\n role=\"combobox\"\n aria-expanded={this.state.isOpen || this.isPillboxActive()}\n aria-controls={this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`}\n aria-required={this.required ? 'true' : false}\n aria-activedescendant={this.activeDescendant}\n onClick={e => this.onClick(e)}\n >\n <div class=\"select-wrapper-inner\">\n {this.multiple && this.state.selection.length ? (\n <div\n id={`select-pillbox-${this.id}`}\n role=\"listbox\"\n aria-orientation=\"horizontal\"\n class=\"select-pills\"\n >\n {this.state.selection.map((item, i) => (\n <span\n class={{\n pill: true,\n 'select-no-open': true,\n 'select-option-active': this.state.activeSelectionIndex === i\n }}\n role=\"option\"\n aria-selected=\"true\"\n id={`select-${this.id}-selection-${i}`}\n >\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n icon={item.render.avatar.icon}\n initials={item.render.avatar.initials ?? ''}\n ></cat-avatar>\n ) : null}\n <span>{item.render.label}</span>\n {!this.disabled && (\n <cat-button\n size=\"xs\"\n variant=\"text\"\n icon=\"$cat:select-clear\"\n iconOnly\n a11yLabel={i18n.t('select.deselect')}\n onClick={() => this.deselect(item.item.id)}\n tabIndex={-1}\n data-dropdown-no-close\n ></cat-button>\n )}\n </span>\n ))}\n </div>\n ) : this.state.selection.length && this.state.selection[0].render.avatar ? (\n <cat-avatar\n label={this.state.selection[0].render.label}\n round={this.state.selection[0].render.avatar.round}\n src={this.state.selection[0].render.avatar.src}\n icon={this.state.selection[0].render.avatar.icon}\n initials={this.state.selection[0].render.avatar.initials ?? ''}\n ></cat-avatar>\n ) : null}\n <input\n data-test={this.testId}\n {...this.nativeAttributes}\n part=\"input\"\n id={`select-${this.id}-input`}\n class=\"select-input\"\n role=\"combobox\"\n ref={el => (this.input = el)}\n aria-controls={this.isPillboxActive() ? `select-pillbox-${this.id}` : `select-listbox-${this.id}`}\n aria-activedescendant={this.activeDescendant}\n aria-invalid={this.invalid ? 'true' : undefined}\n aria-describedby={this.hasHint ? this.id + '-hint' : undefined}\n aria-autocomplete=\"list\"\n onInput={this.onInput.bind(this)}\n value={!this.multiple ? this.state.term : undefined}\n placeholder={this.placeholder}\n disabled={this.disabled || this.state.isResolving}\n ></input>\n </div>\n {this.state.isResolving && <cat-spinner></cat-spinner>}\n {this.invalid && (\n <cat-icon icon=\"$cat:input-error\" class=\"icon-suffix cat-text-danger\" size=\"l\"></cat-icon>\n )}\n {(this.state.selection.length || this.state.term.length) &&\n !this.disabled &&\n !this.state.isResolving &&\n this.clearable ? (\n <cat-button\n id={`select-clear-btn-${this.id}`}\n iconOnly\n icon=\"$cat:input-close\"\n variant=\"text\"\n size=\"s\"\n a11yLabel={i18n.t('input.clear')}\n onCatClick={() => this.clearInput()}\n data-dropdown-no-close\n ></cat-button>\n ) : null}\n {!this.state.isResolving && (\n <cat-button\n iconOnly\n icon=\"$cat:select-open\"\n class={{ 'select-btn': true, 'select-btn-open': this.state.isOpen }}\n variant=\"text\"\n size=\"s\"\n a11yLabel={this.state.isOpen ? i18n.t('select.close') : i18n.t('select.open')}\n aria-controls={`select-listbox-${this.id}`}\n aria-expanded={this.state.isOpen}\n tabIndex={-1}\n disabled={this.disabled || this.state.isResolving}\n data-dropdown-no-close\n ></cat-button>\n )}\n </div>\n {this.hasHint && (\n <CatFormHint\n id={this.id}\n hint={this.hint}\n slottedHint={this.hasSlottedHint && <slot name=\"hint\"></slot>}\n errorMap={this.errorMap}\n />\n )}\n </div>\n </div>\n\n <div\n class=\"select-dropdown\"\n ref={el => (this.dropdown = el)}\n style={{ display: this.state.isOpen ? 'block' : undefined }}\n >\n {this.state.isOpen && (\n <cat-scrollable\n class=\"select-options-wrapper\"\n scrolledBuffer={56}\n noOverflowX\n noOverscroll\n noScrolledInit\n onScrolledBottom={() => this.more$.next()}\n >\n <ul\n class=\"select-options\"\n role=\"listbox\"\n aria-multiselectable={this.multiple}\n aria-setsize={this.state.totalElements}\n id={`select-listbox-${this.id}`}\n >\n {this.optionsList}\n {this.state.isFirstLoading\n ? Array.from(Array(CatSelect.SKELETON_COUNT)).map(() => (\n <li class=\"select-option-loading\">\n <cat-skeleton variant=\"body\" lines={1}></cat-skeleton>\n <cat-skeleton variant=\"body\" lines={1}></cat-skeleton>\n </li>\n ))\n : !this.state.options.length &&\n !this.tags && (\n <li class=\"select-option-empty\">{this.noItems ? this.noItems : i18n.t('select.empty')}</li>\n )}\n </ul>\n </cat-scrollable>\n )}\n </div>\n </Host>\n );\n }\n\n private get hasHint() {\n return !!this.hint || !!this.hasSlottedHint || this.invalid;\n }\n\n private get invalid() {\n return this.errorMap === true || !!Object.keys(this.errorMap || {}).length;\n }\n\n private get optionsList() {\n return this.state.options.map((item, i) => {\n const isTagOption = this.tags && item.item.id === `select-${this.id}-option-tag`;\n\n const isOptionSelected = this.isSelected(item.item.id) || (this.tags && this.isTagSelected(item.render.label));\n\n const getLabel = () => {\n if (isTagOption) {\n return item.render.label + this.tagTextHelp;\n }\n return item.render.label;\n };\n\n return (\n <li\n role=\"option\"\n class=\"select-option\"\n id={`select-${this.id}-option-${i}`}\n aria-selected={isOptionSelected ? 'true' : 'false'}\n >\n {this.multiple ? (\n <cat-checkbox\n class={{ 'select-option-active': this.state.activeOptionIndex === i }}\n checked={isOptionSelected}\n tabIndex={-1}\n labelLeft\n onFocus={() => this.input?.focus()}\n onCatChange={e => {\n !isTagOption ? this.toggle(item) : this.toggleTag(item);\n e.stopPropagation();\n }}\n >\n <span slot=\"label\" class=\"select-option-inner\">\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n icon={item.render.avatar.icon}\n initials={item.render.avatar.initials ?? ''}\n ></cat-avatar>\n ) : null}\n <span class=\"select-option-text\" part=\"option\">\n <span class=\"select-option-label\">{getLabel()}</span>\n <span class=\"select-option-description\">{item.render.description}</span>\n </span>\n </span>\n </cat-checkbox>\n ) : (\n <div\n class={{\n 'select-option-inner': true,\n 'select-option-single': true,\n 'select-option-active': this.state.activeOptionIndex === i\n }}\n onFocus={() => this.input?.focus()}\n onClick={() => (isTagOption ? this.createTag(item.render.label) : this.select(item))}\n tabIndex={-1}\n >\n {item.render.avatar ? (\n <cat-avatar\n label={item.render.label}\n round={item.render.avatar.round}\n src={item.render.avatar.src}\n icon={item.render.avatar.icon}\n initials={item.render.avatar.initials ?? ''}\n ></cat-avatar>\n ) : null}\n <span class=\"select-option-text\">\n <span class=\"select-option-label\">{getLabel()}</span>\n <span class=\"select-option-description\">{item.render.description}</span>\n </span>\n </div>\n )}\n </li>\n );\n });\n }\n\n private resolve() {\n const connector = this.connector;\n if (!connector) {\n return;\n }\n this.patchState({ isResolving: true });\n\n const ids = this.initIds();\n let tags: string[];\n\n if (this.tags) {\n tags = this.initTags();\n }\n\n const data$ = ids.length ? connector.resolve(ids).pipe(first()) : of([]);\n data$.pipe(catchError(() => of([]))).subscribe(items => {\n const selection = this.toSelectItems(connector, items);\n if (this.tags) {\n tags\n .filter(tag => !this.isTagSelected(tag, selection))\n .forEach((tag, index) => {\n const item = { id: `select-${this.id}-tag-${index}`, name: tag };\n selection.push({ item, render: { label: item.name } });\n });\n }\n const term = !this.multiple && selection.length ? selection[0].render.label : '';\n this.patchState({ isResolving: false, selection, term, activeOptionIndex: -1 });\n this.term$.next(term);\n this.input && (this.input.value = term);\n });\n }\n\n private toSelectItems(connector: CatSelectConnector, items: Item[]) {\n return items.map(item => ({\n item: { ...item, id: connector.customId ? connector.customId(item) : item.id },\n render: connector.render(item)\n }));\n }\n\n private show() {\n if (!this.state.isOpen && this.connector) {\n if (this.trigger && this.dropdown) {\n this.cleanupFloatingUi = autoUpdate(this.trigger, this.dropdown, () => this.update());\n }\n // reconnect to reset the connection, i.e. the pagination\n this.connect(this.connector);\n this.patchState({ isOpen: true, isFirstLoading: true, options: [] });\n this.catOpen.emit();\n this.term$.next('');\n this.input?.classList.remove('select-input-transparent-caret');\n }\n }\n\n private hide() {\n if (this.state.isOpen) {\n this.patchState({ isOpen: false, activeOptionIndex: -1 });\n this.cleanupFloatingUi?.();\n this.cleanupFloatingUi = undefined;\n this.catClose.emit();\n return true;\n }\n return false;\n }\n\n private search(term: string) {\n this.patchState({ term, activeOptionIndex: -1, activeSelectionIndex: -1 });\n this.term$.next(term);\n }\n\n private isSelected(id: string) {\n return this.state.selection.findIndex(s => s.item.id === id) >= 0;\n }\n\n private select(item: { item: Item; render: RenderInfo }) {\n if (!this.isSelected(item.item.id)) {\n let newSelection;\n if (this.multiple) {\n newSelection = [...this.state.selection, item];\n } else {\n newSelection = [item];\n this.patchState({ term: item.render.label, activeOptionIndex: -1, activeSelectionIndex: -1 });\n }\n this.patchState({ selection: newSelection, tempSelection: [] });\n\n if (this.multiple && this.state.term.trim() && this.input) {\n this.patchState({ term: '', activeOptionIndex: -1 });\n this.term$.next('');\n this.input.value = '';\n }\n }\n this.setTransparentCaret();\n }\n\n private deselect(id: string) {\n if (this.isSelected(id)) {\n this.patchState({\n selection: this.state.selection.filter(item => item.item.id !== id),\n activeSelectionIndex: -1\n });\n }\n }\n\n private rerenderOptions() {\n const optionItems = this.state.options.map(o => o.item);\n const updatedOptions = this.toSelectItems(this.connector!, optionItems);\n\n this.patchState({ options: updatedOptions });\n }\n\n private toggle(item: { item: Item; render: RenderInfo }) {\n this.isSelected(item.item.id)\n ? this.deselect(item.item.id)\n : this.tags && this.isTagSelected(item.render.label)\n ? this.removeTag(item.render.label)\n : this.select(item);\n }\n\n private clearInput() {\n if (this.input && this.state.term) {\n this.patchState({ selection: [], term: '', activeOptionIndex: -1, tempSelection: [] });\n this.term$.next('');\n this.input.value = '';\n } else {\n this.patchState({ selection: [], tempSelection: [] });\n }\n }\n\n private reset(connector?: CatSelectConnector) {\n this.connector = connector ?? this.connector;\n this.subscription?.unsubscribe();\n this.subscription = undefined;\n this.renderSubscription?.unsubscribe();\n this.renderSubscription = undefined;\n this.state = INIT_STATE;\n }\n\n private onClick(event: MouseEvent) {\n if (this.disabled) {\n return;\n }\n const elem = event.target as Element;\n this.trigger?.setAttribute('tabindex', '0');\n this.input?.focus();\n if (\n elem === this.trigger ||\n elem === this.input ||\n elem.classList.contains('select-btn') ||\n elem.nodeName === 'SPAN'\n ) {\n this.state.isOpen ? this.hide() : this.show();\n }\n }\n\n private onInput() {\n this.search(this.input?.value.trim() || '');\n if (!this.multiple) {\n if (this.state.selection.length) {\n const selectionClone = [...this.state.selection];\n selectionClone.pop();\n this.patchState({ selection: selectionClone, tempSelection: [...this.state.selection] });\n }\n if (!this.required && !this.input?.value.trim()) {\n this.patchState({ tempSelection: [] });\n }\n }\n this.show();\n }\n\n private update() {\n if (this.trigger && this.dropdown) {\n computePosition(this.trigger, this.dropdown, {\n strategy: 'fixed',\n placement: this.placement,\n middleware: [offset(CatSelect.DROPDOWN_OFFSET), flip()]\n }).then(({ x, y, placement }) => {\n if (this.dropdown) {\n this.dropdown.dataset.placement = placement;\n Object.assign(this.dropdown.style, {\n width: `${this.trigger?.clientWidth}px`,\n left: `${x}px`,\n top: `${y}px`\n });\n }\n });\n }\n }\n\n private patchState(update: Partial<CatSelectState>) {\n this.state = { ...this.state, ...update };\n }\n\n private isPillboxActive() {\n return this.state.activeSelectionIndex >= 0;\n }\n\n private get activeDescendant() {\n let activeDescendant = undefined;\n if (this.state.activeOptionIndex >= 0) {\n activeDescendant = `select-${this.id}-option-${this.state.activeOptionIndex}`;\n } else if (this.state.activeSelectionIndex >= 0) {\n activeDescendant = `select-${this.id}-selection-${this.state.activeSelectionIndex}`;\n }\n return activeDescendant;\n }\n\n private onArrowKeyDown(event: KeyboardEvent) {\n let preventDefault = false;\n this.input?.focus();\n\n switch (event.key) {\n case 'ArrowDown':\n preventDefault = true;\n this.state.isOpen\n ? this.patchState({\n activeOptionIndex: Math.min(this.state.activeOptionIndex + 1, this.state.options.length - 1),\n activeSelectionIndex: -1\n })\n : this.show();\n break;\n case 'ArrowUp':\n preventDefault = true;\n this.state.activeOptionIndex >= 0\n ? this.patchState({\n activeOptionIndex: Math.max(this.state.activeOptionIndex - 1, -1),\n activeSelectionIndex: -1\n })\n : this.hide();\n break;\n case 'ArrowLeft':\n if (this.input?.selectionStart === 0) {\n preventDefault = true;\n let index;\n this.state.activeSelectionIndex > 0\n ? (index = Math.max(this.state.activeSelectionIndex - 1, -1))\n : (index = this.state.selection.length - 1);\n this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });\n }\n break;\n case 'ArrowRight':\n if (this.state.activeSelectionIndex >= 0) {\n preventDefault = true;\n let index = -1;\n if (this.state.activeSelectionIndex < this.state.selection.length - 1) {\n index = Math.min(this.state.activeSelectionIndex + 1, this.state.selection.length - 1);\n } else if (!this.state.term) {\n index = 0;\n }\n this.patchState({ activeSelectionIndex: index, activeOptionIndex: -1 });\n }\n }\n\n if (preventDefault) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n private get tagTextHelp() {\n return this.tagHint && !this.isTagSelected(this.state.term) ? ' (' + this.tagHint + ')' : '';\n }\n\n private isTagSelected(term: string, selection: { item: Item; render: RenderInfo }[] = this.state.selection) {\n return selection.findIndex(item => item.render.label.toLowerCase() === term.toLowerCase()) >= 0;\n }\n\n private createTag(term: string) {\n if (term.trim().length && !this.isTagSelected(term)) {\n const value = this.value as CatSelectMultipleTaggingValue;\n const tags = value?.tags;\n const tag = { id: `select-${this.id}-tag-${tags?.length ? tags?.length + nextTagUniqueId++ : 0}`, name: term };\n this.select({ item: tag, render: { label: tag.name } });\n }\n this.setTransparentCaret();\n }\n\n private removeTag(label: string) {\n if (this.isTagSelected(label)) {\n const item = this.state.selection.find(item => item.render.label.toLowerCase() === label.toLowerCase());\n item && this.deselect(item.item.id);\n }\n }\n\n private toggleTag(item: { item: Item; render: RenderInfo }) {\n this.isTagSelected(item.render.label) ? this.removeTag(item.render.label) : this.createTag(item.render.label);\n }\n\n private initIds() {\n let ids: string[] = [];\n if (this.value) {\n if (!this.tags) {\n if (this.multiple) {\n ids = this.value as string[];\n } else {\n ids = [this.value as string];\n }\n } else {\n if (this.multiple) {\n const value = this.value as CatSelectMultipleTaggingValue;\n ids = value.ids ? value.ids : [];\n } else {\n const value = this.value as CatSelectTaggingValue;\n ids = value.id ? [value.id] : [];\n }\n }\n }\n return ids;\n }\n\n private initTags() {\n let tags: string[] = [];\n if (this.value) {\n if (this.multiple) {\n const value = this.value as CatSelectMultipleTaggingValue;\n tags = value.tags ? value.tags : [];\n } else {\n const value = this.value as CatSelectTaggingValue;\n tags = value.tag ? [value.tag] : [];\n }\n }\n return tags;\n }\n\n private setTransparentCaret() {\n if (!this.multiple) {\n this.hide();\n this.input?.classList.add('select-input-transparent-caret');\n }\n }\n\n private showErrors() {\n this.errorMap = this.errorMapSrc;\n }\n\n private errorUpdateTimeoutId?: number;\n private showErrorsIfTimeout() {\n const errorUpdate = coerceNumber(this.errorUpdate, null);\n if (errorUpdate !== null) {\n typeof this.errorUpdateTimeoutId === 'number' && window.clearTimeout(this.errorUpdateTimeoutId);\n this.errorUpdateTimeoutId = window.setTimeout(() => this.showErrors(), errorUpdate);\n return true;\n }\n return false;\n }\n\n private showErrorsIfNoFocus() {\n const hasFocus = document.activeElement === this.hostElement || document.activeElement === this.input;\n if (!hasFocus) {\n this.showErrors();\n }\n }\n}\n"],"version":3}
@@ -189,6 +189,71 @@ function computeCoordsFromPlacement(_ref, placement, rtl) {
189
189
  return coords;
190
190
  }
191
191
 
192
+ /**
193
+ * Resolves with an object of overflow side offsets that determine how much the
194
+ * element is overflowing a given clipping boundary on each side.
195
+ * - positive = overflowing the boundary by that number of pixels
196
+ * - negative = how many pixels left before it will overflow
197
+ * - 0 = lies flush with the boundary
198
+ * @see https://floating-ui.com/docs/detectOverflow
199
+ */
200
+ async function detectOverflow(state, options) {
201
+ var _await$platform$isEle;
202
+ if (options === void 0) {
203
+ options = {};
204
+ }
205
+ const {
206
+ x,
207
+ y,
208
+ platform,
209
+ rects,
210
+ elements,
211
+ strategy
212
+ } = state;
213
+ const {
214
+ boundary = 'clippingAncestors',
215
+ rootBoundary = 'viewport',
216
+ elementContext = 'floating',
217
+ altBoundary = false,
218
+ padding = 0
219
+ } = evaluate(options, state);
220
+ const paddingObject = getPaddingObject(padding);
221
+ const altContext = elementContext === 'floating' ? 'reference' : 'floating';
222
+ const element = elements[altBoundary ? altContext : elementContext];
223
+ const clippingClientRect = rectToClientRect(await platform.getClippingRect({
224
+ element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
225
+ boundary,
226
+ rootBoundary,
227
+ strategy
228
+ }));
229
+ const rect = elementContext === 'floating' ? {
230
+ x,
231
+ y,
232
+ width: rects.floating.width,
233
+ height: rects.floating.height
234
+ } : rects.reference;
235
+ const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
236
+ const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
237
+ x: 1,
238
+ y: 1
239
+ } : {
240
+ x: 1,
241
+ y: 1
242
+ };
243
+ const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
244
+ elements,
245
+ rect,
246
+ offsetParent,
247
+ strategy
248
+ }) : rect);
249
+ return {
250
+ top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
251
+ bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
252
+ left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
253
+ right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
254
+ };
255
+ }
256
+
192
257
  /**
193
258
  * Computes the `x` and `y` coordinates that will place the floating element
194
259
  * next to a given reference element.
@@ -218,6 +283,7 @@ const computePosition$1 = async (reference, floating, config) => {
218
283
  let middlewareData = {};
219
284
  let resetCount = 0;
220
285
  for (let i = 0; i < validMiddleware.length; i++) {
286
+ var _platform$detectOverf;
221
287
  const {
222
288
  name,
223
289
  fn
@@ -235,7 +301,10 @@ const computePosition$1 = async (reference, floating, config) => {
235
301
  strategy,
236
302
  middlewareData,
237
303
  rects,
238
- platform,
304
+ platform: {
305
+ ...platform,
306
+ detectOverflow: (_platform$detectOverf = platform.detectOverflow) != null ? _platform$detectOverf : detectOverflow
307
+ },
239
308
  elements: {
240
309
  reference,
241
310
  floating
@@ -280,71 +349,6 @@ const computePosition$1 = async (reference, floating, config) => {
280
349
  };
281
350
  };
282
351
 
283
- /**
284
- * Resolves with an object of overflow side offsets that determine how much the
285
- * element is overflowing a given clipping boundary on each side.
286
- * - positive = overflowing the boundary by that number of pixels
287
- * - negative = how many pixels left before it will overflow
288
- * - 0 = lies flush with the boundary
289
- * @see https://floating-ui.com/docs/detectOverflow
290
- */
291
- async function detectOverflow(state, options) {
292
- var _await$platform$isEle;
293
- if (options === void 0) {
294
- options = {};
295
- }
296
- const {
297
- x,
298
- y,
299
- platform,
300
- rects,
301
- elements,
302
- strategy
303
- } = state;
304
- const {
305
- boundary = 'clippingAncestors',
306
- rootBoundary = 'viewport',
307
- elementContext = 'floating',
308
- altBoundary = false,
309
- padding = 0
310
- } = evaluate(options, state);
311
- const paddingObject = getPaddingObject(padding);
312
- const altContext = elementContext === 'floating' ? 'reference' : 'floating';
313
- const element = elements[altBoundary ? altContext : elementContext];
314
- const clippingClientRect = rectToClientRect(await platform.getClippingRect({
315
- element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
316
- boundary,
317
- rootBoundary,
318
- strategy
319
- }));
320
- const rect = elementContext === 'floating' ? {
321
- x,
322
- y,
323
- width: rects.floating.width,
324
- height: rects.floating.height
325
- } : rects.reference;
326
- const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
327
- const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
328
- x: 1,
329
- y: 1
330
- } : {
331
- x: 1,
332
- y: 1
333
- };
334
- const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
335
- elements,
336
- rect,
337
- offsetParent,
338
- strategy
339
- }) : rect);
340
- return {
341
- top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
342
- bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
343
- left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
344
- right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
345
- };
346
- }
347
-
348
352
  /**
349
353
  * Optimizes the visibility of the floating element by flipping the `placement`
350
354
  * in order to keep it in view when the preferred placement(s) will overflow the
@@ -395,7 +399,7 @@ const flip$1 = function (options) {
395
399
  fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
396
400
  }
397
401
  const placements = [initialPlacement, ...fallbackPlacements];
398
- const overflow = await detectOverflow(state, detectOverflowOptions);
402
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
399
403
  const overflows = [];
400
404
  let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
401
405
  if (checkMainAxis) {
@@ -579,7 +583,8 @@ const shift$1 = function (options) {
579
583
  const {
580
584
  x,
581
585
  y,
582
- placement
586
+ placement,
587
+ platform
583
588
  } = state;
584
589
  const {
585
590
  mainAxis: checkMainAxis = true,
@@ -602,7 +607,7 @@ const shift$1 = function (options) {
602
607
  x,
603
608
  y
604
609
  };
605
- const overflow = await detectOverflow(state, detectOverflowOptions);
610
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
606
611
  const crossAxis = getSideAxis(getSide(placement));
607
612
  const mainAxis = getOppositeAxis(crossAxis);
608
613
  let mainAxisCoord = coords[mainAxis];
@@ -666,7 +671,7 @@ const size$1 = function (options) {
666
671
  apply = () => {},
667
672
  ...detectOverflowOptions
668
673
  } = evaluate(options, state);
669
- const overflow = await detectOverflow(state, detectOverflowOptions);
674
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
670
675
  const side = getSide(placement);
671
676
  const alignment = getAlignment(placement);
672
677
  const isYAxis = getSideAxis(placement) === 'y';