@sme.up/ketchup 11.0.0-SNAPSHOT-20241126094930 → 11.0.0-SNAPSHOT-20241126095140

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 +0,0 @@
1
- {"version":3,"names":["KupInputPanelLayoutSectionType","KupInputPanelProps","CHAR_WIDTH","ROW_HEIGHT","getAbsoluteWidth","length","getAbsoluteHeight","height","getAbsoluteTop","row","getAbsoluteLeft","col","kupInputPanelCss","KupInputPanelStyle0","dom","document","documentElement","KupInputPanel","_KupInputPanel_kupManager","set","this","kupManagerInstance","_KupInputPanel_formRef","_KupInputPanel_optionsAdapterMap","Map","__classPrivateFieldGet","_KupInputPanel_instances","_KupInputPanel_treeOptionsNodeAdapter","bind","_KupInputPanel_dataTreeOptionsChildrenAdapter","_KupInputPanel_tableOptionsAdapter","_KupInputPanel_originalData","_KupInputPanel_eventNames","FCellTypes","AUTOCOMPLETE","MULTI_AUTOCOMPLETE","COMBOBOX","MULTI_COMBOBOX","_KupInputPanel_eventBlurNames","FCellShapes","CHIP","DATE","TIME","_KupInputPanel_listeners","_KupInputPanel_cellTypeComponents","_KupInputPanel_cellCustomRender","BUTTON_LIST","_KupInputPanel_renderButton","EDITOR","_KupInputPanel_renderEditor","LABEL","_KupInputPanel_renderLabel","TABLE","_KupInputPanel_renderDataTable","_KupInputPanel_sectionRenderMap","TAB","_KupInputPanel_renderSectionTab","_KupInputPanel_keysShortcut","onDataChanged","__classPrivateFieldSet","structuredClone","data","map","event","handler","rootElement","removeEventListener","key","keysBinding","unregister","_KupInputPanel_mapCells","call","getProps","descriptions","refresh","forceUpdate","setProps","props","componentWillLoad","debug","logLoad","language","register","theme","componentDidLoad","_KupInputPanel_didLoadInteractables","kupReady","emit","comp","id","componentWillRender","logRender","componentDidRender","root","shadowRoot","fs","querySelectorAll","index","FTextFieldMDC","render","isEmptyData","Boolean","inputPanelCells","inputPanelContent","h","translate","KupLanguageGeneric","EMPTY_DATA","inputPanelCell","_KupInputPanel_renderRow","Host","setKupStyle","componentWrapperId","disconnectedCallback","reduce","cell","cells","find","column","name","layout","horizontal","styleObj","rowContent","_a","sections","_KupInputPanel_renderCell","absolute","_KupInputPanel_renderAbsoluteLayout","maxAbsoluteRow","Math","max","flatMap","sec","content","cont","absoluteRow","sectionsType","hasDim","some","dim","display","gridTemplateColumns","join","dashboardMode","gridTemplateRows","_KupInputPanel_renderGridLayout","inputPanelClass","buttonPosition","classObj","commandsClass","class","ref","el","onSubmit","e","preventDefault","submitCb","value","before","Object","assign","after","_KupInputPanel_reverseMapCells","onContextMenu","style","FButton","buttonType","label","CONFIRM","wrapperClass","invisible","hiddenSubmitButton","inputPanelCommands","customRender","get","shape","undefined","cellProps","component","editable","renderKup","setSizes","_KupInputPanel_getLabelComponent","title","FCell","cellId","icon","_KupInputPanel_renderDropDownButton","_KupInputPanel_getFunctionOnClickBTN","detail","node","edtCell","htmlValue","replace","addEventListener","push","isReadOnly","isEditable","showToolbar","editableData","showGroups","showFilters","showFooter","cellType","ketchup","getType","RADIO","sectionRender","section","_KupInputPanel_renderSection","_KupInputPanel_renderAbsoluteSection","customLabelRender","gap","innerSection","gridCols","gridRows","_b","field","_KupInputPanel_renderField","sectionContent","FTypography","type","FTypographyType","HEADING1","_KupInputPanel_renderAbsoluteField","absoluteWidth","width","absoluteHeight","top","left","absoluteColumn","sectionStyle","position","overflow","_KupInputPanel_extractContentIds","ids","forEach","item","concat","tabSelected","tabNodes","i","cellIdsInSection","hasError","cellData","includes","error","active","danger","sectionId","tabCustomStyle","l","customStyle","fieldCell","colSpan","colStart","colEnd","rowSpan","rowStart","rowEnd","absoluteLength","sizing","_KupInputPanel_mapCommands","setup","commands","commandObj","children","showIcons","c","_KupInputPanel_commandAdapter","buttonCell","flat","_c","rows","inpuPanelCells","_d","columns","filter","visible","mappedCell","_KupInputPanel_setData","slotData","_KupInputPanel_slotData","componentQuery","querySelector","setValue","defaultProps","_KupInputPanel_mapData","disabled","noDataProps","__rest","_KupInputPanel_deepObjectsMerge","target","source","Array","isArray","curr","updatedCells","keys","cellState","JSON","stringify","_KupInputPanel_getTableUpdatedCell","obj","options","fieldLabel","currentValue","dataAdapterMap","_KupInputPanel_CMBandACPAdapter","_KupInputPanel_BTNAdapter","CHART","_KupInputPanel_GRAAdapter","_KupInputPanel_CHIAdapter","CHECKBOX","_KupInputPanel_CHKAdapter","COLOR_PICKER","_KupInputPanel_CLPAdapter","_KupInputPanel_EDTAdapter","NUMBER","_KupInputPanel_NumberAdapter","_KupInputPanel_DateAdapter","OBJECT","_KupInputPanel_ObjectAdapter","_KupInputPanel_RADAdapter","STRING","_KupInputPanel_ITXAdapter","SWITCH","_KupInputPanel_SWTAdapter","_KupInputPanel_DataTableAdapter","_KupInputPanel_TimeAdapter","adapter","trailingIcon","fullWidth","showDropDownIcon","_options","_fieldLabel","inputSettings","checkObject","checkValueOnExit","mandatory","_KupInputPanel_checkOnBlurEvent","CHIAdapter","sizeX","offlineMode","sizeY","_currentValue","onClick","keyShortcut","fun","rawOptions","configCMandACP","CMBandACPAdapter","evNames","evName","_KupInputPanel_getAutocompleteEventCallback","_KupInputPanel_optionsTreeComboAdapter","CHKAdapter","onBlur","_KupInputPanel_checkOnBlurProp","initialValue","RADAdapter","SWTAdapter","_rawOptions","_value","parse","logMessage","KupDebugCategory","WARNING","ERROR","tableValue","updated","editableColsId","beforeTableValue","updatedRow","colId","changed","option","selected","child","codice","testo","k","fields","open","optionsHandler","inputValue","then","async","currCell","_KupInputPanel_getCell","_KupInputPanel_setCellError","REQUIRED_VALUE","valid","checkValidObjCallback","currentState","INVALID_VALUE","_KupInputPanel_areValuesUpdated","checkValidValueCallback","customButtonClickHandler","_KupInputPanel_getEventDetails","path","originalEvent","fcell","p","classList","contains","columnName","anchor","_KupInputPanel_contextMenuHandler","eventPath","getEventPath","interact","managedElements","add","tapCb","button","details","kupDataTableContextMenu","on","KupPointerEventTypes","TAP"],"sources":["src/components/kup-input-panel/kup-input-panel-declarations.ts","src/components/kup-input-panel/kup-input-panel-utils.ts","src/components/kup-input-panel/kup-input-panel.scss?tag=kup-input-panel&encapsulation=shadow","src/components/kup-input-panel/kup-input-panel.tsx"],"sourcesContent":["import { GenericObject, KupEventPayload } from '../../components';\nimport {\n KupDataCell,\n KupDataColumn,\n KupDataCommand,\n} from '../../managers/kup-data/kup-data-declarations';\nimport { KupObj } from '../../managers/kup-objects/kup-objects-declarations';\n\nexport interface KupInputPanelSubmit {\n value: KupInputPanelSubmitValue;\n cell?: string;\n}\nexport interface KupInputPanelSubmitValue {\n after: KupInputPanelData;\n before: KupInputPanelData;\n}\n\nexport interface KupInputPanelData {\n columns?: KupDataColumn[];\n rows?: KupInputPanelRow[];\n actions?: KupInputPanelAction[];\n setup?: {\n commands?: Array<KupDataCommand>;\n };\n}\n\nexport interface KupInputPanelAction {\n type?: string;\n fun?: string;\n}\n\nexport interface KupInputPanelColumn {\n name: string;\n title: string;\n visible?: boolean;\n}\n\nexport interface KupInputPanelRow {\n cells?: KupInputPanelRowCells;\n layout?: KupInputPanelLayout;\n}\n\nexport interface KupInputPanelRowCells {\n [key: string]: KupInputPanelCell;\n}\n\nexport interface KupInputPanelCell extends KupDataCell {\n options?: GenericObject | GenericObject[];\n editable?: boolean;\n mandatory?: boolean;\n inputSettings?: GenericObject;\n fun?: string;\n}\n\nexport interface KupInputPanelCellOptions {\n id: string;\n label: string;\n}\n\nexport interface KupInputPanelLayout {\n horizontal?: boolean;\n absolute?: boolean;\n sections?: KupInputPanelLayoutSection[];\n sectionsType?: KupInputPanelLayoutSectionType;\n}\n\nexport enum KupInputPanelLayoutSectionType {\n TAB = 'tab',\n}\n\nexport interface KupInputPanelLayoutSection {\n id?: string;\n title?: string;\n icon?: string;\n content?: KupInputPanelLayoutField[];\n sections?: KupInputPanelLayoutSection[];\n dim?: string;\n horizontal?: boolean;\n gridCols?: number;\n gridRows?: number;\n // Gap is in rem\n gap?: number;\n sectionsType?: KupInputPanelLayoutSectionType;\n // absolute Attributes\n absoluteColumn?: number;\n absoluteWidth?: number;\n absoluteRow?: number;\n absoluteHeight?: number;\n}\n\nexport interface KupInputPanelLayoutField {\n id: string;\n // Span is referred to start\n colSpan?: number;\n colStart?: number;\n colEnd?: number;\n // Span is referred to start\n rowSpan?: number;\n rowStart?: number;\n rowEnd?: number;\n // absolute Attributes\n absoluteColumn?: number;\n absoluteRow?: number;\n absoluteLength?: number;\n}\n\nexport type DataAdapterFn = (\n options: GenericObject,\n fieldLabel: string,\n currentValue: string,\n cell?: KupInputPanelCell,\n id?: string\n) => Object;\n\nexport type InputPanelCells = {\n cells: { cell: KupDataCell; column: KupDataColumn }[];\n row?: KupInputPanelRow;\n};\n\nexport type InputPanelEvent = {\n state: { cell: KupDataCell; column: KupDataColumn }[];\n data: {\n field: string;\n value: number | string | object;\n };\n};\n\nexport type InputPanelOptionsHandler = (\n fun: string,\n inputValue: string,\n currentState: KupInputPanelData,\n cellId: string\n) => Promise<GenericObject>;\n\nexport type InputPanelCheckValidObjCallback = (event: {\n obj: KupObj;\n currentState: KupInputPanelData;\n fun?: string;\n}) => Promise<ValidCheckObjResponse>;\n\nexport interface ValidCheckObjResponse {\n valid: boolean;\n}\n\nexport type InputPanelButtonClickHandler = (event: {\n fun: string;\n cellId: string;\n currentState: KupInputPanelData;\n}) => void;\n\nexport type InputPanelCheckValidValueCallback = (\n currentState: KupInputPanelSubmitValue,\n cellId: string\n) => void;\n\nexport enum KupInputPanelProps {\n customStyle = 'Custom style of the component.',\n data = 'Actual data of the input panel.',\n hiddenSubmitButton = 'Creates a hidden submit button in order to submit the form with enter.',\n submitCb = 'Sets the callback function on submit form',\n optionsHandler = 'Sets the callback function to recieve options',\n buttonPosition = 'Manage the position of the buttons related to the input panel content. It is an enumeration',\n}\n\nexport interface KupInputPanelEventHandlerDetails {\n anchor: HTMLElement;\n cell: KupDataCell;\n column: KupDataColumn;\n originalEvent: PointerEvent;\n}\n\nexport interface KupInputPanelClickEventPayload extends KupEventPayload {\n details: KupInputPanelEventHandlerDetails;\n}\n","export const CHAR_WIDTH = 12;\nexport const ROW_HEIGHT = 22;\n\nexport const getAbsoluteWidth = (length: number) => {\n if (length == 0) {\n return CHAR_WIDTH / 2;\n }\n\n if (!length) {\n return null;\n }\n\n if (length === 1) {\n return 1.5 * CHAR_WIDTH;\n }\n\n return length * CHAR_WIDTH;\n};\n\nexport const getAbsoluteHeight = (height: number) => {\n if (!height) {\n return null;\n }\n\n return height * ROW_HEIGHT;\n};\n\nexport const getAbsoluteTop = (row: number) => {\n if (!row) {\n return null;\n }\n\n return (row - 1) * ROW_HEIGHT;\n};\n\nexport const getAbsoluteLeft = (col: number) => {\n if (!col) {\n return null;\n }\n\n return col * CHAR_WIDTH;\n};\n","/**\n* @prop --kup-input-panel-background-color: Sets background of the component.\n* @prop --kup-input-panel-color: Sets text color of the component.\n* @prop --kup-input-panel-font-family: Sets font family of the component.\n* @prop --kup-input-panel-font-size: Sets font size of the component.\n* @prop --kup-input-panel-label-alignment: Sets the text alignment of labels.\n* @prop --kup-input-panel-label-width: Sets the width of labels.\n* @prop --kup-input-panel-padding: Sets the padding of the input panel.\n*/\n\n:host {\n --kup-fcell-width: fit-content;\n --kup_input_panel_background_color: var(\n --kup-input-panel-background-color,\n var(--kup-layer-0)\n );\n --kup_input_panel_color: var(\n --kup-input-panel-color,\n var(--kup-text-secondary)\n );\n --kup_input_panel_font_family: var(\n --kup-input-panel-font-family,\n var(--kup-font-family)\n );\n --kup_input_panel_font_size: var(\n --kup-input-panel-font-size,\n var(--kup-font-size)\n );\n --kup_input_panel_label_alignment: var(--kup-input-panel-label-alignment);\n --kup_input_panel_label_width: var(--kup-input-panel-label-width);\n --kup_input_panel_padding: var(--kup-input-panel-padding, 1em 0);\n --kup_input_panel_padding--inline: var(--kup-input-panel-padding--inline, 0);\n\n .input-panel {\n background: var(--kup_input_panel_background_color);\n color: var(--kup_input_panel_color);\n display: flex;\n flex-grow: 1;\n overflow: auto;\n padding: var(--kup_input_panel_padding);\n position: relative;\n gap: 1rem;\n\n &__commands {\n display: flex;\n gap: 2rem;\n &.input-panel__commands--right {\n flex-shrink: 0;\n overflow: hidden;\n }\n }\n\n &--inline {\n flex: 1;\n overflow-x: auto;\n white-space: nowrap;\n padding: var(--kup_input_panel_padding--inline);\n }\n\n &--column {\n flex-direction: column;\n }\n\n &__section_label_container {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n }\n\n &__section {\n display: grid;\n min-width: 0;\n\n .f-cell__content {\n > * {\n width: 100%;\n }\n }\n }\n\n &__horizontal-section {\n display: inline-grid;\n }\n\n &__section-inline {\n display: inline-block;\n width: max-content;\n }\n\n .f-cell .f-checkbox .checkbox .checkbox__native-control {\n height: 40px;\n width: 40px;\n }\n\n &__label_container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n > .f-cell {\n flex: 1;\n }\n }\n\n &__tabs_container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 2rem;\n }\n\n .f-cell.number-cell {\n .f-cell__content {\n --kup-textfield-font-family: var(--kup_cell_font_family);\n\n font-family: var(--kup_cell_font_family);\n }\n }\n\n .input-panel-label {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n\n &--absolute {\n justify-content: flex-end;\n\n .input-panel-label {\n justify-content: start;\n }\n\n .mdc-text-field {\n height: unset !important;\n }\n }\n }\n .input-panel-form--inline {\n display: flex;\n align-items: end;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n State,\n VNode,\n Watch,\n forceUpdate,\n h,\n} from '@stencil/core';\nimport {\n KupAutocompleteEventPayload,\n KupComboboxIconClickEventPayload,\n KupDataCell,\n KupDataColumn,\n KupDataTableDataset,\n KupDataTableRow,\n KupDropdownButtonEventPayload,\n KupEditorEventPayload,\n KupTabBarEventPayload,\n KupTabBarNode,\n} from '../../components';\nimport { FButton } from '../../f-components/f-button/f-button';\nimport { FCell } from '../../f-components/f-cell/f-cell';\nimport {\n FCellProps,\n FCellShapes,\n FCellTypes,\n} from '../../f-components/f-cell/f-cell-declarations';\nimport { FTextFieldMDC } from '../../f-components/f-text-field/f-text-field-mdc';\nimport { KupDebugCategory } from '../../managers/kup-debug/kup-debug-declarations';\nimport { KupLanguageGeneric } from '../../managers/kup-language/kup-language-declarations';\nimport {\n KupManager,\n kupManagerInstance,\n} from '../../managers/kup-manager/kup-manager';\nimport { KupDom } from '../../managers/kup-manager/kup-manager-declarations';\nimport { FTypographyType } from '../../f-components/f-typography/f-typography-declarations';\nimport {\n GenericObject,\n KupComponent,\n KupComponentSizing,\n KupEventPayload,\n} from '../../types/GenericTypes';\nimport {\n CHIAdapter,\n CHKAdapter,\n CMBandACPAdapter,\n getColumnByName,\n RADAdapter,\n SWTAdapter,\n} from '../../utils/cell-utils';\nimport { getProps, setProps } from '../../utils/utils';\nimport { componentWrapperId } from '../../variables/GenericVariables';\nimport {\n DataAdapterFn,\n InputPanelButtonClickHandler,\n InputPanelCells,\n InputPanelCheckValidObjCallback,\n InputPanelCheckValidValueCallback,\n InputPanelOptionsHandler,\n KupInputPanelCell,\n KupInputPanelClickEventPayload,\n KupInputPanelColumn,\n KupInputPanelData,\n KupInputPanelEventHandlerDetails,\n KupInputPanelLayout,\n KupInputPanelLayoutField,\n KupInputPanelLayoutSection,\n KupInputPanelLayoutSectionType,\n KupInputPanelProps,\n KupInputPanelRow,\n KupInputPanelSubmit,\n} from './kup-input-panel-declarations';\nimport {\n getAbsoluteHeight,\n getAbsoluteLeft,\n getAbsoluteTop,\n getAbsoluteWidth,\n ROW_HEIGHT,\n} from './kup-input-panel-utils';\nimport { FTypography } from '../../f-components/f-typography/f-typography';\nimport { KupPointerEventTypes } from '../../managers/kup-interact/kup-interact-declarations';\n\nconst dom: KupDom = document.documentElement as KupDom;\n@Component({\n tag: 'kup-input-panel',\n styleUrl: 'kup-input-panel.scss',\n shadow: true,\n})\nexport class KupInputPanel {\n /**\n * References the root HTML element of the component (<kup-form>).\n */\n @Element() rootElement: HTMLElement;\n\n //#region PROPS\n /*-------------------------------------------------*/\n /* P r o p s */\n /*-------------------------------------------------*/\n\n /**\n * Custom style of the component.\n * @default \"\"\n * @see https://smeup.github.io/ketchup/#/customization\n */\n @Prop() customStyle: string = '';\n\n /**\n * Actual data of the form.\n * @default null\n */\n @Prop() data: KupInputPanelData = null;\n\n /**\n * Creates a hidden submit button in order to submit the form with enter.\n * @default false\n */\n @Prop() hiddenSubmitButton: boolean = false;\n\n /**\n * Select the position of the buttons related to the input panel\n * @default \"BOTTOM\"\n */\n @Prop() buttonPosition: 'CENTER' | 'LEFT' | 'BOTTOM' | 'RIGHT' | 'TOP';\n\n /**\n * Sets the callback function on submit form\n * @default null\n */\n @Prop() submitCb: (e: KupInputPanelSubmit) => unknown = null;\n\n /**\n * Sets the callback function on loading options via FUN\n * @default null\n */\n @Prop() optionsHandler: InputPanelOptionsHandler = null;\n\n /**\n * Sets the handler to use when click on custom buttons\n * @default null\n */\n @Prop() customButtonClickHandler?: InputPanelButtonClickHandler = null;\n\n /**\n * Sets the callback for valid the object when cell checkObject is true\n * @default null\n */\n @Prop() checkValidObjCallback?: InputPanelCheckValidObjCallback = null;\n\n /**\n * Sets the callback for valid the object when cell checkObject is true\n * @default null\n */\n @Prop() checkValidValueCallback?: InputPanelCheckValidValueCallback = null;\n //#endregion\n\n /**\n * Sets verical layout if dashboardMode is true\n * @default false\n */\n @Prop() dashboardMode: boolean = false;\n //#endregion\n\n //#region STATES\n /*-------------------------------------------------*/\n /* S t a t e s */\n /*-------------------------------------------------*/\n\n /**\n * Values to send as props to FCell\n * @default []\n */\n @State() private inputPanelCells: InputPanelCells[] = [];\n\n /**\n * Values to send as props to FCell\n * @default []\n */\n @State() private inputPanelCommands: VNode[] = [];\n\n /**\n * Id of selected tab if exists\n * @default null\n */\n @State() private tabSelected: string = null;\n //#endregion\n\n //#region VARIABLES\n /*-------------------------------------------------*/\n /* I n t e r n a l V a r i a b l e s */\n /*-------------------------------------------------*/\n\n #kupManager: KupManager = kupManagerInstance();\n\n #formRef: HTMLFormElement;\n\n #optionsAdapterMap = new Map<\n string,\n (options: any, currentValue: string) => GenericObject[]\n >([\n ['SmeupTreeNode', this.#treeOptionsNodeAdapter.bind(this)],\n ['SmeupDataTree', this.#dataTreeOptionsChildrenAdapter.bind(this)],\n ['SmeupTable', this.#tableOptionsAdapter.bind(this)],\n ['SmeupDataTable', this.#tableOptionsAdapter.bind(this)],\n ]);\n\n #originalData: KupInputPanelData = null;\n\n #eventNames = new Map<FCellTypes, string[]>([\n [\n FCellTypes.AUTOCOMPLETE,\n ['kup-autocomplete-input', 'kup-autocomplete-iconclick'],\n ],\n [\n FCellTypes.MULTI_AUTOCOMPLETE,\n ['kup-autocomplete-input', 'kup-autocomplete-iconclick'],\n ],\n [FCellTypes.COMBOBOX, ['kup-combobox-iconclick', 'kup-combobox-blur']],\n [FCellTypes.MULTI_COMBOBOX, ['kup-combobox-iconclick']],\n ]);\n\n #eventBlurNames = new Map<FCellShapes, string>([\n [FCellShapes.AUTOCOMPLETE, 'kup-autocomplete-blur'],\n [FCellShapes.CHIP, 'kup-textfield-blur'],\n [FCellShapes.COMBOBOX, 'kup-combobox-blur'],\n [FCellShapes.DATE, 'kup-datepicker-blur'],\n [FCellShapes.MULTI_AUTOCOMPLETE, 'kup-autocomplete-blur'],\n [FCellShapes.MULTI_COMBOBOX, 'kup-combobox-blur'],\n [FCellShapes.TIME, 'kup-timepicker-blur'],\n ]);\n\n #listeners: { event: string; handler: (e) => void }[] = [];\n #cellTypeComponents: Map<FCellTypes, string> = new Map<FCellTypes, string>([\n [FCellTypes.DATE, 'kup-date-picker'],\n [FCellTypes.TIME, 'kup-time-picker'],\n ]);\n #cellCustomRender: Map<\n FCellShapes,\n (cell: KupDataCell, cellId: string) => any\n > = new Map<FCellShapes, (cell: KupDataCell, cellId: string) => any>([\n [FCellShapes.BUTTON_LIST, this.#renderButton.bind(this)],\n [FCellShapes.EDITOR, this.#renderEditor.bind(this)],\n [FCellShapes.LABEL, this.#renderLabel.bind(this)],\n [FCellShapes.TABLE, this.#renderDataTable.bind(this)],\n ]);\n #sectionRenderMap: Map<\n KupInputPanelLayoutSectionType,\n (cells: InputPanelCells, sections: KupInputPanelLayoutSection[]) => any\n > = new Map<\n KupInputPanelLayoutSectionType,\n (cells: InputPanelCells, sections: KupInputPanelLayoutSection[]) => any\n >([\n [KupInputPanelLayoutSectionType.TAB, this.#renderSectionTab.bind(this)],\n ]);\n #keysShortcut: string[] = [];\n //#endregion\n\n //#region WATCHERS\n /*-------------------------------------------------*/\n /* W a t c h e r s */\n /*-------------------------------------------------*/\n\n @Watch('data')\n onDataChanged() {\n this.#originalData = structuredClone(this.data);\n if (this.#listeners.length) {\n this.#listeners.map(({ event, handler }) => {\n this.rootElement.removeEventListener(event, handler);\n });\n this.#listeners = [];\n }\n\n if (this.#keysShortcut.length) {\n this.#keysShortcut.map((key) => {\n this.#kupManager.keysBinding.unregister(key);\n });\n this.#keysShortcut = [];\n }\n if (this.data) {\n this.#mapCells(this.data);\n }\n }\n //#endregion\n\n //#region PUBLIC METHODS\n /*-------------------------------------------------*/\n /* P u b l i c M e t h o d s */\n /*-------------------------------------------------*/\n\n /**\n * Used to retrieve component's props values.\n * @param {boolean} descriptions - When provided and true, the result will be the list of props with their description.\n * @returns {Promise<GenericObject>} List of props as object, each key will be a prop.\n */\n @Method()\n async getProps(descriptions?: boolean): Promise<GenericObject> {\n return getProps(this, KupInputPanelProps, descriptions);\n }\n /**\n * This method is used to trigger a new render of the component.\n */\n @Method()\n async refresh(): Promise<void> {\n forceUpdate(this);\n }\n /**\n * Sets the props to the component.\n * @param {GenericObject} props - Object containing props that will be set to the component.\n */\n @Method()\n async setProps(props: GenericObject): Promise<void> {\n setProps(this, KupInputPanelProps, props);\n }\n //#endregion\n\n //#region EVENTS\n /*-------------------------------------------------*/\n /* Events */\n /*-------------------------------------------------*/\n\n /**\n * When component load is complete\n */\n @Event({\n eventName: 'kup-input-panel-ready',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupReady: EventEmitter<KupEventPayload>;\n\n /**\n * Generic right click event on input panel.\n */\n @Event({\n eventName: 'kup-inputpanel-contextmenu',\n composed: true,\n cancelable: false,\n bubbles: true,\n })\n kupDataTableContextMenu: EventEmitter<KupInputPanelClickEventPayload>;\n //#endregion\n\n //#region PRIVATE METHODS\n /*-------------------------------------------------*/\n /* P r i v a t e M e t h o d s */\n /*-------------------------------------------------*/\n\n #getCell(id: string) {\n return this.inputPanelCells.reduce<KupDataCell>((cell, { cells }) => {\n if (!cell) {\n return cells.find(({ column }) => column.name === id).cell;\n }\n return cell;\n }, null);\n }\n\n #renderRow(inputPanelCell: InputPanelCells) {\n const layout = inputPanelCell.row.layout;\n\n const horizontal = layout?.horizontal || false;\n const styleObj: GenericObject = {};\n\n let rowContent: VNode[];\n\n if (!layout?.sections?.length) {\n rowContent = inputPanelCell.cells.map((cell) =>\n this.#renderCell(cell.cell, inputPanelCell.row, cell.column)\n );\n } else {\n if (layout.absolute) {\n rowContent = this.#renderAbsoluteLayout(inputPanelCell, layout);\n const maxAbsoluteRow = Math.max(\n ...layout.sections.flatMap((sec) =>\n sec.content.map((cont) => cont.absoluteRow || 0)\n )\n );\n styleObj.height = `${maxAbsoluteRow * ROW_HEIGHT}px`;\n } else {\n if (!layout.sectionsType) {\n const hasDim = layout.sections.some((sec) => sec.dim);\n styleObj.display = 'grid';\n\n if (layout.horizontal) {\n styleObj.gridTemplateColumns = hasDim\n ? layout.sections\n .map((sec) => sec.dim || 'auto')\n .join(' ')\n : `repeat(${layout.sections.length}, 1fr)`;\n } else {\n if (this.dashboardMode) {\n styleObj.gridTemplateRows = hasDim\n ? layout.sections\n .map((sec) => sec.dim || 'auto')\n .join(' ')\n : `repeat(${layout.sections.length}, 1fr)`;\n }\n }\n }\n\n rowContent = this.#renderGridLayout(inputPanelCell, layout);\n }\n }\n\n const inputPanelClass = {\n 'input-panel-form': true,\n 'input-panel-form--inline': this.buttonPosition == 'RIGHT',\n };\n\n const classObj = {\n 'input-panel': true,\n 'input-panel--column': !horizontal,\n 'input-panel--absolute': layout?.absolute,\n 'input-panel--inline': this.buttonPosition == 'RIGHT',\n };\n\n const commandsClass = {\n 'input-panel__commands': true,\n [`input-panel__commands--${this.buttonPosition}`]: true,\n };\n\n // We create a form for each row in data\n return (\n <form\n name={this.rootElement.id}\n id={this.rootElement.id}\n class={inputPanelClass}\n ref={(el: HTMLFormElement) => (this.#formRef = el)}\n onSubmit={(e: SubmitEvent) => {\n e.preventDefault();\n this.submitCb({\n value: {\n before: { ...this.#originalData },\n after: this.#reverseMapCells(),\n },\n });\n }}\n onContextMenu={(e: MouseEvent) => {\n e.preventDefault();\n }}\n >\n <div class={classObj} style={styleObj}>\n {rowContent}\n </div>\n <div class={commandsClass}>\n <FButton\n buttonType=\"submit\"\n label={this.#kupManager.language.translate(\n KupLanguageGeneric.CONFIRM\n )}\n wrapperClass=\"form__submit\"\n invisible={this.hiddenSubmitButton}\n ></FButton>\n {this.inputPanelCommands}\n </div>\n </form>\n );\n }\n\n #renderCell(\n cell: KupDataCell,\n row: KupInputPanelRow,\n column: KupInputPanelColumn\n ) {\n if (!cell) {\n return;\n }\n\n const customRender = this.#cellCustomRender.get(cell.shape);\n\n if (customRender !== undefined) {\n return customRender(cell, column.name);\n }\n\n const cellProps: FCellProps = {\n cell,\n column,\n row,\n component: this,\n editable: true,\n renderKup: true,\n setSizes: true,\n };\n\n const label = this.#getLabelComponent(cell, column.title);\n\n if (label) {\n return (\n <div class={{ 'input-panel__label_container': true }}>\n {label}\n <FCell {...cellProps} />\n </div>\n );\n }\n\n return <FCell {...cellProps} />;\n }\n\n #renderButton(cell: KupDataCell, cellId: string) {\n return (\n <FButton\n icon={cell.icon}\n id={cellId}\n {...cell.data}\n wrapperClass=\"form__submit\"\n ></FButton>\n );\n }\n\n #renderDropDownButton(cell: KupDataCell, data: GenericObject) {\n return (\n <kup-dropdown-button\n {...cell.data}\n label={cell.value}\n data={data}\n onkup-dropdownbutton-itemclick={(\n e: CustomEvent<KupDropdownButtonEventPayload>\n ) => {\n this.#getFunctionOnClickBTN(\n e.detail.node,\n e.detail.node.id\n );\n }}\n ></kup-dropdown-button>\n );\n }\n\n #renderEditor(cell: KupDataCell, cellId: string) {\n const event = 'kup-editor-save';\n const handler = (e: CustomEvent<KupEditorEventPayload>) => {\n const edtCell: KupDataCell =\n this.inputPanelCells.reduce<KupDataCell>((cell, { cells }) => {\n if (!cell) {\n return cells.find(\n ({ column }) => column.name === cellId\n ).cell;\n }\n return cell;\n }, null);\n edtCell.value = e.detail.htmlValue.replace(/\\n/g, '<br>');\n };\n\n this.rootElement.addEventListener(event, handler);\n\n this.#listeners.push({\n event,\n handler,\n });\n\n return (\n <kup-editor\n {...cell.data}\n id={cellId}\n isReadOnly={!cell.isEditable}\n showToolbar={true}\n ></kup-editor>\n );\n }\n\n #renderDataTable(cell: KupDataCell, cellId: string) {\n return (\n <kup-data-table\n id={cellId}\n editableData={true}\n showGroups={true}\n showFilters={true}\n showFooter={true}\n {...cell.data}\n ></kup-data-table>\n );\n }\n\n #renderLabel(cell: KupDataCell, cellId: string) {\n return (\n <span class=\"input-panel-label\" id={cellId}>\n {cell.value}\n </span>\n );\n }\n\n #getLabelComponent(cell: KupDataCell, label: string) {\n if (!label) {\n return null;\n }\n\n const cellType = dom.ketchup.data.cell.getType(cell, cell.shape);\n\n if (cellType === FCellTypes.RADIO) {\n return <span>{label}</span>;\n }\n\n return null;\n }\n\n #renderGridLayout(\n inputPanelCell: InputPanelCells,\n layout: KupInputPanelLayout\n ) {\n const sectionRender = this.#sectionRenderMap.get(layout.sectionsType);\n\n return sectionRender\n ? sectionRender(inputPanelCell, layout.sections)\n : layout.sections.map((section) =>\n this.#renderSection(inputPanelCell, section, false)\n );\n }\n\n #renderAbsoluteLayout(\n inputPanelCell: InputPanelCells,\n layout: KupInputPanelLayout\n ) {\n return layout.sections.map((section) =>\n this.#renderAbsoluteSection(inputPanelCell, section)\n );\n }\n\n #renderSection(\n cells: InputPanelCells,\n section: KupInputPanelLayoutSection,\n customLabelRender: boolean = false,\n styleObj: GenericObject = {},\n layout?: KupInputPanelLayout\n ) {\n const classObj = {\n 'input-panel__section': !section.horizontal,\n 'input-panel__horizontal-section': section.horizontal,\n 'input-panel__section-inline': layout?.horizontal,\n };\n\n styleObj.gap = +section.gap > 0 ? `${section.gap}rem` : '1rem';\n\n let content = [];\n\n if (section.sections?.length) {\n content = section.sections.map((innerSection) =>\n this.#renderSection(cells, innerSection)\n );\n\n const hasDim = section.sections.some((sec) => sec.dim);\n\n if (!section.gridCols && section.horizontal) {\n styleObj.gridTemplateColumns = hasDim\n ? section.sections.map((sec) => sec.dim || 'auto').join(' ')\n : `repeat(${section.sections.length}, 1fr)`;\n }\n\n if (\n !section.gridRows &&\n !section.horizontal &&\n this.dashboardMode\n ) {\n styleObj.gridTemplateRows = hasDim\n ? section.sections.map((sec) => sec.dim || 'auto').join(' ')\n : `repeat(${section.sections.length}, 1fr)`;\n }\n } else if (section.content?.length) {\n content = section.content.map((field) =>\n this.#renderField(cells, field)\n );\n styleObj.gridTemplateColumns =\n +section.gridCols > 0 ? `repeat(${section.gridCols}, 1fr)` : '';\n if (this.dashboardMode) {\n styleObj.gridTemplateRows =\n +section.gridRows > 0\n ? `repeat(${section.gridRows}, 1fr)`\n : '';\n }\n }\n\n const sectionContent = (\n <div class={classObj} style={styleObj}>\n {content}\n </div>\n );\n\n return section.title && !customLabelRender ? (\n <div class={{ 'input-panel__section_label_container': true }}>\n <FTypography\n type={FTypographyType.HEADING1}\n value={section.title}\n ></FTypography>\n {sectionContent}\n </div>\n ) : (\n sectionContent\n );\n }\n\n #renderAbsoluteSection(\n cells: InputPanelCells,\n section: KupInputPanelLayoutSection\n ) {\n let content = [];\n\n if (section.sections?.length) {\n content = section.sections.map((innerSection) =>\n this.#renderAbsoluteSection(cells, innerSection)\n );\n } else if (section.content?.length) {\n content = section.content.map((field) =>\n this.#renderAbsoluteField(cells, field)\n );\n }\n\n //If width is not specified the div in the return at the end can be removed\n if (getAbsoluteWidth(section.absoluteWidth) == null) {\n return content;\n }\n\n const width = `${\n getAbsoluteWidth(section.absoluteWidth) != null\n ? `${getAbsoluteWidth(section.absoluteWidth)}px`\n : '100%'\n }`;\n const height = `${\n getAbsoluteHeight(section.absoluteHeight) != null\n ? `${getAbsoluteHeight(section.absoluteHeight)}px`\n : '100%'\n }`;\n const top = `${getAbsoluteTop(section.absoluteRow)}px`;\n const left = `${getAbsoluteLeft(section.absoluteColumn)}px`;\n\n const sectionStyle = {\n position: 'relative',\n width,\n 'min-width': width,\n 'max-width': width,\n height,\n 'min-height': height,\n 'max-height': height,\n top,\n left,\n overflow: 'auto',\n };\n\n return <div style={sectionStyle}>{content}</div>;\n }\n\n #extractContentIds(node: KupInputPanelLayoutSection) {\n let ids: string[] = [];\n\n if (node.content?.length) {\n node.content.forEach((item) => {\n if (item.id) {\n ids.push(item.id);\n }\n });\n }\n\n if (node.sections?.length) {\n node.sections.forEach((section) => {\n ids = ids.concat(this.#extractContentIds(section));\n });\n }\n\n return ids;\n }\n\n #renderSectionTab(\n cells: InputPanelCells,\n sections: KupInputPanelLayoutSection[]\n ) {\n if (!this.tabSelected) {\n this.tabSelected = sections[0].id || '0';\n }\n\n const tabNodes: KupTabBarNode[] = sections.map((section, i) => {\n const cellIdsInSection = this.#extractContentIds(section);\n\n const hasError = cells.cells.some((cellData) => {\n const cell = cellData.cell;\n const column = cellData.column;\n return (\n cellIdsInSection.includes(column.name) && !!cell.data?.error\n );\n });\n\n return {\n active: (section.id || `${i}`) === this.tabSelected,\n value: section.title,\n icon: hasError ? 'error' : section.icon,\n id: section.id || `${i}`,\n danger: hasError,\n };\n });\n\n const sectionContent = sections.map((section, i) => {\n const sectionId = section.id || `${i}`;\n return this.#renderSection(cells, section, true, {\n display: this.tabSelected !== sectionId ? 'none' : 'grid',\n });\n });\n\n const tabCustomStyle =\n '.tab-bar .tab-scroller .tab .tab__content { justify-content: flex-start; }';\n\n if (!this.#listeners.map((l) => l.event).includes('kup-tabbar-click')) {\n const event = 'kup-tabbar-click';\n const handler = (e: CustomEvent<KupTabBarEventPayload>) => {\n this.tabSelected = e.detail.node.id;\n };\n\n this.rootElement.addEventListener(event, handler);\n this.#listeners.push({\n event,\n handler,\n });\n }\n\n return (\n <div class={{ 'input-panel__tabs_container': true }}>\n <kup-tab-bar\n data={tabNodes}\n customStyle={tabCustomStyle}\n ></kup-tab-bar>\n {sectionContent}\n </div>\n );\n }\n\n #renderField(cells: InputPanelCells, field: KupInputPanelLayoutField) {\n const fieldCell = cells.cells.find(\n (cell) => cell.column.name === field.id\n );\n\n const colSpan =\n +field.colSpan > 0\n ? field.colSpan\n : !(+field.colSpan > 0) && !(+field.colStart > 0)\n ? 1\n : null;\n\n const colStart = colSpan ? `span ${colSpan}` : `${field.colStart}`;\n\n const colEnd = +field.colEnd > 0 ? `${field.colEnd}` : '';\n\n const rowSpan =\n +field.rowSpan > 0\n ? field.rowSpan\n : !(+field.rowSpan > 0) && !(+field.rowStart > 0)\n ? 1\n : null;\n\n const rowStart = rowSpan ? `span ${rowSpan}` : `${field.rowStart}`;\n\n const rowEnd = +field.rowEnd > 0 ? `${field.rowEnd}` : '';\n\n const styleObj = {\n 'min-width': '0',\n 'grid-column-start': colStart,\n 'grid-column-end': colEnd,\n 'grid-row-start': rowStart,\n 'grid-row-end': rowEnd,\n };\n\n if (!fieldCell || !fieldCell.cell) {\n return;\n }\n\n return (\n <div style={styleObj}>\n {this.#renderCell(fieldCell.cell, cells.row, fieldCell.column)}\n </div>\n );\n }\n\n #renderAbsoluteField(\n cells: InputPanelCells,\n field: KupInputPanelLayoutField\n ) {\n const fieldCell = cells.cells.find(\n (cell) => cell.column.name === field.id\n );\n if (!fieldCell || !fieldCell.cell) {\n return;\n }\n\n let length: number;\n if (fieldCell.cell.shape == FCellShapes.DATE) {\n length = field.absoluteLength > 8 ? field.absoluteLength : 8;\n } else {\n length = field.absoluteLength;\n }\n\n const width = `${getAbsoluteWidth(length)}px`;\n const height = `${getAbsoluteHeight(1)}px`;\n const top = `${getAbsoluteTop(field.absoluteRow)}px`;\n const left = `${getAbsoluteLeft(field.absoluteColumn)}px`;\n\n const styleObj = {\n position: 'absolute',\n width,\n 'min-width': width,\n 'max-width': width,\n height,\n 'min-height': height,\n 'max-height': height,\n top,\n left,\n overflow: 'auto',\n };\n\n fieldCell.cell.data = {\n ...fieldCell.cell.data,\n sizing: 'extra-small',\n customStyle:\n (fieldCell.cell.data.customStyle || '') +\n '.mdc-text-field {height: unset !important;}',\n };\n\n return (\n <div style={styleObj}>\n {this.#renderCell(fieldCell.cell, cells.row, fieldCell.column)}\n </div>\n );\n }\n\n #mapCommands() {\n this.inputPanelCommands = this.data.setup.commands\n .map((commandObj) => {\n if (commandObj?.children && commandObj?.children.length > 0) {\n const data = {\n 'kup-list': {\n showIcons: true,\n data: commandObj.children.map((c) =>\n this.#commandAdapter(c)\n ),\n },\n };\n return this.#renderDropDownButton(commandObj, data);\n } else {\n const buttonCell = this.#commandAdapter(commandObj);\n return this.#renderButton(buttonCell, commandObj.value);\n }\n })\n .flat();\n }\n\n #mapCells(data: KupInputPanelData) {\n if (data.setup?.commands?.length) {\n this.#mapCommands();\n }\n\n const layout = data?.rows[0]?.layout;\n const inpuPanelCells = data?.rows?.length\n ? data.rows.reduce((inpuPanelCells, row) => {\n const cells = data.columns\n .filter((column) => column.visible)\n .map((column) => {\n const cell = structuredClone(row.cells[column.name]);\n const mappedCell = cell\n ? {\n ...cell,\n data: this.#setData(cell, column, layout),\n slotData: this.#slotData(cell, column),\n isEditable: true,\n }\n : null;\n return { column, cell: mappedCell };\n });\n return [...inpuPanelCells, { cells, row }];\n }, [])\n : [];\n inpuPanelCells.map(({ cells }: InputPanelCells) =>\n cells.map(({ cell, column }) => {\n const cellType = dom.ketchup.data.cell.getType(\n cell,\n cell.shape\n );\n const componentQuery = this.#cellTypeComponents.get(cellType);\n if (!componentQuery) {\n return;\n }\n\n const el: any = this.rootElement.shadowRoot.querySelector(\n `${componentQuery}[id=${column.name.replace(\n /\\//g,\n '\\\\$1'\n )}]`\n );\n\n el?.setValue(cell.value);\n })\n );\n\n this.inputPanelCells = inpuPanelCells;\n }\n\n #setData(\n cell: KupInputPanelCell,\n column: KupInputPanelColumn,\n layout?: KupInputPanelLayout\n ) {\n const defaultProps = {\n ...this.#mapData(cell, column, layout),\n disabled: !cell.editable,\n id: column.name,\n };\n const cellType = dom.ketchup.data.cell.getType(cell, cell.shape);\n const { data, ...noDataProps } = cell.data || {};\n\n return cellType !== FCellTypes.MULTI_AUTOCOMPLETE &&\n cellType !== FCellTypes.MULTI_COMBOBOX\n ? this.#deepObjectsMerge(defaultProps, {\n ...cell.data,\n })\n : // Add and ovverride defaultProps of Chip host component except data\n {\n ...defaultProps,\n ...noDataProps,\n };\n }\n\n #deepObjectsMerge(target: GenericObject, source: GenericObject) {\n for (const key in source) {\n if (\n source[key] instanceof Object &&\n !Array.isArray(source[key]) &&\n key in target\n ) {\n target[key] = this.#deepObjectsMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n return target;\n }\n\n #reverseMapCells(): KupInputPanelData {\n return this.inputPanelCells.reduce(\n (data, curr) => {\n const updatedCells = Object.keys(curr.row.cells).reduce(\n (cells, key) => {\n const cellState = curr.cells.find(\n (c) => c.column.name === key\n )?.cell;\n\n let value: any = cellState?.value;\n\n if (cellState?.shape === FCellShapes.TABLE) {\n value = JSON.stringify(\n this.#getTableUpdatedCell(\n cellState.data.data,\n key\n )\n );\n }\n\n return {\n ...cells,\n [key]: {\n ...curr.row.cells[key],\n value,\n obj: cellState?.obj,\n },\n };\n },\n {}\n );\n\n return {\n columns: [\n ...data.columns,\n ...curr.cells.map((cell) => cell.column),\n ],\n rows: [\n ...data.rows,\n {\n cells: updatedCells,\n layout: curr.row.layout,\n },\n ],\n };\n },\n {\n columns: [],\n rows: [],\n }\n );\n }\n\n #mapData(\n cell: KupInputPanelCell,\n col: KupInputPanelColumn,\n layout?: KupInputPanelLayout\n ) {\n if (!cell) {\n return null;\n }\n\n const options = cell.options;\n let fieldLabel: string;\n if (layout?.absolute) {\n fieldLabel = null;\n } else {\n fieldLabel = col.title;\n }\n const currentValue = cell.value;\n const cellType = dom.ketchup.data.cell.getType(cell, cell.shape);\n\n const dataAdapterMap = new Map<FCellTypes, DataAdapterFn>([\n [FCellTypes.AUTOCOMPLETE, this.#CMBandACPAdapter.bind(this)],\n [FCellTypes.BUTTON_LIST, this.#BTNAdapter.bind(this)],\n [FCellTypes.CHART, this.#GRAAdapter.bind(this)],\n [FCellTypes.CHIP, this.#CHIAdapter.bind(this)],\n [FCellTypes.CHECKBOX, this.#CHKAdapter.bind(this)],\n [FCellTypes.COLOR_PICKER, this.#CLPAdapter.bind(this)],\n [FCellTypes.COMBOBOX, this.#CMBandACPAdapter.bind(this)],\n [FCellTypes.EDITOR, this.#EDTAdapter.bind(this)],\n [FCellTypes.MULTI_AUTOCOMPLETE, this.#CHIAdapter.bind(this)],\n [FCellTypes.MULTI_COMBOBOX, this.#CHIAdapter.bind(this)],\n [FCellTypes.NUMBER, this.#NumberAdapter.bind(this)],\n [FCellTypes.DATE, this.#DateAdapter.bind(this)],\n [FCellTypes.OBJECT, this.#ObjectAdapter.bind(this)],\n [FCellTypes.RADIO, this.#RADAdapter.bind(this)],\n [FCellTypes.STRING, this.#ITXAdapter.bind(this)],\n [FCellTypes.SWITCH, this.#SWTAdapter.bind(this)],\n [FCellTypes.TABLE, this.#DataTableAdapter.bind(this)],\n [FCellTypes.TIME, this.#TimeAdapter.bind(this)],\n ]);\n\n const adapter = dataAdapterMap.get(cellType);\n\n return adapter\n ? adapter(options, fieldLabel, currentValue, cell, col.name)\n : null;\n }\n\n #slotData(cell: KupInputPanelCell, col: KupInputPanelColumn) {\n const cellType = dom.ketchup.data.cell.getType(cell, cell.shape);\n\n if (!cell.editable) {\n return null;\n }\n\n if (cellType === FCellTypes.CHIP) {\n return {\n trailingIcon: true,\n label: col.title,\n disabled: !cell.editable,\n id: col.name,\n fullWidth: false,\n };\n }\n\n if (\n cellType === FCellTypes.MULTI_AUTOCOMPLETE ||\n cellType === FCellTypes.MULTI_COMBOBOX\n ) {\n return {\n ...this.#CMBandACPAdapter(\n cell.options,\n col.title,\n null,\n cell,\n col.name\n ),\n showDropDownIcon: true,\n class: '',\n style: { width: '100%' },\n disabled: !cell.editable,\n id: col.name,\n };\n }\n\n return null;\n }\n\n #CHIAdapter(\n _options: GenericObject,\n _fieldLabel: string,\n currentValue: string,\n cell: KupInputPanelCell,\n id: string\n ) {\n if (\n cell.inputSettings?.checkObject ||\n cell.inputSettings?.checkValueOnExit ||\n cell.mandatory\n ) {\n this.#checkOnBlurEvent(cell, id);\n }\n\n return CHIAdapter(currentValue);\n }\n\n #GRAAdapter() {\n //TODO: definire mapping\n return {\n data: {\n sizeX: '50px',\n offlineMode: {\n value: '8;4;5',\n },\n id: 'i1012_GREF_0',\n cellId: 'i1012_GREF_0',\n sizeY: '50px',\n },\n };\n }\n\n #BTNAdapter(\n _options: GenericObject,\n _fieldLabel: string,\n _currentValue: string,\n cell: KupInputPanelCell,\n id: string\n ) {\n cell.data = cell.data || {};\n\n cell.data.onClick = () => {\n this.#getFunctionOnClickBTN(cell, id);\n };\n\n if (cell.data?.keyShortcut && !cell.data?.disabled) {\n this.#keysShortcut.push(cell.data?.keyShortcut);\n this.#kupManager.keysBinding.register(\n cell.data?.keyShortcut,\n cell.data.onClick.bind(this)\n );\n }\n\n return {\n label: cell.value,\n fun: cell.fun,\n ...cell.data,\n };\n }\n\n #CMBandACPAdapter(\n rawOptions: GenericObject,\n fieldLabel: string,\n currentValue: string,\n cell: KupInputPanelCell,\n id: string\n ) {\n const configCMandACP = CMBandACPAdapter(currentValue, fieldLabel, []);\n\n if (cell.fun) {\n const cellType = dom.ketchup.data.cell.getType(cell, cell.shape);\n\n const evNames = this.#eventNames.get(cellType);\n\n if (!evNames) {\n return;\n }\n\n evNames.map((evName) => {\n const handler = (\n e: CustomEvent<KupAutocompleteEventPayload>\n ) => {\n this.#getAutocompleteEventCallback(\n e.detail,\n cell.fun,\n configCMandACP,\n id,\n currentValue\n );\n };\n this.rootElement.addEventListener(evName, handler);\n this.#listeners.push({\n event: evName,\n handler,\n });\n });\n } else if (rawOptions) {\n configCMandACP.data['kup-list'].data =\n this.#optionsTreeComboAdapter(rawOptions, currentValue);\n }\n\n if (\n cell.inputSettings?.checkObject ||\n cell.inputSettings?.checkValueOnExit ||\n cell.mandatory\n ) {\n this.#checkOnBlurEvent(cell, id);\n }\n\n return configCMandACP;\n }\n\n #CHKAdapter(\n _options: GenericObject,\n fieldLabel: string,\n currentValue: string,\n cell: KupInputPanelCell,\n id: string\n ) {\n let data = CHKAdapter(currentValue, fieldLabel);\n\n if (\n cell.inputSettings?.checkObject ||\n cell.inputSettings?.checkValueOnExit ||\n cell.mandatory\n ) {\n return {\n ...data,\n onBlur: () => {\n this.#checkOnBlurProp(cell, id);\n },\n };\n }\n\n return data;\n }\n\n #CLPAdapter(\n _options: GenericObject,\n fieldLabel: string,\n _currentValue: string\n ) {\n return {\n data: {\n 'kup-text-field': {\n label: fieldLabel,\n },\n },\n };\n }\n\n #EDTAdapter(\n _options: GenericObject,\n _fieldLabel: string,\n currentValue: string\n ) {\n return {\n initialValue: currentValue,\n };\n }\n\n #ITXAdapter(\n _options: GenericObject,\n fieldLabel: string,\n _currentValue: string,\n cell: KupInputPanelCell,\n id: string\n ) {\n if (\n cell.inputSettings?.checkObject ||\n cell.inputSettings?.checkValueOnExit ||\n cell.mandatory\n ) {\n return {\n label: fieldLabel,\n onBlur: () => {\n this.#checkOnBlurProp(cell, id);\n },\n };\n }\n return { label: fieldLabel };\n }\n\n #RADAdapter(\n options: GenericObject,\n _fieldLabel: string,\n currentValue: string,\n cell: KupInputPanelCell,\n id: string\n ) {\n let data = RADAdapter(currentValue, options);\n\n if (\n cell.inputSettings?.checkObject ||\n cell.inputSettings?.checkValueOnExit ||\n cell.mandatory\n ) {\n return {\n ...data,\n onBlur: () => {\n this.#checkOnBlurProp(cell, id);\n },\n };\n }\n\n return data;\n }\n\n #SWTAdapter(\n _options: GenericObject,\n fieldLabel: string,\n currentValue: string\n ) {\n return SWTAdapter(currentValue, fieldLabel);\n }\n\n #DateAdapter(\n _options: GenericObject,\n fieldLabel: string,\n currentValue: string,\n cell: KupInputPanelCell,\n id: string\n ) {\n if (\n cell.inputSettings?.checkObject ||\n cell.inputSettings?.checkValueOnExit ||\n cell.mandatory\n ) {\n this.#checkOnBlurEvent(cell, id);\n }\n\n return {\n data: {\n 'kup-text-field': {\n label: fieldLabel,\n },\n },\n initialValue: currentValue,\n };\n }\n\n #ObjectAdapter(\n _options: GenericObject,\n fieldLabel: string,\n currentValue: string,\n cell: KupInputPanelCell,\n id: string\n ) {\n if (\n cell.inputSettings?.checkObject ||\n cell.inputSettings?.checkValueOnExit ||\n cell.mandatory\n ) {\n return {\n initialValue: currentValue || '',\n label: fieldLabel || ' ',\n value: currentValue || '',\n onBlur: () => {\n this.#checkOnBlurProp(cell, id);\n },\n };\n }\n\n return {\n initialValue: currentValue || '',\n label: fieldLabel || ' ',\n value: currentValue || '',\n };\n }\n\n #TimeAdapter(\n _options: GenericObject,\n fieldLabel: string,\n _currentValue: string,\n cell: KupInputPanelCell,\n id: string\n ) {\n if (\n cell.inputSettings?.checkObject ||\n cell.inputSettings?.checkValueOnExit ||\n cell.mandatory\n ) {\n this.#checkOnBlurEvent(cell, id);\n }\n return {\n data: {\n 'kup-text-field': {\n label: fieldLabel,\n },\n },\n };\n }\n\n #NumberAdapter(\n _options: GenericObject,\n fieldLabel: string,\n _currentValue: string,\n cell: KupInputPanelCell,\n id: string\n ) {\n if (\n cell.inputSettings?.checkObject ||\n cell.inputSettings?.checkValueOnExit ||\n cell.mandatory\n ) {\n return {\n label: fieldLabel,\n onBlur: () => {\n this.#checkOnBlurProp(cell, id);\n },\n };\n }\n return { label: fieldLabel };\n }\n\n #DataTableAdapter(\n _rawOptions: GenericObject,\n _fieldLabel: string,\n _value: string,\n cell: KupInputPanelCell,\n id: string\n ) {\n try {\n let data = JSON.parse(cell.value);\n\n if (!data) {\n this.#kupManager.debug.logMessage(\n this,\n `Empty value for ${id} cell.`,\n KupDebugCategory.WARNING\n );\n return null;\n }\n\n if ((data as any).type !== 'SmeupDataTable') {\n this.#kupManager.debug.logMessage(\n this,\n `Wrong data table type for ${id} cell. Type \\`SmeupDataTable\\` in value expected`,\n KupDebugCategory.ERROR\n );\n return null;\n }\n\n return {\n data: {\n columns: data.columns.map((col) => ({\n ...col,\n obj: data.rows[0].cells[col.name].obj,\n })),\n rows: data.rows.map((row) => ({\n ...row,\n cells: Object.keys(row.cells).reduce((cell, key) => {\n const column = data.columns.find(\n (col) => col.name === key\n );\n return {\n ...cell,\n [key]: {\n ...row.cells[key],\n data: {\n ...this.#mapData(\n row.cells[key],\n column\n ),\n disabled:\n row.cells[key].editable === false,\n id: column.id,\n },\n },\n };\n }, {}),\n })),\n },\n };\n } catch (e) {\n this.#kupManager.debug.logMessage(\n this,\n `Invalid value for ${id} cell. Type \\`SmeupDataTable\\` expected`,\n KupDebugCategory.ERROR\n );\n return null;\n }\n }\n\n #getTableUpdatedCell(\n tableValue: KupDataTableDataset,\n cellId: string\n ): KupDataTableDataset {\n const updated: KupDataTableDataset = {\n ...tableValue,\n rows: tableValue.rows.map((row) => ({ ...row, cells: {} })),\n };\n\n const editableColsId = tableValue.columns\n .filter((col) => col.isEditable)\n .map((col) => col.name);\n\n if (!editableColsId.length) {\n return updated;\n }\n\n try {\n const beforeTableValue = JSON.parse(\n this.#originalData.rows[0].cells[cellId].value\n );\n\n updated.rows = tableValue.rows.map((row, i) =>\n editableColsId.reduce<KupDataTableRow>(\n (updatedRow, colId) => {\n const changed =\n beforeTableValue.rows[i].cells[colId] &&\n row.cells[colId].value !==\n beforeTableValue.rows[i].cells[colId].value;\n\n if (changed) {\n return {\n ...beforeTableValue.rows[i],\n cells: {\n ...updatedRow.cells,\n [colId]: {\n ...beforeTableValue.rows[i].cells[\n colId\n ],\n value: row.cells[colId].value,\n },\n },\n };\n }\n\n return {\n ...beforeTableValue.rows[i],\n cells: updatedRow.cells,\n };\n },\n { ...beforeTableValue.rows[i], cells: {} }\n )\n );\n\n return updated;\n } catch (e) {\n return updated;\n }\n }\n\n #optionsTreeComboAdapter(options: any, currentValue: string) {\n const adapter = this.#optionsAdapterMap.get(options.type);\n\n if (adapter) {\n return adapter(options, currentValue);\n } else {\n return options.map((option) => ({\n value: option.label,\n id: option.id,\n selected: currentValue === option.id,\n }));\n }\n }\n\n #treeOptionsNodeAdapter(\n options: any,\n currentValue: string\n ): GenericObject[] {\n return options.children.map((child) => ({\n id: child.content.codice,\n value: child.content.testo,\n selected: currentValue === child.content.codice,\n children: child.children?.length\n ? this.#treeOptionsNodeAdapter(child, currentValue)\n : [],\n }));\n }\n\n #dataTreeOptionsChildrenAdapter(\n options: any,\n currentValue: string\n ): GenericObject[] {\n return options.children.map((child) => ({\n id: child.obj.k,\n value: child.value,\n selected: currentValue === child.obj.k,\n children: child.children?.length\n ? this.#dataTreeOptionsChildrenAdapter(child, currentValue)\n : [],\n }));\n }\n\n #tableOptionsAdapter(options: any, currentValue: string): GenericObject[] {\n return options.rows.map((row) => {\n const cells = row.fields || row.cells;\n const [id, value] = Object.keys(cells);\n\n return {\n id: cells[id].value,\n value: cells[value]?.value || cells[id].value,\n selected: currentValue === cells[id].value,\n };\n });\n }\n\n #commandAdapter(cell: KupDataCell): KupDataCell {\n const buttonCell = {\n ...cell,\n data: this.#BTNAdapter(null, null, cell.value, cell, cell.obj.k),\n id: cell.obj.k,\n };\n return buttonCell;\n }\n\n #getAutocompleteEventCallback(\n detail: KupAutocompleteEventPayload | KupComboboxIconClickEventPayload,\n fun: string,\n data: any,\n id: string,\n currentValue: string\n ) {\n if (\n detail.id !== id ||\n (detail as KupComboboxIconClickEventPayload).open === false\n ) {\n return;\n }\n this.optionsHandler(\n fun,\n detail.inputValue,\n this.#reverseMapCells(),\n detail.id\n ).then((options) => {\n data.data['kup-list'].data =\n this.#optionsTreeComboAdapter(options, currentValue) ?? [];\n detail.comp.refresh();\n });\n }\n\n async #checkOnBlurProp(cell: KupInputPanelCell, id: string) {\n const currCell = this.#getCell(id);\n\n // Required cell check\n if (cell.mandatory) {\n this.#setCellError(\n id,\n currCell.value\n ? // If it's not empty remove the error message\n null\n : // else set the error message\n this.#kupManager.language.translate(\n KupLanguageGeneric.REQUIRED_VALUE\n )\n );\n\n if (!currCell.value) {\n return;\n }\n } else {\n this.#setCellError(id, null);\n }\n\n // Valid object check\n if (cell.inputSettings?.checkObject && currCell.value) {\n const { valid } = await this.checkValidObjCallback({\n obj: cell.obj,\n currentState: this.#reverseMapCells(),\n fun: cell.fun,\n });\n if (valid) {\n this.#setCellError(id, null);\n } else {\n this.#setCellError(\n id,\n this.#kupManager.language.translate(\n KupLanguageGeneric.INVALID_VALUE\n )\n );\n return;\n }\n }\n\n if (cell.inputSettings?.checkValueOnExit && this.#areValuesUpdated()) {\n this.checkValidValueCallback(\n {\n before: { ...this.#originalData },\n after: this.#reverseMapCells(),\n },\n id\n );\n }\n }\n\n #checkOnBlurEvent(cell: KupInputPanelCell, id: string) {\n const evName = this.#eventBlurNames.get(cell.shape);\n if (!evName) {\n return;\n }\n\n const handler = async (e: CustomEvent<KupAutocompleteEventPayload>) => {\n const currCell = this.#getCell(id);\n\n if (e.detail.id !== id) {\n return;\n }\n\n // Required cell check\n if (cell.mandatory) {\n this.#setCellError(\n id,\n currCell.value\n ? // If it's not empty remove the error message\n null\n : // else set the error message\n this.#kupManager.language.translate(\n KupLanguageGeneric.REQUIRED_VALUE\n )\n );\n\n if (!e.detail.value) {\n return;\n }\n } else {\n this.#setCellError(id, null);\n }\n\n // Valid object check\n if (cell.inputSettings?.checkObject && e.detail.value) {\n const { valid } = await this.checkValidObjCallback({\n obj: cell.obj,\n currentState: this.#reverseMapCells(),\n fun: cell.fun,\n });\n\n this.#setCellError(\n id,\n valid\n ? // If it's not empty remove the error message\n null\n : // else set the error message\n this.#kupManager.language.translate(\n KupLanguageGeneric.INVALID_VALUE\n )\n );\n if (!valid) {\n return;\n }\n }\n\n if (\n cell.inputSettings?.checkValueOnExit &&\n this.#areValuesUpdated()\n ) {\n this.checkValidValueCallback(\n {\n before: { ...this.#originalData },\n after: this.#reverseMapCells(),\n },\n id\n );\n }\n };\n this.rootElement.addEventListener(evName, handler);\n this.#listeners.push({\n event: evName,\n handler,\n });\n }\n\n #setCellError(id: string, error: string) {\n this.inputPanelCells = this.inputPanelCells.map((cell) => ({\n ...cell,\n cells: cell.cells.map(({ cell, column }) => {\n const data =\n column.name === id\n ? {\n ...cell.data,\n error,\n }\n : cell.data;\n return {\n column,\n cell: {\n ...cell,\n data,\n },\n };\n }),\n }));\n }\n\n #areValuesUpdated() {\n return this.inputPanelCells.some(({ cells, row }) =>\n cells.some(\n ({ cell, column: { name } }) =>\n cell.value !== row.cells[name].value\n )\n );\n }\n\n #getFunctionOnClickBTN(cell: KupInputPanelCell, id: string) {\n cell.fun\n ? this.customButtonClickHandler({\n fun: cell.fun,\n cellId: id,\n currentState: this.#reverseMapCells(),\n })\n : this.submitCb({\n value: {\n before: { ...this.#originalData },\n after: this.#reverseMapCells(),\n },\n cell: id,\n });\n }\n\n #getEventDetails(\n path: HTMLElement[],\n originalEvent: PointerEvent\n ): KupInputPanelEventHandlerDetails {\n const fcell = path.find((p) => p.classList?.contains('f-cell'));\n if (fcell == null) {\n return;\n }\n\n const props = fcell['kup-get-cell-props']();\n const columnName = props.column.name;\n\n let anchor = fcell;\n let cell = this.data.rows[0].cells[columnName];\n let column = this.data.columns.find((c) => c.name == columnName);\n\n return {\n anchor,\n cell,\n column,\n originalEvent,\n };\n }\n\n #contextMenuHandler(e: PointerEvent): KupInputPanelEventHandlerDetails {\n const eventPath = this.#kupManager.getEventPath(\n e.target,\n this.rootElement\n );\n\n return this.#getEventDetails(eventPath, e);\n }\n\n #didLoadInteractables() {\n this.#kupManager.interact.managedElements.add(this.#formRef);\n\n const tapCb = (e: PointerEvent) => {\n if (e.button == 2) {\n const details = this.#contextMenuHandler(e);\n\n if (details) {\n this.kupDataTableContextMenu.emit({\n comp: this,\n id: this.rootElement.id,\n details,\n });\n }\n }\n };\n\n this.#kupManager.interact.on(\n this.#formRef,\n KupPointerEventTypes.TAP,\n tapCb\n );\n }\n\n //#endregion\n\n //#region LIFECYCLE HOOKS\n /*-------------------------------------------------*/\n /* L i f e c y c l e H o o k s */\n /*-------------------------------------------------*/\n\n componentWillLoad() {\n this.#kupManager.debug.logLoad(this, false);\n this.#kupManager.language.register(this);\n this.#kupManager.theme.register(this);\n this.onDataChanged();\n }\n\n componentDidLoad() {\n this.#didLoadInteractables();\n this.kupReady.emit({ comp: this, id: this.rootElement.id });\n this.#kupManager.debug.logLoad(this, true);\n }\n\n componentWillRender() {\n this.#kupManager.debug.logRender(this, false);\n }\n\n componentDidRender() {\n const root: ShadowRoot = this.rootElement.shadowRoot;\n if (root) {\n const fs: NodeListOf<HTMLElement> =\n root.querySelectorAll('.f-text-field');\n for (let index = 0; index < fs.length; index++) {\n FTextFieldMDC(fs[index]);\n }\n }\n this.#kupManager.debug.logRender(this, true);\n }\n\n render() {\n const isEmptyData = Boolean(!this.inputPanelCells.length);\n\n const inputPanelContent: VNode[] = isEmptyData\n ? [\n <p>\n {this.#kupManager.language.translate(\n KupLanguageGeneric.EMPTY_DATA\n )}\n </p>,\n ]\n : this.inputPanelCells.map((inputPanelCell) =>\n this.#renderRow(inputPanelCell)\n );\n\n return (\n <Host>\n <style>\n {this.#kupManager.theme.setKupStyle(\n this.rootElement as KupComponent\n )}\n </style>\n <div id={componentWrapperId}>{inputPanelContent}</div>\n </Host>\n );\n }\n\n disconnectedCallback() {\n this.#kupManager.language.unregister(this);\n this.#kupManager.theme.unregister(this);\n }\n //#endregion\n}\n"],"mappings":"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","ignoreList":[]}