ids-enterprise-wc 1.15.9-patch.12 → 1.15.9-patch.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chunks/{ids-chunk-EGZI5ZV3-full.js → ids-chunk-6YJ4HIUC-full.js} +16 -1
- package/chunks/{ids-chunk-EGZI5ZV3-full.js.map → ids-chunk-6YJ4HIUC-full.js.map} +2 -2
- package/chunks/{ids-chunk-MZTBZCHG-full.js → ids-chunk-CVY6XSRY-full.js} +17 -4
- package/chunks/ids-chunk-CVY6XSRY-full.js.map +7 -0
- package/chunks/{ids-chunk-A5IOTIO6-full.js → ids-chunk-DSWFDICX-full.js} +62 -14
- package/chunks/{ids-chunk-A5IOTIO6-full.js.map → ids-chunk-DSWFDICX-full.js.map} +2 -2
- package/chunks/{ids-chunk-FV5W3K6S-full.js → ids-chunk-O32SEXUF-full.js} +2 -2
- package/chunks/{ids-chunk-5GV6Y3WM-full.js → ids-chunk-OP5EXDDT-full.js} +2 -2
- package/components/ids-accordion/ids-accordion.css +93 -9
- package/components/ids-app-menu/ids-app-menu.css +23 -132
- package/components/ids-button/ids-button.css +392 -43
- package/components/ids-calendar/ids-calendar.css +190 -265
- package/components/ids-checkbox/ids-checkbox.css +7 -580
- package/components/ids-data-grid/ids-data-grid-cell.js +1 -1
- package/components/ids-data-grid/ids-data-grid-editors.js +1 -1
- package/components/ids-data-grid/ids-data-grid-filters.js +2 -2
- package/components/ids-data-grid/ids-data-grid-row.js +2 -2
- package/components/ids-data-grid/ids-data-grid.js +5 -5
- package/components/ids-hierarchy/ids-hierarchy.css +117 -14
- package/components/ids-layout-grid/ids-layout-grid.css +10 -21300
- package/components/ids-list-box/ids-list-box.css +66 -98
- package/components/ids-list-view/ids-list-view.css +15 -112
- package/components/ids-menu/ids-menu.css +335 -11
- package/components/ids-modal/ids-modal.css +23 -94
- package/components/ids-pager/ids-pager.css +3 -37
- package/components/ids-swappable/ids-swappable.css +84 -19
- package/components/ids-tabs/ids-tabs.css +264 -470
- package/components/ids-tag/ids-tag.css +152 -8
- package/components/ids-time-picker/ids-time-picker.css +49 -67
- package/components/ids-toolbar/ids-toolbar.css +122 -12
- package/custom-elements.json +2769 -2749
- package/enterprise-wc.all.iife.js +88 -12
- package/enterprise-wc.all.iife.js.map +2 -2
- package/enterprise-wc.js +5 -5
- package/package.json +1 -1
- package/vscode.html-custom-data.json +1 -1
- package/chunks/ids-chunk-MZTBZCHG-full.js.map +0 -7
- /package/chunks/{ids-chunk-FV5W3K6S-full.js.map → ids-chunk-O32SEXUF-full.js.map} +0 -0
- /package/chunks/{ids-chunk-5GV6Y3WM-full.js.map → ids-chunk-OP5EXDDT-full.js.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/components/ids-data-grid/ids-data-grid-editors.ts"],
|
|
4
|
-
"sourcesContent": ["// eslint-disable-next-line max-classes-per-file\nimport { isValidDate } from '../../utils/ids-date-utils/ids-date-utils';\nimport { stringToBool } from '../../utils/ids-string-utils/ids-string-utils';\nimport IdsCheckbox from '../ids-checkbox/ids-checkbox';\nimport IdsDropdown from '../ids-dropdown/ids-dropdown';\nimport IdsDropdownList from '../ids-dropdown/ids-dropdown-list';\nimport IdsInput from '../ids-input/ids-input';\nimport IdsTriggerField from '../ids-trigger-field/ids-trigger-field';\nimport type IdsButton from '../ids-button/ids-button';\nimport type IdsDataGridCell from './ids-data-grid-cell';\nimport type IdsDatePicker from '../ids-date-picker/ids-date-picker';\nimport type IdsDatePickerPopup from '../ids-date-picker/ids-date-picker-popup';\nimport type IdsLookup from '../ids-lookup/ids-lookup';\nimport type IdsModal from '../ids-modal/ids-modal';\nimport type IdsTimePicker from '../ids-time-picker/ids-time-picker';\nimport type IdsTimePickerPopup from '../ids-time-picker/ids-time-picker-popup';\nimport '../ids-time-picker/ids-time-picker';\nimport '../ids-date-picker/ids-date-picker';\nimport '../ids-lookup/ids-lookup';\nimport { IdsValidationRule } from '../../mixins/ids-validation-mixin/ids-validation-mixin';\nimport { attributes } from '../../core/ids-attributes';\nimport IdsIcon from '../ids-icon/ids-icon';\nimport { getClosest } from '../../utils/ids-dom-utils/ids-dom-utils';\n\nexport interface IdsDataGridEditorOptions {\n /** The type of editor (i.e. text, data, time, dropdown, checkbox, number ect) */\n type: string;\n /** The field in the data set to show */\n field: string;\n /** If true the editor will remain visible */\n inline: boolean;\n}\n\nexport interface IdsDataGridSaveValue {\n // value to be saved in data set\n value?: string | number | boolean | null;\n // (optional) value used for dirty checking\n dirtyCheckValue?: string | number | boolean | null;\n}\n\nexport interface IdsDataGridEditor {\n /** The type of editor (i.e. input, dropdown, checkbox ect) */\n type: string;\n /** The main editor element */\n input?: IdsInput | IdsCheckbox | IdsDropdown | IdsDatePicker | IdsTimePicker | IdsLookup;\n /** Optional Popup interface for some cell types */\n popup?: IdsDatePickerPopup | IdsTimePickerPopup | IdsModal;\n /** The function that invokes and sets values on the input */\n init: (cell?: IdsDataGridCell) => void;\n /** The function that transforms and saved the editor */\n save: (cell?: IdsDataGridCell) => IdsDataGridSaveValue | undefined | null;\n /** The function that tears down all aspects of the editor */\n destroy: (cell?: IdsDataGridCell) => void;\n /** MouseEvent if click was used to edit */\n clickEvent?: MouseEvent;\n /** The function that returns the input-element's value */\n value: () => boolean | number | string;\n /** The function that changes the input-element's value */\n change: (newValue: boolean | number | string) => void;\n}\n\nconst applyEditorSettings = (elem: any, settings?: Record<string, any>) => {\n // eslint-disable-next-line guard-for-in\n for (const setting in settings) {\n elem[setting] = settings[setting];\n }\n};\n\nconst applyEditorValidation = (elem: any, validation?: Partial<IdsValidationRule>) => {\n if (elem?.addValidationRule && validation) {\n validation.type = 'error';\n elem?.addValidationRule?.(validation);\n }\n};\n\nconst applyEditorDropdownFocus = async (editor: IdsDataGridEditor) => {\n const autoOpen = (<HTMLElement> editor.clickEvent?.target)?.classList?.contains('editor-cell-icon');\n if (autoOpen) {\n await editor.input?.open();\n }\n editor.input?.dropdownList?.focus();\n};\n\nconst applyEditorPopupFocus = async (editor: IdsDataGridEditor) => {\n const autoOpen = (<HTMLElement> editor.clickEvent?.target)?.classList?.contains('editor-cell-icon');\n if (autoOpen) {\n await editor.popup?.show();\n editor.popup?.focus();\n } else {\n editor.input?.focus();\n }\n};\n\nconst applyEditorEndCellEdit = (cell: IdsDataGridCell, e: KeyboardEvent) => {\n if (e.code === 'Escape') {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n cell?.cancelCellEdit();\n cell?.focus();\n }\n};\n\nexport class InputEditor implements IdsDataGridEditor {\n /** The type of editor (i.e. input, dropdown, checkbox ect) */\n type = 'input';\n\n /** Holds the Editor */\n input?: IdsInput;\n\n /**\n * Create an input and set the value and focus states\n * @param {IdsDataGridCell} cell the cell element\n */\n init(cell?: IdsDataGridCell) {\n const isInline = cell?.column.editor?.inline;\n this.input = <IdsInput> document.createElement('ids-input');\n this.input.colorVariant = isInline ? 'in-cell' : 'borderless';\n this.input.size = 'full';\n this.input.fieldHeight = String(cell?.dataGrid?.rowHeight) === 'xxs' ? `xs` : String(cell?.dataGrid?.rowHeight);\n this.input.labelState = 'collapsed';\n\n // Clear cell and set value\n const value = cell?.innerText;\n cell!.innerHTML = '';\n cell?.appendChild(this.input as any);\n this.input.addEventListener('keydown', (e) => applyEditorEndCellEdit(cell!, e));\n\n this.input.value = value;\n\n if (this.input instanceof IdsInput && cell) {\n if (!isInline) this.input.shadowRoot?.querySelector('input')?.style.setProperty('width', `${cell.offsetWidth - 5}px`);\n applyEditorSettings(this.input, cell?.column.editor?.editorSettings);\n applyEditorValidation(this.input, cell?.column.editor?.editorValidation);\n }\n this.input.focus();\n }\n\n /* Transform the value */\n save() {\n return { value: this.input?.value };\n }\n\n /* Destroy the editor */\n destroy() {\n this.input = undefined;\n }\n\n value() {\n return this.input?.value ?? '';\n }\n\n change(newValue: boolean | number | string) {\n if (this.input) this.input.value = String(newValue);\n }\n}\n\n/**\n * Password Input Editor for IDS Data Grid\n * Shows masked input with revealed last characters and toggle button\n */\nexport class PasswordInputEditor extends InputEditor {\n type = 'password';\n\n #toggleButton?: IdsIcon;\n\n /**\n * Create a password input and set the value and focus states\n * @param {IdsDataGridCell} cell the cell element\n */\n init(cell?: IdsDataGridCell) {\n super.init(cell);\n const dataIndex = getClosest(cell, 'ids-data-grid-row').getAttribute('data-index');\n const rowData = getClosest(cell, 'ids-data-grid').data[dataIndex];\n const isInline = cell?.column.editor?.inline;\n\n // Make the input password type\n this.input!.type = 'password';\n\n // Create toggle button\n this.#toggleButton = <IdsIcon> document.createElement('ids-icon');\n this.#toggleButton.icon = 'show-item';\n this.#toggleButton.classList.add('editor-cell-icon');\n this.#toggleButton.classList.add('text-mask');\n\n // Clear cell and set value\n const value = rowData[cell!.column.id];\n cell!.innerHTML = '';\n\n // Add input and button to container\n cell?.appendChild(this.input as any);\n cell?.appendChild(this.#toggleButton as any);\n\n // set value to the input\n this.input!.value = value;\n\n // Handle toggle button click\n this.#toggleButton.offEvent('click');\n this.#toggleButton.onEvent('click', this.#toggleButton, () => {\n if (!this.input || !this.#toggleButton) {\n return;\n }\n\n const masked = this.input.type === 'password';\n\n const inputEl = this.input.shadowRoot?.querySelector('input');\n\n // Store current cursor position\n let cursorPos = 0;\n if (inputEl) {\n cursorPos = inputEl.selectionStart || 0;\n }\n\n if (masked) {\n this.input.type = 'text';\n this.#toggleButton.icon = 'hide-item';\n } else {\n this.#toggleButton.icon = 'show-item';\n this.input.type = 'password';\n }\n\n this.input.focus();\n\n // Restore cursor position\n if (inputEl) {\n setTimeout(() => {\n inputEl.setSelectionRange(cursorPos, cursorPos);\n }, 0);\n }\n });\n\n if (this.input instanceof IdsInput && cell) {\n if (!isInline) this.input.shadowRoot?.querySelector('input')?.style.setProperty('width', `100%`);\n applyEditorSettings(this.input, cell?.column.editor?.editorSettings);\n applyEditorValidation(this.input, cell?.column.editor?.editorValidation);\n }\n this.input!.focus();\n }\n\n /**\n * Transform the value for saving\n * @returns {IdsDataGridSaveValue} The value to save\n */\n save() {\n return { value: this.input?.value };\n }\n\n /**\n * Destroy the editor\n */\n destroy() {\n this.input?.removeEventListener('input', () => {});\n this.#toggleButton?.removeEventListener('click', () => {});\n this.input = undefined;\n this.#toggleButton = undefined;\n }\n}\n\nexport class CheckboxEditor implements IdsDataGridEditor {\n /** The type of editor (i.e. input, dropdown, checkbox ect) */\n type = 'checkbox';\n\n /** Holds the Editor */\n input?: IdsCheckbox;\n\n /** MouseEvent if click was used to edit */\n clickEvent?: MouseEvent;\n\n /** Cache original value type for proper saving */\n #originalValue?: any;\n\n /** Cache custom functions from editorSettings */\n #customSave?: (value: any) => void;\n\n #customValidate?: (value: any) => void;\n\n /**\n * Create an input and set the value and focus states\n * @param {IdsDataGridCell} cell the cell element\n */\n init(cell?: IdsDataGridCell) {\n this.input = <IdsCheckbox> document.createElement('ids-checkbox');\n\n const row = getClosest(cell, 'ids-data-grid-row');\n const dataIndex = row?.getAttribute('data-index');\n const grid = getClosest(cell, 'ids-data-grid');\n const rowData = dataIndex !== null && grid?.data ? grid.data[dataIndex] : undefined;\n this.#originalValue = rowData && cell ? rowData[cell.column.id] : undefined;\n\n const settings = cell?.column.editor?.editorSettings;\n this.#customSave = typeof settings?.customSave === 'function' ? settings.customSave as (value: any) => void : undefined;\n this.#customValidate = typeof settings?.customValidate === 'function' ? settings.customValidate as (value: any) => void : undefined;\n\n // Clear cell and set value\n const value = stringToBool(cell?.querySelector('[aria-checked]')?.getAttribute('aria-checked'));\n cell!.innerHTML = '';\n if (!this.clickEvent) this.input.noAnimation = true;\n this.input.checked = this.clickEvent ? !value : value;\n (this.input as any).isDirty = !!this.clickEvent;\n\n applyEditorSettings(this.input, settings);\n\n cell?.appendChild(this.input as any);\n\n requestAnimationFrame(() => {\n cell?.endCellEdit();\n cell?.focus();\n });\n }\n\n /* Transform the value */\n save() {\n const checked = this.input?.checked;\n let value: any = checked;\n\n if (typeof this.#originalValue === 'number') {\n value = checked ? 1 : 0;\n } else if (typeof this.#originalValue === 'string') {\n value = checked ? 'true' : 'false';\n }\n if (this.#customValidate) this.#customValidate(value);\n if (this.#customSave) this.#customSave(value);\n\n return { value };\n }\n\n /* Destroy the editor */\n destroy() {\n this.input?.offEvent('keydown');\n this.input = undefined;\n this.#originalValue = undefined;\n this.#customSave = undefined;\n this.#customValidate = undefined;\n }\n\n value() {\n return !!this.input?.checked;\n }\n\n change(newValue: boolean | number | string) {\n if (this.input) this.input.checked = Boolean(newValue);\n }\n}\n\nexport class DropdownEditor implements IdsDataGridEditor {\n /** The type of editor (i.e. input, dropdown, checkbox ect) */\n type = 'dropdown';\n\n /** Holds the Editor */\n input?: IdsDropdown;\n\n /** Holds the separate Dropdown List */\n list?: IdsDropdownList;\n\n /** Cache cell reference */\n #cell?: IdsDataGridCell;\n\n /** Cache dropdown value */\n #value?: string | null;\n\n /** Callback reference to handle blur event propagation */\n #stopPropagationCb = this.stopPropagation.bind(this);\n\n /** MouseEvent if click was used to edit */\n clickEvent?: MouseEvent;\n\n async init(cell?: IdsDataGridCell): Promise<void> {\n this.#value = cell?.querySelector('[data-value]')?.getAttribute('data-value') ?? cell?.value ?? null;\n const isInline = cell?.column.editor?.inline;\n const settings = { ...cell?.column?.editor?.editorSettings };\n const validation = { ...cell?.column?.editor?.editorValidation };\n let settingsOptions = <any[]>settings?.options ?? [];\n\n this.input = <IdsDropdown>document.createElement('ids-dropdown');\n this.list = <IdsDropdownList>document.createElement('ids-dropdown-list');\n\n // Set combobox if specified in settings\n if (cell?.column?.editor?.editorSettings?.comboBox) {\n this.input.combobox = true;\n }\n\n if (cell?.column?.editor?.editorSettings?.source !== undefined\n && cell?.column?.editor?.editorSettings?.source instanceof Function) {\n cell?.column?.editor?.editorSettings?.source().then(async (result: any) => {\n const newOptions = await result;\n settings.options = newOptions;\n settingsOptions = newOptions;\n this.input?.loadDataSet(settingsOptions);\n });\n }\n\n // apply user settings\n delete settings.options;\n applyEditorSettings(this.input, settings);\n if ([null, false, undefined].includes(this.input.typeahead)) {\n this.input.typeahead = false;\n }\n\n cell!.innerHTML = '';\n cell!.appendChild(this.input);\n this.input.addEventListener('keydown', (e) => applyEditorEndCellEdit(cell!, e));\n\n cell!.appendChild(this.list);\n cell!.classList.add('is-focused');\n this.#cell = cell!;\n\n this.list.insertAdjacentHTML('beforeend', '<ids-list-box></ids-list-box>');\n this.list.setAttribute('trigger-type', 'custom');\n this.input.setAttribute('id', 'ids-dropdown-active-cell');\n this.list.setAttribute('id', 'ids-dropdown-list-active-cell');\n this.input.setAttribute('list', '#ids-dropdown-list-active-cell');\n\n const optionValues = settingsOptions.map((row) => String(row.value).toLowerCase());\n const defaultValue = cell?.defaultValue || this.#value;\n\n if (defaultValue && !optionValues.includes(defaultValue.toLowerCase())) {\n const [firstOption, ...remainingOptions] = settingsOptions;\n const defaultValueOption = { id: defaultValue, label: defaultValue, value: defaultValue };\n if (this.input.comboBox) {\n settingsOptions = [firstOption, ...remainingOptions];\n } else {\n settingsOptions = [firstOption, defaultValueOption, ...remainingOptions];\n }\n }\n\n this.input.loadDataSet(settingsOptions);\n\n this.list.configurePopup();\n this.list.setAttribute('slot', 'menu-container');\n this.list.setAttribute('size', 'full');\n this.list.setAttribute('attachment', '.ids-data-grid-wrapper');\n this.list.appendToTargetParent();\n\n if (this.list?.popup) {\n this.list.popup.alignTarget = this.input;\n this.list.popup.onPlaceEnd = (popupRect: DOMRect, domElement) => {\n if (cell?.dataGrid?.rowHeight === 'xxs') {\n domElement.style.top = `${parseInt(domElement.style.top) - 1}px`;\n }\n\n // Get the current x position of cell\n const cellLeft = cell?.getBoundingClientRect().left || 0;\n // Get the current x position of container\n const containerLeft = domElement.offsetParent?.getBoundingClientRect().left || 0;\n domElement.style.left = `${cellLeft - containerLeft}px`;\n return popupRect;\n };\n }\n\n this.input.value = this.#value ?? '';\n this.input.size = 'full';\n this.input.labelState = 'collapsed';\n this.input.colorVariant = isInline ? 'in-cell' : 'borderless';\n this.input.fieldHeight = String(cell?.dataGrid?.rowHeight);\n const triggerField = this.input.container?.querySelector<IdsTriggerField>('ids-trigger-field');\n if (triggerField) {\n triggerField.focus();\n triggerField.colorVariant = isInline ? 'in-cell' : 'borderless';\n }\n\n if (this.input.comboBox) {\n this.input.dropdownList?.classList.add('is-combobox');\n triggerField?.setAttribute('combobox', 'true');\n triggerField?.setAttribute('autoselect', 'true');\n triggerField?.classList.add('combo-filter');\n if (triggerField?.input) triggerField.input.value = this.input.value;\n }\n\n // apply user validation\n if (validation) {\n applyEditorValidation(this.input.input, validation);\n }\n\n this.#attachEventListeners();\n // Only open if initiated by a click\n if (this.clickEvent && !this.input.comboBox) {\n await this.input?.open(this.input.typeahead);\n }\n if (this.input.comboBox) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n applyEditorDropdownFocus(this);\n }\n }\n\n /**\n * Overrides data grid cell's focusout event handling\n * @param {FocusEvent} evt focus event\n */\n stopPropagation(evt: FocusEvent) {\n const tagName = evt.relatedTarget instanceof HTMLElement ? evt.relatedTarget.tagName : evt.relatedTarget;\n\n if (tagName === 'IDS-DROPDOWN' || tagName === 'IDS-LIST-BOX-OPTION') {\n evt.stopPropagation();\n evt.stopImmediatePropagation();\n }\n }\n\n /**\n * Attach dropdown event handlers\n */\n #attachEventListeners() {\n this.input?.onEvent('change', this.input, (evt) => { this.#value = evt.detail.value; });\n this.input?.onEvent('focusout', this.input, this.#stopPropagationCb);\n if (this.list) {\n this.list.onOutsideClick = (e: MouseEvent) => {\n if (!e.composedPath().includes(this.list!)) {\n this.input?.close();\n }\n };\n this.list.refreshTriggerEvents();\n // Close code is in #startCellEdit\n }\n\n this.input?.onEvent('keydown', this.list, (e) => {\n const key = e.key;\n if (key === 'Enter') {\n e.stopPropagation();\n }\n });\n }\n\n /* Save selected dropdown value */\n save() {\n return {\n value: this.input?.value,\n dirtyCheckValue: this.input?.input?.value\n };\n }\n\n /**\n * Destroy dropdown editor\n */\n destroy(): void {\n this.input?.offEvent('click');\n this.input?.offEvent('change');\n this.input?.offEvent('focusout', this.input, this.#stopPropagationCb);\n this.list?.offEvent('keydown');\n this.list?.remove();\n this.#value = undefined;\n\n this.#cell?.classList?.remove('is-focused');\n this.#cell = undefined;\n }\n\n value() {\n return this.input?.value ?? '';\n }\n\n change(newValue: boolean | number | string) {\n if (this.input) this.input.value = String(newValue);\n }\n}\n\nexport class DatePickerEditor implements IdsDataGridEditor {\n public type = 'datepicker';\n\n public input?: IdsTriggerField;\n\n public popup?: IdsDatePickerPopup;\n\n clickEvent?: MouseEvent;\n\n #value?: Date;\n\n #displayValue = '';\n\n init(cell?: IdsDataGridCell) {\n this.input = this.#buildDatePickerTriggerField(cell!);\n this.popup = this.#buildDatePickerPopup(cell!);\n\n // parse date string\n this.#update(cell!, cell!.originalValue as string);\n\n // insert datepicker component and focus\n cell!.innerHTML = '';\n cell!.appendChild(this.popup);\n cell!.appendChild(this.input);\n this.input.addEventListener('keydown', (e) => applyEditorEndCellEdit(cell!, e));\n\n this.input.value = this.#displayValue;\n this.popup?.syncDateAttributes(this.#value ?? new Date());\n if (this.input) this.input.autoselect = (cell?.column?.editor?.editorSettings?.autoselect as boolean) || true;\n\n const validation = cell?.column.editor?.editorValidation;\n if (validation) {\n applyEditorValidation(this.input, validation);\n }\n\n if (this.popup) {\n const popup = this.popup;\n this.popup.value = this.#displayValue;\n this.popup.attachment = '.ids-data-grid-wrapper';\n this.popup.slot = 'menu-container';\n\n this.popup.appendToTargetParent();\n if (this.popup.popup) {\n this.popup.popup.positionStyle = 'fixed';\n this.popup.popup.popupOpenEventsTarget = document.body;\n this.popup.popup.onOutsideClick = (e: MouseEvent) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n if (!e.composedPath().includes(popup)) { popup.hide(); }\n };\n }\n\n // apply popup required settings\n this.popup.id = `${cell!.column.field}-date-picker-popup`;\n this.popup.triggerType = 'click';\n this.popup.triggerElem = `#${cell!.column.field}-date-picker-btn`;\n this.popup.target = `#${cell!.column.field}-date-picker`;\n this.popup.popup!.align = 'bottom, right';\n this.popup.popup!.arrowTarget = `#${cell!.column.field}-date-picker-btn`;\n this.popup.popup!.y = 16;\n this.popup.refreshTriggerEvents();\n\n // Show button group\n if (this.popup.hasTime()) {\n this.popup.showApply = true;\n const buttonGroup = this.popup.container?.querySelector('.popup-footer');\n buttonGroup?.classList.remove('hidden');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n applyEditorPopupFocus(this);\n }\n\n this.#attachEventListeners(cell);\n }\n\n #buildDatePickerTriggerField(cell: IdsDataGridCell): IdsTriggerField {\n const component = <IdsTriggerField>document.createElement('ids-trigger-field');\n\n // apply user settings\n applyEditorSettings(component, cell?.column.editor?.editorSettings);\n\n component.id = `${cell.column.field}-date-picker`;\n component.fieldHeight = String(cell?.dataGrid?.rowHeight) === 'xxs' ? `xs` : String(cell?.dataGrid?.rowHeight);\n component.labelState = 'collapsed';\n component.colorVariant = 'borderless';\n component.size = 'full';\n component.mask = true;\n\n component.insertAdjacentHTML(\n 'beforeend',\n `<ids-trigger-button\n class=\"ids-trigger-field-slot-trigger-end\"\n id=\"${cell.column.field}-date-picker-btn\"\n slot=\"trigger-end\"\n icon=\"calendar\"></ids-trigger-button>`\n );\n\n return component;\n }\n\n #buildDatePickerPopup(cell: IdsDataGridCell): IdsDatePickerPopup {\n const component = <IdsDatePickerPopup>document.createElement('ids-date-picker-popup');\n // apply user settings\n applyEditorSettings(component, cell?.column.editor?.editorSettings);\n return component;\n }\n\n #update(cell: IdsDataGridCell, dateString: string) {\n const inputDate = cell?.dataGrid.localeAPI.parseDate(\n dateString,\n { dateFormat: cell?.column?.editor?.editorSettings?.format || undefined }\n ) as Date;\n\n if (!dateString || !isValidDate(inputDate)) {\n this.#displayValue = dateString;\n this.#value = undefined;\n return;\n }\n\n // update original date value, preserving time from input if available\n if (this.#value instanceof Date) {\n this.#value.setFullYear(inputDate.getFullYear());\n this.#value.setMonth(inputDate.getMonth());\n this.#value.setDate(inputDate.getDate());\n // Update time components if they differ from default (00:00:00)\n if (inputDate.getHours() !== 0 || inputDate.getMinutes() !== 0\n || inputDate.getSeconds() !== 0 || inputDate.getMilliseconds() !== 0) {\n this.#value.setHours(inputDate.getHours());\n this.#value.setMinutes(inputDate.getMinutes());\n this.#value.setSeconds(inputDate.getSeconds());\n this.#value.setMilliseconds(inputDate.getMilliseconds());\n }\n } else {\n this.#value = inputDate;\n }\n\n this.#displayValue = cell!.dataGrid.localeAPI.formatDate(this.#value, cell.column?.editor?.editorSettings);\n }\n\n #stopPropagation(evt: FocusEvent): void {\n const isOpen = this.input?.popup?.hidden === false;\n if (isOpen) evt.stopImmediatePropagation();\n }\n\n #attachEventListeners(cell?: IdsDataGridCell | undefined) {\n const focusOutHandler = (evt: FocusEvent) => this.#stopPropagation(evt);\n this.input?.onEvent('focusout', this.input, focusOutHandler, { capture: true });\n this.popup?.onEvent('hide', this.popup, () => {\n if (cell!.contains(cell!.dataGrid!.shadowRoot!.activeElement)) return;\n if (!cell!.dataGrid!.contains(document.activeElement)) return;\n if (!cell!.dataGrid!.shadowRoot!.contains(document.activeElement)) return;\n\n cell?.focus();\n });\n }\n\n save(cell?: IdsDataGridCell) {\n this.#update(cell!, cell?.value);\n\n return {\n value: this.#value?.toISOString() ?? '',\n dirtyCheckValue: this.#displayValue\n };\n }\n\n destroy() {\n this.input?.offEvent('focusout');\n this.input?.offEvent('outsideclick.datepicker');\n this.popup?.offEvent('hide');\n this.popup?.remove();\n\n this.#value = undefined;\n this.#displayValue = '';\n }\n\n value() {\n return this.input?.input?.value ?? '';\n }\n\n change(newValue: boolean | number | string) {\n if (this.input?.input) this.input.input.value = String(newValue);\n }\n}\n\nexport class TimePickerEditor implements IdsDataGridEditor {\n type = 'timepicker';\n\n input?: IdsTriggerField;\n\n popup?: IdsTimePickerPopup;\n\n clickEvent?: MouseEvent;\n\n #originalDate?: Date;\n\n init(cell?: IdsDataGridCell | undefined) {\n this.input = this.#buildTimePickerTriggerField(cell!);\n this.popup = this.#buildTimePickerPopup(cell!);\n\n // parse date string\n const dateString = cell!.originalValue as string ?? '';\n const date = cell!.dataGrid!.localeAPI!.parseDate(dateString, undefined, true) as Date;\n const isValid = isValidDate(date);\n this.#originalDate = isValid ? date : undefined;\n this.input.value = isValid ? cell!.dataGrid!.localeAPI!.formatDate(this.#originalDate, { pattern: this.input.format }) : '';\n\n // insert time picker and focus\n cell!.innerHTML = '';\n cell!.appendChild(this.popup);\n cell!.appendChild(this.input);\n this.input.addEventListener('keydown', (e) => applyEditorEndCellEdit(cell!, e));\n\n this.input.autoselect = (cell?.column?.editor?.editorSettings?.autoselect as boolean) || true;\n\n if (this.popup) {\n const popup = this.popup;\n this.popup.attachment = '.ids-data-grid-wrapper';\n this.popup.slot = 'menu-container';\n\n this.popup.appendToTargetParent();\n if (this.popup.popup) {\n this.popup.popup.positionStyle = 'fixed';\n this.popup.popup.popupOpenEventsTarget = document.body;\n this.popup.popup.onOutsideClick = async (e: MouseEvent) => {\n if (!e.composedPath().includes(popup)) { await popup.hide(); }\n };\n }\n\n // apply popup required settings\n this.popup.id = `${cell!.column.field}-time-picker-popup`;\n this.popup.triggerType = 'click';\n this.popup.triggerElem = `#${cell!.column.field}-time-picker-btn`;\n this.popup.target = `#${cell!.column.field}-time-picker`;\n this.popup.popup!.align = 'bottom, right';\n this.popup.popup!.arrowTarget = `#${cell!.column.field}-time-picker-btn`;\n this.popup.popup!.y = 16;\n this.popup.refreshTriggerEvents();\n\n if (this.#originalDate) {\n const hours = this.#originalDate.getHours();\n this.popup.hours = hours > 11 ? hours - 12 : hours;\n this.popup.minutes = this.#originalDate.getMinutes();\n this.popup.seconds = this.#originalDate.getSeconds();\n this.popup.period = hours > 11 ? 'PM' : 'AM';\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n applyEditorPopupFocus(this);\n }\n\n this.#attachEventListeners(cell);\n }\n\n #buildTimePickerTriggerField(cell: IdsDataGridCell): IdsTriggerField {\n const component = <IdsTriggerField>document.createElement('ids-trigger-field');\n\n // apply user settings\n applyEditorSettings(component, cell?.column.editor?.editorSettings);\n\n // apply required settings\n component.id = `${cell.column.field}-time-picker`;\n component.fieldHeight = String(cell?.dataGrid?.rowHeight) === 'xxs' ? `xs` : String(cell?.dataGrid?.rowHeight);\n component.labelState = 'collapsed';\n component.colorVariant = 'borderless';\n component.size = 'full';\n component.mask = true;\n\n component.insertAdjacentHTML(\n 'beforeend',\n `<ids-trigger-button\n class=\"ids-trigger-field-slot-trigger-end\"\n id=\"${cell.column.field}-time-picker-btn\"\n slot=\"trigger-end\"\n icon=\"clock\"></ids-trigger-button>`\n );\n\n return component;\n }\n\n #buildTimePickerPopup(cell: IdsDataGridCell): IdsTimePickerPopup {\n const popup = <IdsTimePickerPopup>document.createElement('ids-time-picker-popup');\n\n // apply user settings\n applyEditorSettings(popup, cell?.column.editor?.editorSettings);\n\n return popup;\n }\n\n #attachEventListeners(cell?: IdsDataGridCell | undefined) {\n this.popup?.onEvent('hide', this.popup, () => {\n if (cell!.contains(cell!.dataGrid!.shadowRoot!.activeElement)) return;\n cell?.focus();\n });\n }\n\n save(cell?: IdsDataGridCell) {\n let date;\n const inputValue = this.input!.value;\n if (inputValue) {\n date = cell!.dataGrid.localeAPI!.parseDate(inputValue, { pattern: this.input!.format }, true) as Date;\n\n // Timepicker formats don't include the \"date\" portion,\n // So this fills in the missing parts from the `#originalDate` if possible to save a valid date value.\n if (this.#originalDate && (\n this.#originalDate.getMonth() !== date?.getMonth()\n || this.#originalDate.getFullYear() !== date?.getFullYear()\n || this.#originalDate.getDate() !== date?.getDate()\n )) {\n date?.setMonth(this.#originalDate.getMonth());\n date?.setFullYear(this.#originalDate.getFullYear());\n date?.setDate(this.#originalDate.getDate());\n }\n }\n\n return {\n value: date && isValidDate(date) ? date?.toISOString() : undefined,\n dirtyCheckValue: inputValue\n };\n }\n\n destroy() {\n this.input?.offEvent('focusout');\n this.input?.detachAllListeners();\n this.input?.remove();\n this.popup?.offEvent('hide');\n this.popup?.detachAllListeners();\n this.popup?.remove();\n this.#originalDate = undefined;\n }\n\n value() {\n return this.input?.value ?? '';\n }\n\n change(newValue: boolean | number | string) {\n if (this.input) this.input.value = String(newValue);\n }\n}\n\nexport class TreeEditor extends InputEditor {\n expandButton?: IdsButton;\n\n fieldContainer?: HTMLElement;\n\n /**\n * Adds extra button element for mimicking the tree formatter's display\n * @param {IdsDataGridCell} cell the cell element\n */\n init(cell?: IdsDataGridCell) {\n super.init(cell);\n\n const buttonHTML = this.#isExpandable(cell!) ? `<ids-button class=\"expand-button\" disabled=\"true\">\n <ids-icon icon=\"plusminus-folder-${this.#isExpanded(cell!) ? 'open' : 'closed'}\"></ids-icon>\n </ids-button>` : '';\n\n cell!.insertAdjacentHTML('afterbegin', `<span class=\"ids-data-grid-tree-container\">\n ${buttonHTML}\n <span class=\"ids-data-grid-tree-field-container\"></span>\n </span>`);\n\n this.expandButton = cell!.querySelector<IdsButton>('.expand-button')!;\n this.fieldContainer = cell!.querySelector<HTMLElement>('.ids-data-grid-tree-field-container')!;\n this.fieldContainer.appendChild(this.input!);\n }\n\n #isExpanded(cell: IdsDataGridCell) {\n const rowData = cell.dataGrid.data[cell.rowIndex];\n if (rowData) return rowData.rowExpanded !== false;\n return false;\n }\n\n #isExpandable(cell: IdsDataGridCell) {\n const rowData = cell.dataGrid.data[cell.rowIndex];\n if (rowData && Array.isArray(rowData.children)) {\n return rowData.children.length > 0;\n }\n return false;\n }\n\n destroy() {\n super.destroy();\n this.expandButton?.remove();\n this.fieldContainer?.remove();\n this.expandButton = undefined;\n this.fieldContainer = undefined;\n }\n}\n\nexport class LookupEditor implements IdsDataGridEditor {\n type = 'lookup';\n\n input?: IdsLookup;\n\n popup?: IdsModal;\n\n clickEvent?: MouseEvent;\n\n /**\n * Create an input and set the value and focus states\n * @param {IdsDataGridCell} cell the cell element\n */\n init(cell?: IdsDataGridCell) {\n const isInline = cell?.column.editor?.inline;\n this.input = <IdsLookup>document.createElement('ids-lookup');\n this.input.size = isInline ? 'full' : '';\n\n this.input.clearable = true;\n this.input.labelState = 'collapsed';\n\n // Clear cell and set value\n const value = cell?.innerText ?? '';\n cell!.innerHTML = '';\n cell?.appendChild(this.input as any);\n this.input.addEventListener('keydown', (e) => applyEditorEndCellEdit(cell!, e));\n\n this.input.value = value;\n\n this.popup = this.input.modal ?? undefined;\n\n applyEditorSettings(this.input, { ...cell?.column.editor?.editorSettings });\n applyEditorValidation(this.input?.input, cell?.column.editor?.editorValidation);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n applyEditorPopupFocus(this);\n\n if (this.input?.triggerField) {\n this.input.triggerField.labelState = 'collapsed';\n this.input.triggerField.colorVariant = isInline ? 'in-cell' : 'borderless';\n this.input.triggerField.focus();\n this.input.triggerField.offEvent('paste', this.input.triggerField.input);\n this.input.triggerField.onEvent('paste', this.input.triggerField.input, (e) => {\n e.stopPropagation();\n });\n }\n\n const rowHeight = String(cell?.dataGrid?.rowHeight);\n\n // TODO: these are hacks... we should fix styles for xxs and not cheat by giving them styles for xs\n this.input.fieldHeight = rowHeight === 'xxs' ? `xs` : rowHeight;\n this.input.triggerField?.toggleAttribute(attributes.NO_MARGINS, rowHeight !== 'xxs');\n this.input.triggerField?.clearableButton?.toggleAttribute(attributes.NO_MARGINS, rowHeight !== 'xxs');\n this.input.triggerButton?.toggleAttribute(attributes.NO_MARGINS, rowHeight !== 'xxs');\n }\n\n value() {\n return this.input?.value ?? '';\n }\n\n change(newValue: boolean | number | string) {\n if (this.input) this.input.value = String(newValue);\n }\n\n /* Save selected dropdown value */\n save(): IdsDataGridSaveValue | undefined | null {\n return {\n value: this.input?.value,\n dirtyCheckValue: this.input?.input?.value\n };\n }\n\n /* Destroy the editor */\n destroy() {\n this.input?.offEvent('keydown');\n this.input?.offEvent('change');\n this.input = undefined;\n }\n}\n\nexport const editors: Array<{ type: string, editor?: IdsDataGridEditor }> = [];\n\neditors.push({\n type: 'input',\n editor: new InputEditor()\n});\n\neditors.push({\n type: 'password',\n editor: new PasswordInputEditor()\n});\n\neditors.push({\n type: 'checkbox',\n editor: new CheckboxEditor()\n});\n\neditors.push({\n type: 'dropdown',\n editor: new DropdownEditor()\n});\n\neditors.push({\n type: 'datepicker',\n editor: new DatePickerEditor()\n});\n\neditors.push({\n type: 'timepicker',\n editor: new TimePickerEditor()\n});\n\neditors.push({\n type: 'tree',\n editor: new TreeEditor()\n});\n\neditors.push({\n type: 'lookup',\n editor: new LookupEditor()\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
File without changes
|
|
File without changes
|