diff --git a/packages/ketchup-showcase/src/App.vue b/packages/ketchup-showcase/src/App.vue index b8ad81ad1c..69389a7b4c 100644 --- a/packages/ketchup-showcase/src/App.vue +++ b/packages/ketchup-showcase/src/App.vue @@ -403,6 +403,16 @@ export default { value: 'Image list', visible: true, }, + { + cells: { + ROUTE: { + value: 'inputpanel', + }, + }, + icon: 'mode_edit', + value: 'Input Panel', + visible: true, + }, { cells: { ROUTE: { diff --git a/packages/ketchup-showcase/src/plugins/router.ts b/packages/ketchup-showcase/src/plugins/router.ts index 84f69cf60d..e589a9a0c2 100644 --- a/packages/ketchup-showcase/src/plugins/router.ts +++ b/packages/ketchup-showcase/src/plugins/router.ts @@ -240,6 +240,12 @@ const advancedRoutes = [ component: () => import(`@/views/components/advanced/imagelist/ImageList.vue`), }, + { + path: `/inputpanel`, + name: 'inputpanel', + component: () => + import(`@/views/components/advanced/inputpanel/InputPanel.vue`), + }, { path: `/tree`, name: 'tree', diff --git a/packages/ketchup-showcase/src/views/components/advanced/inputpanel/InputPanel.vue b/packages/ketchup-showcase/src/views/components/advanced/inputpanel/InputPanel.vue new file mode 100644 index 0000000000..4a46ae2517 --- /dev/null +++ b/packages/ketchup-showcase/src/views/components/advanced/inputpanel/InputPanel.vue @@ -0,0 +1,34 @@ + + + diff --git a/packages/ketchup-showcase/src/views/components/advanced/inputpanel/examples/InputPanelBasic.vue b/packages/ketchup-showcase/src/views/components/advanced/inputpanel/examples/InputPanelBasic.vue new file mode 100644 index 0000000000..7642d18473 --- /dev/null +++ b/packages/ketchup-showcase/src/views/components/advanced/inputpanel/examples/InputPanelBasic.vue @@ -0,0 +1,20 @@ + + + diff --git a/packages/ketchup-showcase/src/views/components/advanced/inputpanel/examples/InputPanelDemo.vue b/packages/ketchup-showcase/src/views/components/advanced/inputpanel/examples/InputPanelDemo.vue new file mode 100644 index 0000000000..9c22535e31 --- /dev/null +++ b/packages/ketchup-showcase/src/views/components/advanced/inputpanel/examples/InputPanelDemo.vue @@ -0,0 +1,200 @@ + + + diff --git a/packages/ketchup/src/assets/input-panel.js b/packages/ketchup/src/assets/input-panel.js index 8cd626a28d..eff89f53ff 100644 --- a/packages/ketchup/src/assets/input-panel.js +++ b/packages/ketchup/src/assets/input-panel.js @@ -43,7 +43,7 @@ const data = { { name: 'BUT', title: 'Buttons list', - visible: false, + visible: true, }, ], rows: [ @@ -144,9 +144,10 @@ const data = { value: '8;4;5', }, CHI: { - // data: {}, shape: 'CHI', - value: 'Chipp', + value: 'Chi', + editable: true, + options: [{ id: 'Chi', label: 'Chip' }], }, BUT: { cssClass: 'strong-text', diff --git a/packages/ketchup/src/components/kup-autocomplete/readme.md b/packages/ketchup/src/components/kup-autocomplete/readme.md index 553eb6c4b5..c27d0793a5 100644 --- a/packages/ketchup/src/components/kup-autocomplete/readme.md +++ b/packages/ketchup/src/components/kup-autocomplete/readme.md @@ -133,6 +133,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-tree](../kup-tree) ### Depends on @@ -222,6 +223,7 @@ graph TD; kup-box --> kup-autocomplete kup-cell --> kup-autocomplete kup-image-list --> kup-autocomplete + kup-input-panel --> kup-autocomplete style kup-autocomplete fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/components/kup-badge/readme.md b/packages/ketchup/src/components/kup-badge/readme.md index fe841b80bd..c3de69aa0e 100644 --- a/packages/ketchup/src/components/kup-badge/readme.md +++ b/packages/ketchup/src/components/kup-badge/readme.md @@ -106,6 +106,7 @@ Type: `Promise` - [kup-form](../kup-form) - [kup-image](../kup-image) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-list](../kup-list) - [kup-magic-box](../kup-magic-box) - [kup-numeric-picker](../kup-numeric-picker) @@ -167,6 +168,7 @@ graph TD; kup-dashboard --> kup-badge kup-family-tree --> kup-badge kup-image-list --> kup-badge + kup-input-panel --> kup-badge kup-magic-box --> kup-badge kup-numeric-picker --> kup-badge kup-planner --> kup-badge diff --git a/packages/ketchup/src/components/kup-button-list/readme.md b/packages/ketchup/src/components/kup-button-list/readme.md index 20e6ffc9ef..493817ce62 100644 --- a/packages/ketchup/src/components/kup-button-list/readme.md +++ b/packages/ketchup/src/components/kup-button-list/readme.md @@ -90,6 +90,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-magic-box](../kup-magic-box) - [kup-tree](../kup-tree) @@ -180,6 +181,7 @@ graph TD; kup-box --> kup-button-list kup-cell --> kup-button-list kup-image-list --> kup-button-list + kup-input-panel --> kup-button-list kup-magic-box --> kup-button-list style kup-button-list fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/components/kup-chart/readme.md b/packages/ketchup/src/components/kup-chart/readme.md index 7348d9de7b..4908ad3825 100644 --- a/packages/ketchup/src/components/kup-chart/readme.md +++ b/packages/ketchup/src/components/kup-chart/readme.md @@ -102,6 +102,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-magic-box](../kup-magic-box) - [kup-tree](../kup-tree) @@ -190,6 +191,7 @@ graph TD; kup-box --> kup-chart kup-cell --> kup-chart kup-image-list --> kup-chart + kup-input-panel --> kup-chart kup-magic-box --> kup-chart style kup-chart fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/components/kup-chip/readme.md b/packages/ketchup/src/components/kup-chip/readme.md index 33f467d549..0ba241143b 100644 --- a/packages/ketchup/src/components/kup-chip/readme.md +++ b/packages/ketchup/src/components/kup-chip/readme.md @@ -101,6 +101,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-magic-box](../kup-magic-box) - [kup-tree](../kup-tree) @@ -190,6 +191,7 @@ graph TD; kup-box --> kup-chip kup-cell --> kup-chip kup-image-list --> kup-chip + kup-input-panel --> kup-chip kup-magic-box --> kup-chip style kup-chip fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/components/kup-color-picker/readme.md b/packages/ketchup/src/components/kup-color-picker/readme.md index 81eddc0db5..66c85d0961 100644 --- a/packages/ketchup/src/components/kup-color-picker/readme.md +++ b/packages/ketchup/src/components/kup-color-picker/readme.md @@ -112,6 +112,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-tree](../kup-tree) ### Depends on @@ -200,6 +201,7 @@ graph TD; kup-box --> kup-color-picker kup-cell --> kup-color-picker kup-image-list --> kup-color-picker + kup-input-panel --> kup-color-picker style kup-color-picker fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/components/kup-combobox/readme.md b/packages/ketchup/src/components/kup-combobox/readme.md index a8186607d6..537ab704d9 100644 --- a/packages/ketchup/src/components/kup-combobox/readme.md +++ b/packages/ketchup/src/components/kup-combobox/readme.md @@ -130,6 +130,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-magic-box](../kup-magic-box) - [kup-tree](../kup-tree) @@ -220,6 +221,7 @@ graph TD; kup-box --> kup-combobox kup-cell --> kup-combobox kup-image-list --> kup-combobox + kup-input-panel --> kup-combobox kup-magic-box --> kup-combobox style kup-combobox fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/components/kup-date-picker/readme.md b/packages/ketchup/src/components/kup-date-picker/readme.md index 3df911f2b2..7862cbed28 100644 --- a/packages/ketchup/src/components/kup-date-picker/readme.md +++ b/packages/ketchup/src/components/kup-date-picker/readme.md @@ -104,6 +104,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-tree](../kup-tree) ### Depends on @@ -192,6 +193,7 @@ graph TD; kup-box --> kup-date-picker kup-cell --> kup-date-picker kup-image-list --> kup-date-picker + kup-input-panel --> kup-date-picker style kup-date-picker fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/components/kup-gauge/readme.md b/packages/ketchup/src/components/kup-gauge/readme.md index ca1a4016e4..3fa9204d84 100644 --- a/packages/ketchup/src/components/kup-gauge/readme.md +++ b/packages/ketchup/src/components/kup-gauge/readme.md @@ -163,6 +163,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-tree](../kup-tree) ### Depends on @@ -250,6 +251,7 @@ graph TD; kup-box --> kup-gauge kup-cell --> kup-gauge kup-image-list --> kup-gauge + kup-input-panel --> kup-gauge style kup-gauge fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/components/kup-image/readme.md b/packages/ketchup/src/components/kup-image/readme.md index ed80948f15..5a092d6242 100644 --- a/packages/ketchup/src/components/kup-image/readme.md +++ b/packages/ketchup/src/components/kup-image/readme.md @@ -81,6 +81,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-tree](../kup-tree) ### Depends on @@ -170,6 +171,7 @@ graph TD; kup-box --> kup-image kup-cell --> kup-image kup-image-list --> kup-image + kup-input-panel --> kup-image style kup-image fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/components/kup-input-panel/kup-input-panel.tsx b/packages/ketchup/src/components/kup-input-panel/kup-input-panel.tsx index 9bede0804f..e519dd0324 100644 --- a/packages/ketchup/src/components/kup-input-panel/kup-input-panel.tsx +++ b/packages/ketchup/src/components/kup-input-panel/kup-input-panel.tsx @@ -136,6 +136,7 @@ export class KupInputPanel { const mappedCell = { ...cell, data: this.#mapData(cell, col), + slotData: this.#slotData(cell, col), isEditable: cell.editable, }; @@ -203,26 +204,45 @@ export class KupInputPanel { ]); const adapter = dataAdapterMap.get(cellType); - console.log(cellType, cell.shape, adapter === undefined); return adapter ? adapter(options, fieldLabel, currentValue) : null; } + #slotData(cell: KupInputPanelCell, col: KupInputPanelColumn) { + const cellType = dom.ketchup.data.cell.getType(cell, cell.shape); + + if ( + cellType !== FCellTypes.CHIP && + cellType !== FCellTypes.MULTI_AUTOCOMPLETE && + cellType !== FCellTypes.MULTI_COMBOBOX && + !cell.editable + ) { + return null; + } + + return { + trailingIcon: true, + label: col.title, + }; + } + #CHIAdapter( - _options: { + options: { id: string; label: string; }[], _fieldLabel: string, - _currentValue: string + currentValue: string ) { - return { data: [{ value: 'Valore1' }], title: 'Chippp' }; - // return { - // data: { - // label: 'CHipp', - // }, - // label: fieldLabel, - // }; + return { + data: options?.length + ? options.map(({ id, label }) => ({ + value: label, + id, + selected: currentValue === id, + })) + : [{ id: currentValue, value: currentValue }], + }; } #GRAAdapter() { diff --git a/packages/ketchup/src/components/kup-input-panel/readme.md b/packages/ketchup/src/components/kup-input-panel/readme.md index 114201a447..021f336990 100644 --- a/packages/ketchup/src/components/kup-input-panel/readme.md +++ b/packages/ketchup/src/components/kup-input-panel/readme.md @@ -7,10 +7,19 @@ ## Properties -| Property | Attribute | Description | Type | Default | -| ------------- | -------------- | ------------------------------ | ------------------- | ------- | -| `customStyle` | `custom-style` | Custom style of the component. | `string` | `''` | -| `data` | -- | Actual data of the form. | `KupInputPanelData` | `null` | +| Property | Attribute | Description | Type | Default | +| -------------------- | ---------------------- | ---------------------------------------------------------------------- | ----------------------------- | ------- | +| `customStyle` | `custom-style` | Custom style of the component. | `string` | `''` | +| `data` | -- | Actual data of the form. | `KupInputPanelData` | `null` | +| `hiddenSubmitButton` | `hidden-submit-button` | Creates a hidden submit button in order to submit the form with enter. | `boolean` | `false` | +| `submitCb` | -- | Sets the callback function on submit form | `(e: SubmitEvent) => unknown` | `null` | + + +## Events + +| Event | Description | Type | +| ----------------------- | ------------------------------- | ------------------------------ | +| `kup-input-panel-ready` | When component load is complete | `CustomEvent` | ## Dependencies @@ -19,12 +28,40 @@ - [kup-card](../kup-card) - [kup-dialog](../kup-dialog) +- [kup-badge](../kup-badge) +- [kup-autocomplete](../kup-autocomplete) +- [kup-chip](../kup-chip) +- [kup-text-field](../kup-text-field) +- [kup-color-picker](../kup-color-picker) +- [kup-combobox](../kup-combobox) +- [kup-date-picker](../kup-date-picker) +- [kup-rating](../kup-rating) +- [kup-time-picker](../kup-time-picker) +- [kup-image](../kup-image) +- [kup-button-list](../kup-button-list) +- [kup-chart](../kup-chart) +- [kup-gauge](../kup-gauge) +- [kup-progress-bar](../kup-progress-bar) ### Graph ```mermaid graph TD; kup-input-panel --> kup-card kup-input-panel --> kup-dialog + kup-input-panel --> kup-badge + kup-input-panel --> kup-autocomplete + kup-input-panel --> kup-chip + kup-input-panel --> kup-text-field + kup-input-panel --> kup-color-picker + kup-input-panel --> kup-combobox + kup-input-panel --> kup-date-picker + kup-input-panel --> kup-rating + kup-input-panel --> kup-time-picker + kup-input-panel --> kup-image + kup-input-panel --> kup-button-list + kup-input-panel --> kup-chart + kup-input-panel --> kup-gauge + kup-input-panel --> kup-progress-bar kup-card --> kup-autocomplete kup-card --> kup-chip kup-card --> kup-text-field diff --git a/packages/ketchup/src/components/kup-progress-bar/readme.md b/packages/ketchup/src/components/kup-progress-bar/readme.md index 31305d3913..a2482e5f30 100644 --- a/packages/ketchup/src/components/kup-progress-bar/readme.md +++ b/packages/ketchup/src/components/kup-progress-bar/readme.md @@ -87,6 +87,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-tree](../kup-tree) ### Depends on @@ -174,6 +175,7 @@ graph TD; kup-box --> kup-progress-bar kup-cell --> kup-progress-bar kup-image-list --> kup-progress-bar + kup-input-panel --> kup-progress-bar style kup-progress-bar fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/components/kup-rating/readme.md b/packages/ketchup/src/components/kup-rating/readme.md index 8ab1195c9c..3dec01ad19 100644 --- a/packages/ketchup/src/components/kup-rating/readme.md +++ b/packages/ketchup/src/components/kup-rating/readme.md @@ -83,6 +83,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-tree](../kup-tree) ### Depends on @@ -170,6 +171,7 @@ graph TD; kup-box --> kup-rating kup-cell --> kup-rating kup-image-list --> kup-rating + kup-input-panel --> kup-rating style kup-rating fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/components/kup-text-field/readme.md b/packages/ketchup/src/components/kup-text-field/readme.md index 33726e806a..188a2bf731 100644 --- a/packages/ketchup/src/components/kup-text-field/readme.md +++ b/packages/ketchup/src/components/kup-text-field/readme.md @@ -169,6 +169,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-magic-box](../kup-magic-box) - [kup-tree](../kup-tree) @@ -258,6 +259,7 @@ graph TD; kup-box --> kup-text-field kup-cell --> kup-text-field kup-image-list --> kup-text-field + kup-input-panel --> kup-text-field kup-magic-box --> kup-text-field style kup-text-field fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/components/kup-time-picker/readme.md b/packages/ketchup/src/components/kup-time-picker/readme.md index bba3a74dfe..21e816e94b 100644 --- a/packages/ketchup/src/components/kup-time-picker/readme.md +++ b/packages/ketchup/src/components/kup-time-picker/readme.md @@ -122,6 +122,7 @@ Type: `Promise` - [kup-data-table](../kup-data-table) - [kup-form](../kup-form) - [kup-image-list](../kup-image-list) + - [kup-input-panel](../kup-input-panel) - [kup-tree](../kup-tree) ### Depends on @@ -211,6 +212,7 @@ graph TD; kup-box --> kup-time-picker kup-cell --> kup-time-picker kup-image-list --> kup-time-picker + kup-input-panel --> kup-time-picker style kup-time-picker fill:#f9f,stroke:#333,stroke-width:4px ``` diff --git a/packages/ketchup/src/managers/kup-theme/kup-theme-declarations.ts b/packages/ketchup/src/managers/kup-theme/kup-theme-declarations.ts index 949cb644f1..be481ebdde 100644 --- a/packages/ketchup/src/managers/kup-theme/kup-theme-declarations.ts +++ b/packages/ketchup/src/managers/kup-theme/kup-theme-declarations.ts @@ -18,6 +18,7 @@ export const fButtonUsers = [ KupTagNames.DROPDOWN_BUTTON, KupTagNames.FAMILY_TREE, KupTagNames.FORM, + KupTagNames.INPUT_PANEL, KupTagNames.IMAGE_LIST, KupTagNames.SNACKBAR, ]; @@ -57,6 +58,7 @@ export const fChipUsers = [ KupTagNames.CHIP, KupTagNames.DATA_TABLE, KupTagNames.FORM, + KupTagNames.INPUT_PANEL, KupTagNames.TREE, ]; /** @@ -133,6 +135,7 @@ export const fSwitchUsers = [ KupTagNames.CELL, KupTagNames.DATA_TABLE, KupTagNames.FORM, + KupTagNames.INPUT_PANEL, KupTagNames.SWITCH, KupTagNames.TREE, ];