diff --git a/frontend/src/lib/components/apps/components/display/AppAccordionList.svelte b/frontend/src/lib/components/apps/components/display/AppAccordionList.svelte
new file mode 100644
index 0000000000..8616afde6d
--- /dev/null
+++ b/frontend/src/lib/components/apps/components/display/AppAccordionList.svelte
@@ -0,0 +1,159 @@
+
+
+{#each Object.keys(css ?? {}) as key (key)}
+
+{/each}
+
+
+
+
+
+ {#if $app.subgrids?.[`${id}-0`]}
+ {#if Array.isArray(result) && result.length > 0}
+ {#each result ?? [] as value, index}
+
+
+ {#if activeIndex === index}
+
+ {
+ if (!inputs[id]) {
+ inputs[id] = { [index]: value }
+ } else {
+ inputs[id] = { ...inputs[id], [index]: value }
+ }
+ outputs?.inputs.set(inputs, true)
+ }}
+ onRemove={(id) => {
+ if (inputs?.[id] == undefined) {
+ return
+ }
+ if (index == 0) {
+ delete inputs[id]
+ inputs = { ...inputs }
+ } else {
+ delete inputs[id][index]
+ inputs[id] = { ...inputs[id] }
+ }
+ outputs?.inputs.set(inputs, true)
+ }}
+ {value}
+ {index}
+ >
+ {
+ if (!$connectingInput.opened) {
+ $selectedComponent = [id]
+ }
+ onFocus()
+ }}
+ />
+
+
+ {/if}
+
+ {/each}
+ {:else}
+
+
+
+ {#if !Array.isArray(result)}
+
Input data is not an array
+ {/if}
+ {/if}
+ {/if}
+
+
diff --git a/frontend/src/lib/components/apps/components/layout/AppTabs.svelte b/frontend/src/lib/components/apps/components/layout/AppTabs.svelte
index 4811dc8e5b..168d6c5a91 100644
--- a/frontend/src/lib/components/apps/components/layout/AppTabs.svelte
+++ b/frontend/src/lib/components/apps/components/layout/AppTabs.svelte
@@ -175,24 +175,24 @@
{:else if resolvedConfig.tabsKind == 'accordion'}
{#each tabs ?? [] as res, index}
-
+
{#if selected == res}
diff --git a/frontend/src/lib/components/apps/editor/component/Component.svelte b/frontend/src/lib/components/apps/editor/component/Component.svelte
index 264da8082d..6d4d0a396e 100644
--- a/frontend/src/lib/components/apps/editor/component/Component.svelte
+++ b/frontend/src/lib/components/apps/editor/component/Component.svelte
@@ -27,6 +27,7 @@
import AppJobIdLogComponent from '../../components/display/AppJobIdLogComponent.svelte'
import AppJobIdFlowStatus from '../../components/display/AppJobIdFlowStatus.svelte'
import AppCarouselList from '../../components/display/AppCarouselList.svelte'
+ import AppAccordionList from '../../components/display/AppAccordionList.svelte'
import AppAggridTableEe from '../../components/display/table/AppAggridTableEe.svelte'
import AppCustomComponent from '../../components/display/AppCustomComponent.svelte'
import AppStatCard from '../../components/display/AppStatCard.svelte'
@@ -871,6 +872,15 @@
{render}
bind:initializing
/>
+ {:else if component.type === 'accordionlistcomponent'}
+
{:else if component.type === 'statcomponent'}
export type SelectStepComponent = BaseComponent<'selectstepcomponent'>
export type CarouselListComponent = BaseComponent<'carousellistcomponent'>
+export type AccordionListComponent = BaseComponent<'accordionlistcomponent'>
export type StatisticCardComponent = BaseComponent<'statcomponent'>
export type MenuComponent = BaseComponent<'menucomponent'> & {
menuItems: (BaseAppComponent & ButtonComponent & GridItem)[]
@@ -351,6 +354,7 @@ export type TypedComponent =
| DownloadComponent
| ChartJsComponent
| CarouselListComponent
+ | AccordionListComponent
| PlotlyComponentV2
| ChartJsComponentV2
| StatisticCardComponent
@@ -2852,7 +2856,7 @@ See date-fns format for more information. By default, it is 'dd.MM.yyyy HH:mm'
},
carousellistcomponent: {
name: 'Carousel List',
- icon: ListIcon,
+ icon: GalleryThumbnails,
documentationLink: `${documentationBaseUrl}/carousel`,
dims: '3:8-12:8' as AppComponentDimensions,
customCss: {
@@ -2878,6 +2882,25 @@ See date-fns format for more information. By default, it is 'dd.MM.yyyy HH:mm'
numberOfSubgrids: 1
}
},
+ accordionlistcomponent: {
+ name: 'Accordion List',
+ icon: ListCollapse,
+ documentationLink: `${documentationBaseUrl}/accordion`,
+ dims: '3:8-12:8' as AppComponentDimensions,
+ customCss: {
+ container: { class: '', style: '' }
+ },
+ initialData: {
+ configuration: {},
+ componentInput: {
+ type: 'static',
+ fieldType: 'array',
+ subFieldType: 'object',
+ value: [{ header: 'First', foo: 1 }, { header: 'Second', foo: 2 }, { header: 'Third', foo: 3 }] as object[]
+ },
+ numberOfSubgrids: 1
+ }
+ },
iconcomponent: {
name: 'Icon',
icon: Smile,
@@ -4154,7 +4177,7 @@ export const presetComponents = {
},
accordiontabcomponent: {
name: 'Accordion Tabs',
- icon: List,
+ icon: ListCollapse,
targetComponent: 'tabscomponent' as const,
configuration: {
tabsKind: {
diff --git a/frontend/src/lib/components/apps/editor/component/sets.ts b/frontend/src/lib/components/apps/editor/component/sets.ts
index d42cfd3419..999db0b63a 100644
--- a/frontend/src/lib/components/apps/editor/component/sets.ts
+++ b/frontend/src/lib/components/apps/editor/component/sets.ts
@@ -19,6 +19,7 @@ const layout: ComponentSet = {
'modalcomponent',
'steppercomponent',
'carousellistcomponent',
+ 'accordionlistcomponent',
'decisiontreecomponent',
'navbarcomponent',
'recomputeallcomponent'
diff --git a/frontend/src/lib/components/apps/editor/componentsPanel/cssUtils.ts b/frontend/src/lib/components/apps/editor/componentsPanel/cssUtils.ts
index 81b450fd80..1e3f152c7e 100644
--- a/frontend/src/lib/components/apps/editor/componentsPanel/cssUtils.ts
+++ b/frontend/src/lib/components/apps/editor/componentsPanel/cssUtils.ts
@@ -299,6 +299,13 @@ export const customisationByComponent: Customisation[] = [
],
variables: []
},
+ {
+ components: ['accordionlistcomponent'],
+ selectors: [
+ { selector: '.wm-accordion', comment: 'Accordion component', customCssKey: 'container' }
+ ],
+ variables: []
+ },
{
components: ['formcomponent'],
selectors: [
diff --git a/frontend/src/lib/components/apps/editor/componentsPanel/quickStyleProperties.ts b/frontend/src/lib/components/apps/editor/componentsPanel/quickStyleProperties.ts
index 847075de5a..5cf626b4cc 100644
--- a/frontend/src/lib/components/apps/editor/componentsPanel/quickStyleProperties.ts
+++ b/frontend/src/lib/components/apps/editor/componentsPanel/quickStyleProperties.ts
@@ -654,6 +654,9 @@ export const quickStyleProperties: Record<
header: [...containerDefaultProps, typographyGrouping],
container: containerDefaultProps
},
+ accordionlistcomponent: {
+ container: containerDefaultProps
+ },
carousellistcomponent: {
container: containerDefaultProps
},