From a7a28ab4bac9e0577e0096ebe9848f220509e793 Mon Sep 17 00:00:00 2001 From: Ivan Minchev Date: Mon, 20 Jul 2026 13:44:45 +0300 Subject: [PATCH] feat(accordion): add programmatic expansion sample --- .../programmatic-expansion/README.md | 56 +++++++++++++++++++ .../programmatic-expansion/index.html | 11 ++++ .../programmatic-expansion/package.json | 42 ++++++++++++++ .../sandbox.config.json | 5 ++ .../programmatic-expansion/src/index.css | 26 +++++++++ .../programmatic-expansion/src/index.tsx | 42 ++++++++++++++ .../programmatic-expansion/tsconfig.json | 44 +++++++++++++++ .../programmatic-expansion/vite.config.js | 12 ++++ 8 files changed, 238 insertions(+) create mode 100644 samples/layouts/accordion/programmatic-expansion/README.md create mode 100644 samples/layouts/accordion/programmatic-expansion/index.html create mode 100644 samples/layouts/accordion/programmatic-expansion/package.json create mode 100644 samples/layouts/accordion/programmatic-expansion/sandbox.config.json create mode 100644 samples/layouts/accordion/programmatic-expansion/src/index.css create mode 100644 samples/layouts/accordion/programmatic-expansion/src/index.tsx create mode 100644 samples/layouts/accordion/programmatic-expansion/tsconfig.json create mode 100644 samples/layouts/accordion/programmatic-expansion/vite.config.js diff --git a/samples/layouts/accordion/programmatic-expansion/README.md b/samples/layouts/accordion/programmatic-expansion/README.md new file mode 100644 index 0000000000..5ee8cc0584 --- /dev/null +++ b/samples/layouts/accordion/programmatic-expansion/README.md @@ -0,0 +1,56 @@ + + + +This folder contains implementation of React application with example of Programmatic Expansion feature using [Accordion](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component. + + + + + + View Docs + + + View Code + + + Run Sample + + + Run Sample + + + + +## Branches + +> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository. + +## Instructions + +Follow these instructions to run this example: + + +``` +git clone https://github.com/IgniteUI/igniteui-react-examples.git +git checkout master +cd ./igniteui-react-examples +cd ./samples/layouts/accordion/programmatic-expansion +``` + +open above folder in VS Code or type: +``` +code . +``` + +In terminal window, run: +``` +npm install --legacy-peer-deps +npm run-script start +``` + +Then open http://localhost:4200/ in your browser + + +## Learn More + +To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html). diff --git a/samples/layouts/accordion/programmatic-expansion/index.html b/samples/layouts/accordion/programmatic-expansion/index.html new file mode 100644 index 0000000000..050be7adb0 --- /dev/null +++ b/samples/layouts/accordion/programmatic-expansion/index.html @@ -0,0 +1,11 @@ + + + + Accordion Programmatic Expansion + + + +
+ + + diff --git a/samples/layouts/accordion/programmatic-expansion/package.json b/samples/layouts/accordion/programmatic-expansion/package.json new file mode 100644 index 0000000000..de10646370 --- /dev/null +++ b/samples/layouts/accordion/programmatic-expansion/package.json @@ -0,0 +1,42 @@ +{ + "name": "react-accordion-programmatic-expansion", + "description": "This project provides example of Accordion Programmatic Expansion using Infragistics React components", + "author": "Infragistics", + "homepage": ".", + "version": "1.4.0", + "private": true, + "scripts": { + "start": "vite --port 4200", + "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build", + "preview": "vite preview", + "test": "vitest" + }, + "dependencies": { + "igniteui-dockmanager": "^1.17.0", + "igniteui-react": "19.7.0", + "igniteui-react-core": "19.6.0", + "igniteui-webcomponents": "^7.2.1", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@types/jest": "^29.2.0", + "@types/node": "^24.7.1", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "@vitejs/plugin-react": "^5.0.4", + "@vitest/browser": "^3.2.4", + "typescript": "^4.8.4", + "vite": "^7.1.9", + "vitest": "^3.2.4", + "vitest-canvas-mock": "^0.3.3", + "worker-loader": "^3.0.8" + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/samples/layouts/accordion/programmatic-expansion/sandbox.config.json b/samples/layouts/accordion/programmatic-expansion/sandbox.config.json new file mode 100644 index 0000000000..f8b5562bd6 --- /dev/null +++ b/samples/layouts/accordion/programmatic-expansion/sandbox.config.json @@ -0,0 +1,5 @@ +{ + "infiniteLoopProtection": false, + "hardReloadOnChange": false, + "view": "browser" +} diff --git a/samples/layouts/accordion/programmatic-expansion/src/index.css b/samples/layouts/accordion/programmatic-expansion/src/index.css new file mode 100644 index 0000000000..11432494bd --- /dev/null +++ b/samples/layouts/accordion/programmatic-expansion/src/index.css @@ -0,0 +1,26 @@ +/* shared styles are loaded from: */ +/* https://dl.infragistics.com/x/css/samples/shared.v8.css */ + +igc-accordion { + width: 100%; +} + +.button-group { + display: flex; + gap: 8px; + padding: 16px; +} + +.button-group igc-button { + min-width: 96px; +} + +.sample-wrapper { + overflow-y: auto; + max-height: 380px; + margin: 8px; +} + +igc-expansion-panel { + border: 1px solid rgba(174, 174, 174, 0.25); +} diff --git a/samples/layouts/accordion/programmatic-expansion/src/index.tsx b/samples/layouts/accordion/programmatic-expansion/src/index.tsx new file mode 100644 index 0000000000..5433c64432 --- /dev/null +++ b/samples/layouts/accordion/programmatic-expansion/src/index.tsx @@ -0,0 +1,42 @@ +import React, { useRef } from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import { IgrAccordion, IgrButton, IgrExpansionPanel } from 'igniteui-react'; +import 'igniteui-webcomponents/themes/light/bootstrap.css'; + +export default function AccordionProgrammaticExpansion() { + const accordionRef = useRef(null); + + return ( +
+
+ accordionRef.current?.showAll()}> + Show All + + accordionRef.current?.hideAll()}> + Hide All + +
+
+ + + Billing + Review invoices, update payment methods, and manage billing contacts. + + + Security + Configure password rules, multi-factor authentication, and recovery options. + + + Notifications + Choose which product updates and account alerts are sent to your team. + + +
+
+ ); +} + +// rendering above component to the React DOM +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render(); diff --git a/samples/layouts/accordion/programmatic-expansion/tsconfig.json b/samples/layouts/accordion/programmatic-expansion/tsconfig.json new file mode 100644 index 0000000000..8c0d146f95 --- /dev/null +++ b/samples/layouts/accordion/programmatic-expansion/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "resolveJsonModule": true, + "esModuleInterop": true, + "baseUrl": ".", + "outDir": "build/dist", + "module": "esnext", + "target": "es5", + "lib": [ + "es6", + "dom" + ], + "sourceMap": true, + "allowJs": true, + "jsx": "react-jsx", + "moduleResolution": "node", + "rootDir": "src", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "noUnusedLocals": false, + "importHelpers": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "strict": false, + "isolatedModules": true, + "noEmit": true + }, + "exclude": [ + "node_modules", + "build", + "scripts", + "acceptance-tests", + "webpack", + "jest", + "src/setupTests.ts", + "**/odatajs-4.0.0.js", + "config-overrides.js" + ], + "include": [ + "src" + ] +} diff --git a/samples/layouts/accordion/programmatic-expansion/vite.config.js b/samples/layouts/accordion/programmatic-expansion/vite.config.js new file mode 100644 index 0000000000..4fc593892f --- /dev/null +++ b/samples/layouts/accordion/programmatic-expansion/vite.config.js @@ -0,0 +1,12 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; + +export default defineConfig({ + plugins: [react()], + build: { + outDir: 'build' + }, + server: { + open: false + }, +});