Copy disabled (too large)
Download .txt
Showing preview only (16,576K chars total). Download the full file to get everything.
Repository: Talend/ui
Branch: master
Commit: 4c65e81052c8
Files: 4582
Total size: 14.8 MB
Directory structure:
gitextract_g_x4juwx/
├── .changeset/
│ ├── README.md
│ └── config.json
├── .editorconfig
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── architecture_decision_record.md
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── actions/
│ │ ├── lint-merge-report/
│ │ │ ├── action.yml
│ │ │ └── merge-lint-reports.mjs
│ │ └── setup-node/
│ │ └── action.yml
│ ├── copilot-instructions.md
│ ├── dependabot.yml
│ └── workflows/
│ ├── changeset.yml
│ ├── clean-demo.yml
│ ├── demo.yml
│ ├── dependencies.yml
│ ├── icons.yml
│ ├── pr-demo.yml
│ ├── pr-lint.yml
│ ├── pr-test.yml
│ ├── pre-release.yml
│ ├── visual-testing.yml
│ └── yarn-deduplicate.yml
├── .gitignore
├── .husky/
│ └── pre-commit
├── .nojekyll
├── .npmignore
├── .npmrc
├── .prettierignore
├── .prettierrc.js
├── .sass-lint.yml
├── .semgrepignore
├── .tool-versions
├── .vscode/
│ └── settings.json
├── CONTRIBUTING.md
├── I18n.md
├── LICENSE
├── README.md
├── SECURITY.md
├── babel.config.js
├── dependencies-latest.txt
├── docs/
│ ├── adr-2024-04-add-support-to-esm.md
│ ├── adr-composition-vs-api.md
│ ├── adr-css-modules.md
│ ├── adr-data-test.md
│ ├── adr-dependencies.md
│ └── adr-rework-talend-scripts.md
├── eslint.config.mjs
├── fork/
│ ├── bootstrap-sass/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── assets/
│ │ │ ├── images/
│ │ │ │ └── .keep
│ │ │ ├── javascripts/
│ │ │ │ ├── bootstrap/
│ │ │ │ │ ├── affix.js
│ │ │ │ │ ├── alert.js
│ │ │ │ │ ├── button.js
│ │ │ │ │ ├── carousel.js
│ │ │ │ │ ├── collapse.js
│ │ │ │ │ ├── dropdown.js
│ │ │ │ │ ├── modal.js
│ │ │ │ │ ├── popover.js
│ │ │ │ │ ├── scrollspy.js
│ │ │ │ │ ├── tab.js
│ │ │ │ │ ├── tooltip.js
│ │ │ │ │ └── transition.js
│ │ │ │ ├── bootstrap-sprockets.js
│ │ │ │ └── bootstrap.js
│ │ │ └── stylesheets/
│ │ │ ├── _bootstrap-compass.scss
│ │ │ ├── _bootstrap-mincer.scss
│ │ │ ├── _bootstrap-sprockets.scss
│ │ │ ├── _bootstrap.scss
│ │ │ └── bootstrap/
│ │ │ ├── _alerts.scss
│ │ │ ├── _badges.scss
│ │ │ ├── _breadcrumbs.scss
│ │ │ ├── _button-groups.scss
│ │ │ ├── _buttons.scss
│ │ │ ├── _carousel.scss
│ │ │ ├── _close.scss
│ │ │ ├── _code.scss
│ │ │ ├── _component-animations.scss
│ │ │ ├── _dropdowns.scss
│ │ │ ├── _forms.scss
│ │ │ ├── _glyphicons.scss
│ │ │ ├── _grid.scss
│ │ │ ├── _input-groups.scss
│ │ │ ├── _jumbotron.scss
│ │ │ ├── _labels.scss
│ │ │ ├── _list-group.scss
│ │ │ ├── _media.scss
│ │ │ ├── _mixins.scss
│ │ │ ├── _modals.scss
│ │ │ ├── _navbar.scss
│ │ │ ├── _navs.scss
│ │ │ ├── _normalize.scss
│ │ │ ├── _pager.scss
│ │ │ ├── _pagination.scss
│ │ │ ├── _panels.scss
│ │ │ ├── _popovers.scss
│ │ │ ├── _print.scss
│ │ │ ├── _progress-bars.scss
│ │ │ ├── _responsive-embed.scss
│ │ │ ├── _responsive-utilities.scss
│ │ │ ├── _scaffolding.scss
│ │ │ ├── _tables.scss
│ │ │ ├── _theme.scss
│ │ │ ├── _thumbnails.scss
│ │ │ ├── _tooltip.scss
│ │ │ ├── _type.scss
│ │ │ ├── _utilities.scss
│ │ │ ├── _variables.scss
│ │ │ ├── _wells.scss
│ │ │ └── mixins/
│ │ │ ├── _alerts.scss
│ │ │ ├── _background-variant.scss
│ │ │ ├── _border-radius.scss
│ │ │ ├── _buttons.scss
│ │ │ ├── _center-block.scss
│ │ │ ├── _clearfix.scss
│ │ │ ├── _forms.scss
│ │ │ ├── _gradients.scss
│ │ │ ├── _grid-framework.scss
│ │ │ ├── _grid.scss
│ │ │ ├── _hide-text.scss
│ │ │ ├── _image.scss
│ │ │ ├── _labels.scss
│ │ │ ├── _list-group.scss
│ │ │ ├── _nav-divider.scss
│ │ │ ├── _nav-vertical-align.scss
│ │ │ ├── _opacity.scss
│ │ │ ├── _pagination.scss
│ │ │ ├── _panels.scss
│ │ │ ├── _progress-bar.scss
│ │ │ ├── _reset-filter.scss
│ │ │ ├── _reset-text.scss
│ │ │ ├── _resize.scss
│ │ │ ├── _responsive-visibility.scss
│ │ │ ├── _size.scss
│ │ │ ├── _tab-focus.scss
│ │ │ ├── _table-row.scss
│ │ │ ├── _text-emphasis.scss
│ │ │ ├── _text-overflow.scss
│ │ │ └── _vendor-prefixes.scss
│ │ ├── composer.json
│ │ ├── eslint.config.mjs
│ │ └── package.json
│ ├── dynamic-cdn-webpack-plugin/
│ │ ├── .all-contributorsrc
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── __mocks__/
│ │ │ └── fs.js
│ │ ├── eslint.config.mjs
│ │ ├── index.js
│ │ ├── license
│ │ ├── package.json
│ │ ├── readme.md
│ │ ├── src/
│ │ │ ├── find.js
│ │ │ ├── find.test.js
│ │ │ ├── get-resolver.js
│ │ │ ├── index.js
│ │ │ └── resolve-pkg.js
│ │ ├── test/
│ │ │ ├── core.test.js
│ │ │ ├── fixtures/
│ │ │ │ ├── app/
│ │ │ │ │ ├── async.js
│ │ │ │ │ ├── dir/
│ │ │ │ │ │ └── single.js
│ │ │ │ │ ├── mix.js
│ │ │ │ │ ├── multiple.js
│ │ │ │ │ ├── no-export.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── peer-dependencies.js
│ │ │ │ │ ├── require-file.js
│ │ │ │ │ ├── single.js
│ │ │ │ │ └── submodule.js
│ │ │ │ ├── duplicate-dependencies/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── nested-dependencies/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ └── optional-peer-deps/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── helpers/
│ │ │ │ ├── clean-dir.js
│ │ │ │ └── run-webpack.js
│ │ │ ├── html-webpack-plugin.test.js
│ │ │ ├── optional-peer-dep.test.js
│ │ │ └── webpack-manifest-plugin.test.js
│ │ └── vitest.config.ts
│ ├── json-schema-form-core/
│ │ ├── .gitignore
│ │ ├── .jscsrc
│ │ ├── .mocharc.json
│ │ ├── .travis.yml
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── eslint.config.mjs
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── canonical-title-map.spec.js
│ │ │ ├── canonical-title-map.ts
│ │ │ ├── index.js
│ │ │ ├── merge.js
│ │ │ ├── merge.spec.js
│ │ │ ├── module.spec.js
│ │ │ ├── resolve.js
│ │ │ ├── resolve.spec.js
│ │ │ ├── schema-defaults.test.js
│ │ │ ├── schema-defaults.ts
│ │ │ ├── select.js
│ │ │ ├── select.test.js
│ │ │ ├── sf-path.test.js
│ │ │ ├── sf-path.ts
│ │ │ ├── traverse.test.js
│ │ │ ├── traverse.ts
│ │ │ ├── validate.js
│ │ │ └── validate.test.js
│ │ ├── talend-scripts.json
│ │ ├── test.md
│ │ ├── tsconfig.json
│ │ ├── vitest.config.ts
│ │ └── webpack.config.js
│ ├── module-to-cdn/
│ │ ├── .editorconfig
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── .prettierrc.js
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── cache.js
│ │ ├── eslint.config.mjs
│ │ ├── index.js
│ │ ├── index.test.js
│ │ ├── jsonschema.json
│ │ ├── license
│ │ ├── meta/
│ │ │ ├── @angular/
│ │ │ │ ├── animations/
│ │ │ │ │ ├── browser/
│ │ │ │ │ │ └── meta.json
│ │ │ │ │ └── meta.json
│ │ │ │ ├── common/
│ │ │ │ │ ├── http/
│ │ │ │ │ │ └── meta.json
│ │ │ │ │ └── meta.json
│ │ │ │ ├── compiler/
│ │ │ │ │ └── meta.json
│ │ │ │ ├── core/
│ │ │ │ │ └── meta.json
│ │ │ │ ├── forms/
│ │ │ │ │ └── meta.json
│ │ │ │ ├── http/
│ │ │ │ │ └── meta.json
│ │ │ │ ├── platform-browser/
│ │ │ │ │ └── meta.json
│ │ │ │ ├── platform-browser-dynamic/
│ │ │ │ │ └── meta.json
│ │ │ │ ├── router/
│ │ │ │ │ └── meta.json
│ │ │ │ └── upgrade/
│ │ │ │ ├── meta.json
│ │ │ │ └── static/
│ │ │ │ └── meta.json
│ │ │ ├── @babel/
│ │ │ │ └── polyfill/
│ │ │ │ └── meta.json
│ │ │ ├── @popperjs/
│ │ │ │ └── core/
│ │ │ │ └── meta.json
│ │ │ ├── @rooks/
│ │ │ │ └── use-mutation-observer/
│ │ │ │ └── meta.json
│ │ │ ├── @sentry/
│ │ │ │ └── browser/
│ │ │ │ └── meta.json
│ │ │ ├── aframe/
│ │ │ │ └── meta.json
│ │ │ ├── ag-grid/
│ │ │ │ └── meta.json
│ │ │ ├── ag-grid-community/
│ │ │ │ └── meta.json
│ │ │ ├── ag-grid-enterprise/
│ │ │ │ └── meta.json
│ │ │ ├── angular/
│ │ │ │ └── meta.json
│ │ │ ├── auth0-lock/
│ │ │ │ └── meta.json
│ │ │ ├── axios/
│ │ │ │ └── meta.json
│ │ │ ├── babel-polyfill/
│ │ │ │ └── meta.json
│ │ │ ├── bootstrap/
│ │ │ │ └── meta.json
│ │ │ ├── classnames/
│ │ │ │ └── meta.json
│ │ │ ├── core-js/
│ │ │ │ └── meta.json
│ │ │ ├── d3/
│ │ │ │ └── meta.json
│ │ │ ├── file-saver/
│ │ │ │ └── meta.json
│ │ │ ├── focus-outline-manager/
│ │ │ │ └── meta.json
│ │ │ ├── history/
│ │ │ │ └── meta.json
│ │ │ ├── i18next/
│ │ │ │ └── meta.json
│ │ │ ├── immutable/
│ │ │ │ └── meta.json
│ │ │ ├── jquery/
│ │ │ │ └── meta.json
│ │ │ ├── json-logic-js/
│ │ │ │ └── meta.json
│ │ │ ├── jszip/
│ │ │ │ └── meta.json
│ │ │ ├── jwt-decode/
│ │ │ │ └── meta.json
│ │ │ ├── lodash/
│ │ │ │ └── meta.json
│ │ │ ├── mobx/
│ │ │ │ └── meta.json
│ │ │ ├── platform/
│ │ │ │ └── meta.json
│ │ │ ├── popper.js/
│ │ │ │ └── meta.json
│ │ │ ├── preact/
│ │ │ │ └── meta.json
│ │ │ ├── preact-compat/
│ │ │ │ └── meta.json
│ │ │ ├── prop-types/
│ │ │ │ └── meta.json
│ │ │ ├── react/
│ │ │ │ └── meta.json
│ │ │ ├── react-ace/
│ │ │ │ └── meta.json
│ │ │ ├── react-autowhatever/
│ │ │ │ └── meta.json
│ │ │ ├── react-bootstrap/
│ │ │ │ └── meta.json
│ │ │ ├── react-css-transition/
│ │ │ │ └── meta.json
│ │ │ ├── react-debounce-input/
│ │ │ │ └── meta.json
│ │ │ ├── react-dnd/
│ │ │ │ └── meta.json
│ │ │ ├── react-dnd-html5-backend/
│ │ │ │ └── meta.json
│ │ │ ├── react-dom/
│ │ │ │ └── meta.json
│ │ │ ├── react-draggable/
│ │ │ │ └── meta.json
│ │ │ ├── react-hook-form/
│ │ │ │ └── meta.json
│ │ │ ├── react-i18next/
│ │ │ │ └── meta.json
│ │ │ ├── react-is/
│ │ │ │ └── meta.json
│ │ │ ├── react-lifecycles-compat/
│ │ │ │ └── meta.json
│ │ │ ├── react-popper/
│ │ │ │ └── meta.json
│ │ │ ├── react-redux/
│ │ │ │ └── meta.json
│ │ │ ├── react-resizable/
│ │ │ │ └── meta.json
│ │ │ ├── react-router/
│ │ │ │ └── meta.json
│ │ │ ├── react-router-dom/
│ │ │ │ └── meta.json
│ │ │ ├── react-side-effect/
│ │ │ │ └── meta.json
│ │ │ ├── react-transition-group/
│ │ │ │ └── meta.json
│ │ │ ├── react-virtualized/
│ │ │ │ └── meta.json
│ │ │ ├── recharts/
│ │ │ │ └── meta.json
│ │ │ ├── redux/
│ │ │ │ └── meta.json
│ │ │ ├── redux-act/
│ │ │ │ └── meta.json
│ │ │ ├── redux-saga/
│ │ │ │ └── meta.json
│ │ │ ├── redux-thunk/
│ │ │ │ └── meta.json
│ │ │ ├── reflect-metadata/
│ │ │ │ └── meta.json
│ │ │ ├── rx/
│ │ │ │ └── meta.json
│ │ │ ├── rxjs/
│ │ │ │ └── meta.json
│ │ │ ├── scroll-smooth/
│ │ │ │ └── meta.json
│ │ │ ├── semantic-ui/
│ │ │ │ └── meta.json
│ │ │ ├── simplebar/
│ │ │ │ └── meta.json
│ │ │ ├── styled-components/
│ │ │ │ └── meta.json
│ │ │ ├── tachyons/
│ │ │ │ └── meta.json
│ │ │ ├── three/
│ │ │ │ └── meta.json
│ │ │ ├── timezone-support/
│ │ │ │ └── meta.json
│ │ │ ├── tooltip.js/
│ │ │ │ └── meta.json
│ │ │ ├── uuid/
│ │ │ │ └── meta.json
│ │ │ ├── vue/
│ │ │ │ └── meta.json
│ │ │ └── zone.js/
│ │ │ └── meta.json
│ │ ├── modules.json
│ │ ├── modules.test.js
│ │ ├── package.json
│ │ ├── url.js
│ │ ├── version.js
│ │ └── vitest.config.ts
│ └── react-bootstrap/
│ ├── .babelrc
│ ├── CHANGELOG.md
│ ├── CONTRIBUTING.md
│ ├── MAINTAINING.md
│ ├── README.md
│ ├── eslint.config.mjs
│ ├── package.json
│ ├── server/
│ │ └── ModalSpec.js
│ ├── src/
│ │ ├── Accordion.jsx
│ │ ├── Alert.jsx
│ │ ├── Alert.test.jsx
│ │ ├── Badge.jsx
│ │ ├── Badge.test.jsx
│ │ ├── Breadcrumb.jsx
│ │ ├── Breadcrumb.test.jsx
│ │ ├── BreadcrumbItem.jsx
│ │ ├── BreadcrumbItem.test.jsx
│ │ ├── Button.jsx
│ │ ├── Button.test.jsx
│ │ ├── ButtonGroup.jsx
│ │ ├── ButtonGroup.test.jsx
│ │ ├── ButtonToolbar.jsx
│ │ ├── ButtonToolbar.test.jsx
│ │ ├── Carousel.jsx
│ │ ├── Carousel.test.jsx
│ │ ├── CarouselCaption.jsx
│ │ ├── CarouselCaption.test.jsx
│ │ ├── CarouselItem.jsx
│ │ ├── Checkbox.jsx
│ │ ├── Checkbox.test.jsx
│ │ ├── Clearfix.jsx
│ │ ├── Clearfix.test.jsx
│ │ ├── CloseButton.jsx
│ │ ├── CloseButton.test.jsx
│ │ ├── Col.jsx
│ │ ├── Col.test.jsx
│ │ ├── Collapse.jsx
│ │ ├── Collapse.test.jsx
│ │ ├── ControlLabel.jsx
│ │ ├── ControlLabel.test.jsx
│ │ ├── Dropdown.jsx
│ │ ├── Dropdown.test.jsx
│ │ ├── DropdownButton.jsx
│ │ ├── DropdownButton.test.jsx
│ │ ├── DropdownMenu.jsx
│ │ ├── DropdownMenu.test.jsx
│ │ ├── DropdownToggle.jsx
│ │ ├── DropdownToggle.test.jsx
│ │ ├── Fade.jsx
│ │ ├── Fade.test.jsx
│ │ ├── Form.jsx
│ │ ├── Form.test.jsx
│ │ ├── FormControl.jsx
│ │ ├── FormControl.test.jsx
│ │ ├── FormControlFeedback.jsx
│ │ ├── FormControlFeedback.test.jsx
│ │ ├── FormControlStatic.jsx
│ │ ├── FormControlStatic.test.jsx
│ │ ├── FormGroup.jsx
│ │ ├── FormGroup.test.jsx
│ │ ├── Glyphicon.jsx
│ │ ├── Glyphicon.test.jsx
│ │ ├── Grid.jsx
│ │ ├── Grid.test.jsx
│ │ ├── HelpBlock.jsx
│ │ ├── HelpBlock.test.jsx
│ │ ├── Image.jsx
│ │ ├── Image.test.jsx
│ │ ├── InputGroup.jsx
│ │ ├── InputGroup.test.jsx
│ │ ├── InputGroupAddon.jsx
│ │ ├── InputGroupButton.jsx
│ │ ├── Jumbotron.jsx
│ │ ├── Jumbotron.test.jsx
│ │ ├── Label.jsx
│ │ ├── Label.test.jsx
│ │ ├── ListGroup.jsx
│ │ ├── ListGroup.test.jsx
│ │ ├── ListGroupItem.jsx
│ │ ├── ListGroupItem.test.jsx
│ │ ├── Media.jsx
│ │ ├── Media.test.jsx
│ │ ├── MediaBody.jsx
│ │ ├── MediaBody.test.jsx
│ │ ├── MediaHeading.jsx
│ │ ├── MediaHeading.test.jsx
│ │ ├── MediaLeft.jsx
│ │ ├── MediaLeft.test.jsx
│ │ ├── MediaList.jsx
│ │ ├── MediaList.test.jsx
│ │ ├── MediaListItem.jsx
│ │ ├── MediaListItem.test.jsx
│ │ ├── MediaRight.jsx
│ │ ├── MediaRight.test.jsx
│ │ ├── MenuItem.jsx
│ │ ├── MenuItem.test.jsx
│ │ ├── Modal.jsx
│ │ ├── Modal.test.jsx
│ │ ├── ModalBody.jsx
│ │ ├── ModalBody.test.jsx
│ │ ├── ModalDialog.jsx
│ │ ├── ModalFooter.jsx
│ │ ├── ModalFooter.test.jsx
│ │ ├── ModalHeader.jsx
│ │ ├── ModalHeader.test.jsx
│ │ ├── ModalTitle.jsx
│ │ ├── ModalTitle.test.jsx
│ │ ├── Nav.jsx
│ │ ├── Nav.test.jsx
│ │ ├── NavDropdown.jsx
│ │ ├── NavDropdown.test.jsx
│ │ ├── NavItem.jsx
│ │ ├── NavItem.test.jsx
│ │ ├── Navbar.jsx
│ │ ├── Navbar.test.jsx
│ │ ├── NavbarBrand.jsx
│ │ ├── NavbarBrand.test.jsx
│ │ ├── NavbarCollapse.jsx
│ │ ├── NavbarHeader.jsx
│ │ ├── NavbarToggle.jsx
│ │ ├── Overlay.jsx
│ │ ├── OverlayTrigger.jsx
│ │ ├── OverlayTrigger.test.jsx
│ │ ├── PageHeader.jsx
│ │ ├── PageHeader.test.jsx
│ │ ├── PageItem.jsx
│ │ ├── Pager.jsx
│ │ ├── Pager.test.jsx
│ │ ├── PagerItem.jsx
│ │ ├── PagerItem.test.jsx
│ │ ├── Pagination.jsx
│ │ ├── Pagination.test.jsx
│ │ ├── PaginationItem.jsx
│ │ ├── Panel.jsx
│ │ ├── Panel.test.jsx
│ │ ├── PanelBody.jsx
│ │ ├── PanelCollapse.jsx
│ │ ├── PanelFooter.jsx
│ │ ├── PanelGroup.jsx
│ │ ├── PanelGroup.test.jsx
│ │ ├── PanelHeading.jsx
│ │ ├── PanelTitle.jsx
│ │ ├── PanelToggle.jsx
│ │ ├── Popover.jsx
│ │ ├── Popover.test.jsx
│ │ ├── ProgressBar.jsx
│ │ ├── ProgressBar.test.jsx
│ │ ├── Radio.jsx
│ │ ├── Radio.test.jsx
│ │ ├── ResponsiveEmbed.jsx
│ │ ├── ResponsiveEmbed.test.jsx
│ │ ├── Row.jsx
│ │ ├── Row.test.jsx
│ │ ├── SafeAnchor.jsx
│ │ ├── SafeAnchor.test.jsx
│ │ ├── SplitButton.jsx
│ │ ├── SplitButton.test.jsx
│ │ ├── SplitToggle.jsx
│ │ ├── Tab.jsx
│ │ ├── Tab.test.jsx
│ │ ├── TabContainer.jsx
│ │ ├── TabContainer.test.jsx
│ │ ├── TabContent.jsx
│ │ ├── TabPane.jsx
│ │ ├── Table.jsx
│ │ ├── Table.test.jsx
│ │ ├── Tabs.jsx
│ │ ├── Tabs.test.jsx
│ │ ├── Thumbnail.jsx
│ │ ├── Thumbnail.test.jsx
│ │ ├── ToggleButton.jsx
│ │ ├── ToggleButtonGroup.jsx
│ │ ├── ToggleButtonGroup.test.jsx
│ │ ├── Tooltip.jsx
│ │ ├── Tooltip.test.jsx
│ │ ├── Well.jsx
│ │ ├── Well.test.jsx
│ │ ├── helpers.jsx
│ │ ├── index.jsx
│ │ ├── test-setup.jsx
│ │ └── utils/
│ │ ├── PropTypes.js
│ │ ├── StyleConfig.js
│ │ ├── ValidComponentChildren.js
│ │ ├── bootstrapUtils.js
│ │ ├── capitalize.js
│ │ ├── createChainedFunction.js
│ │ ├── deprecationWarning.js
│ │ ├── index.js
│ │ └── splitComponentProps.js
│ ├── tsconfig.json
│ └── vitest.config.ts
├── index.html
├── mocks/
│ └── dateMock.js
├── npm-audit/
│ └── audit.json
├── package.json
├── packages/
│ ├── a11y/
│ │ ├── .npmignore
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── eslint.config.mjs
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── Gesture/
│ │ │ │ ├── constants.ts
│ │ │ │ ├── focus.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── preventScroll.test.tsx
│ │ │ │ ├── preventScroll.ts
│ │ │ │ ├── propTypes.ts
│ │ │ │ ├── withCalendarGesture.test.tsx
│ │ │ │ ├── withCalendarGesture.tsx
│ │ │ │ ├── withDynamicListGesture.test.jsx
│ │ │ │ ├── withDynamicListGesture.tsx
│ │ │ │ ├── withListGesture.test.jsx
│ │ │ │ ├── withListGesture.tsx
│ │ │ │ ├── withMonthCalendarGesture.test.tsx
│ │ │ │ ├── withMonthCalendarGesture.tsx
│ │ │ │ ├── withTreeGesture.test.jsx
│ │ │ │ └── withTreeGesture.tsx
│ │ │ ├── __mocks__/
│ │ │ │ ├── day-calendar.tsx
│ │ │ │ ├── list.tsx
│ │ │ │ ├── month-calendar.tsx
│ │ │ │ └── tree.tsx
│ │ │ ├── index.ts
│ │ │ └── test-setup.ts
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── assets-api/
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── eslint.config.mjs
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── index.test.ts
│ │ │ └── index.ts
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── cmf/
│ │ ├── .babelrc.json
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── 6.0-BreakingChanges.md
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── __tests__/
│ │ │ ├── App.test.jsx
│ │ │ ├── Dispatcher.test.jsx
│ │ │ ├── Inject.test.jsx
│ │ │ ├── __snapshots__/
│ │ │ │ ├── cmfConnect.test.jsx.snap
│ │ │ │ └── componentState.test.js.snap
│ │ │ ├── action.test.js
│ │ │ ├── actionCreator.test.js
│ │ │ ├── actions/
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── componentsActions.test.js.snap
│ │ │ │ ├── collectionsActions.test.js
│ │ │ │ ├── componentsActions.test.js
│ │ │ │ ├── http.test.js
│ │ │ │ ├── saga.test.js
│ │ │ │ └── settingsAction.test.js
│ │ │ ├── assert.test.js
│ │ │ ├── bootstrap.test.jsx
│ │ │ ├── cmfConnect.test.jsx
│ │ │ ├── cmfModule.merge.test.jsx
│ │ │ ├── cmfModule.test.js
│ │ │ ├── component.test.js
│ │ │ ├── componentState.test.js
│ │ │ ├── constant.test.js
│ │ │ ├── expression.test.jsx
│ │ │ ├── expressions/
│ │ │ │ └── index.test.jsx
│ │ │ ├── httpInterceptors.test.js
│ │ │ ├── localStorage.test.js
│ │ │ ├── matchPath.test.js
│ │ │ ├── middlewares/
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── http.test.js.snap
│ │ │ │ ├── cmf.test.js
│ │ │ │ ├── constants.test.js
│ │ │ │ ├── csrfHandling.test.js
│ │ │ │ ├── error.test.js
│ │ │ │ └── http.test.js
│ │ │ ├── omit.test.js
│ │ │ ├── onError.test.jsx
│ │ │ ├── onEvent.test.js
│ │ │ ├── reducers/
│ │ │ │ ├── collectionsReducers.test.js
│ │ │ │ ├── componentsReducers.test.js
│ │ │ │ ├── index.test.js
│ │ │ │ └── settingsReducers.test.js
│ │ │ ├── register.test.js
│ │ │ ├── registry.test.js
│ │ │ ├── sagas/
│ │ │ │ ├── collection.test.js
│ │ │ │ ├── component.test.js
│ │ │ │ ├── http.test.js
│ │ │ │ └── putActionCreator.test.js
│ │ │ ├── selectors/
│ │ │ │ ├── collections.test.js
│ │ │ │ ├── index.test.js
│ │ │ │ └── toJS.test.js
│ │ │ ├── settings.test.jsx
│ │ │ └── store.test.js
│ │ ├── assets/
│ │ │ ├── diagram-bootstrap.xml
│ │ │ ├── diagram-cmfConnect.xml
│ │ │ ├── diagram-code-orga.xml
│ │ │ ├── diagram-onError-sequence.puml
│ │ │ ├── diagram-react-redux-saga-rendering.xml
│ │ │ └── diagram-rendering-cycle.xml
│ │ ├── cmf.d.ts
│ │ ├── docs/
│ │ │ ├── api.md
│ │ │ ├── assets/
│ │ │ │ ├── CMF-action-diagram.txt
│ │ │ │ └── CMF-bootstrap-diagram.txt
│ │ │ ├── best-practices.md
│ │ │ ├── core-expressions.md
│ │ │ ├── core-onevent.md
│ │ │ ├── core-registry.md
│ │ │ ├── core-settings.md
│ │ │ ├── examples.md
│ │ │ ├── getting-started.md
│ │ │ ├── how-to-add-a-new-page.md
│ │ │ ├── how-to-connect.md
│ │ │ ├── how-to-edit-doc.md
│ │ │ ├── how-to-manage-collections.md
│ │ │ ├── package-redux.md
│ │ │ ├── package-router.md
│ │ │ ├── package-saga.md
│ │ │ └── what-is-cmf.md
│ │ ├── eslint.config.mjs
│ │ ├── package.json
│ │ ├── scripts/
│ │ │ └── cmf-settings.js
│ │ ├── src/
│ │ │ ├── App.jsx
│ │ │ ├── App.md
│ │ │ ├── Dispatcher.jsx
│ │ │ ├── Dispatcher.md
│ │ │ ├── Inject.component.jsx
│ │ │ ├── RegistryProvider.jsx
│ │ │ ├── action.js
│ │ │ ├── action.md
│ │ │ ├── actionCreator.js
│ │ │ ├── actionCreator.md
│ │ │ ├── actions/
│ │ │ │ ├── collectionsActions.js
│ │ │ │ ├── componentsActions.js
│ │ │ │ ├── http.js
│ │ │ │ ├── index.js
│ │ │ │ ├── saga.js
│ │ │ │ └── settingsActions.js
│ │ │ ├── api.md
│ │ │ ├── assert.js
│ │ │ ├── bootstrap.jsx
│ │ │ ├── bootstrap.md
│ │ │ ├── cmfConnect.jsx
│ │ │ ├── cmfConnect.md
│ │ │ ├── cmfModule.js
│ │ │ ├── cmfModule.merge.jsx
│ │ │ ├── component.js
│ │ │ ├── componentState.js
│ │ │ ├── components/
│ │ │ │ ├── ErrorBoundary/
│ │ │ │ │ ├── ErrorBoundary.component.js
│ │ │ │ │ └── ErrorBoundary.component.test.jsx
│ │ │ │ ├── ErrorFeedBack/
│ │ │ │ │ ├── ErrorFeedBack.component.jsx
│ │ │ │ │ ├── ErrorFeedBack.component.test.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── ErrorPanel/
│ │ │ │ │ ├── ErrorPanel.component.jsx
│ │ │ │ │ ├── ErrorPanel.component.test.jsx
│ │ │ │ │ └── index.js
│ │ │ │ └── Saga/
│ │ │ │ ├── CmfRegisteredSaga.component.js
│ │ │ │ ├── CmfRegisteredSaga.component.test.jsx
│ │ │ │ ├── Saga.component.js
│ │ │ │ ├── Saga.component.md
│ │ │ │ ├── Saga.component.test.jsx
│ │ │ │ ├── Saga.saga.js
│ │ │ │ ├── Saga.saga.test.js
│ │ │ │ └── index.js
│ │ │ ├── constant.js
│ │ │ ├── deprecated.js
│ │ │ ├── expression.jsx
│ │ │ ├── expression.md
│ │ │ ├── expressions/
│ │ │ │ ├── allOf.js
│ │ │ │ ├── getInState.js
│ │ │ │ ├── includes.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.md
│ │ │ │ └── oneOf.js
│ │ │ ├── httpInterceptors.js
│ │ │ ├── httpInterceptors.md
│ │ │ ├── index.js
│ │ │ ├── localStorage.js
│ │ │ ├── matchPath.js
│ │ │ ├── middlewares/
│ │ │ │ ├── cmf/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── index.md
│ │ │ │ ├── error/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── index.md
│ │ │ │ ├── http/
│ │ │ │ │ ├── constants.js
│ │ │ │ │ ├── csrfHandling.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── index.md
│ │ │ │ │ └── middleware.js
│ │ │ │ └── index.js
│ │ │ ├── mock/
│ │ │ │ ├── collections.js
│ │ │ │ ├── components.js
│ │ │ │ ├── index.js
│ │ │ │ ├── provider.jsx
│ │ │ │ ├── rtl.jsx
│ │ │ │ ├── settings.js
│ │ │ │ └── store.jsx
│ │ │ ├── omit.js
│ │ │ ├── onError.js
│ │ │ ├── onError.md
│ │ │ ├── onEvent.js
│ │ │ ├── onEvent.md
│ │ │ ├── reducers/
│ │ │ │ ├── collectionsReducers.js
│ │ │ │ ├── componentsReducers.js
│ │ │ │ ├── index.js
│ │ │ │ └── settingsReducers.js
│ │ │ ├── register.js
│ │ │ ├── registry.js
│ │ │ ├── registry.md
│ │ │ ├── sagas/
│ │ │ │ ├── collection.js
│ │ │ │ ├── component.js
│ │ │ │ ├── http.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.md
│ │ │ │ └── putActionCreator.js
│ │ │ ├── selectors/
│ │ │ │ ├── collections.js
│ │ │ │ ├── collections.md
│ │ │ │ ├── index.js
│ │ │ │ ├── index.md
│ │ │ │ ├── toJS.js
│ │ │ │ └── toJS.md
│ │ │ ├── settings.jsx
│ │ │ ├── settings.md
│ │ │ ├── store.js
│ │ │ ├── store.md
│ │ │ ├── test-setup.ts
│ │ │ └── useContext.js
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── cmf-cqrs/
│ │ ├── .babelrc.json
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── docs.json
│ │ ├── eslint.config.mjs
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── actions/
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── ack.test.js.snap
│ │ │ │ ├── ack.js
│ │ │ │ ├── ack.test.js
│ │ │ │ └── index.js
│ │ │ ├── components/
│ │ │ │ └── ACKDispatcher/
│ │ │ │ ├── ACKDispatcher.connect.js
│ │ │ │ ├── ACKDispatcher.container.js
│ │ │ │ ├── ACKDispatcher.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── ACKDispatcher.test.js.snap
│ │ │ │ │ └── ACKDispatcher.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── constants/
│ │ │ │ ├── ack.js
│ │ │ │ ├── index.js
│ │ │ │ ├── socketMiddleware.js
│ │ │ │ └── status.js
│ │ │ ├── index.test.js
│ │ │ ├── index.ts
│ │ │ ├── middleware/
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── socketMiddleware.test.js.snap
│ │ │ │ ├── index.js
│ │ │ │ ├── smartWebsocket.js
│ │ │ │ ├── smartWebsocket.test.js
│ │ │ │ ├── socketMiddleware.js
│ │ │ │ └── socketMiddleware.test.js
│ │ │ ├── reducers/
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── ack.test.js.snap
│ │ │ │ ├── ack.js
│ │ │ │ ├── ack.test.js
│ │ │ │ └── index.js
│ │ │ ├── registry.js
│ │ │ ├── sagas/
│ │ │ │ ├── ack.js
│ │ │ │ ├── ack.test.js
│ │ │ │ └── index.js
│ │ │ ├── test-setup.ts
│ │ │ ├── useWebSocket.hook.test.ts
│ │ │ └── useWebSocket.hook.ts
│ │ ├── tsconfig.build.json
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── cmf-router/
│ │ ├── .babelrc.json
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── eslint.config.mjs
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── UIRouter.jsx
│ │ │ ├── constant.js
│ │ │ ├── expressions.js
│ │ │ ├── expressions.md
│ │ │ ├── expressions.test.js
│ │ │ ├── history.js
│ │ │ ├── index.jsx
│ │ │ ├── index.test.js
│ │ │ ├── middleware.js
│ │ │ ├── middleware.md
│ │ │ ├── middleware.test.js
│ │ │ ├── sagaRouter.js
│ │ │ ├── sagaRouter.md
│ │ │ ├── sagaRouter.test.js
│ │ │ ├── sagas/
│ │ │ │ ├── documentTitle.js
│ │ │ │ └── documentTitle.test.js
│ │ │ ├── selectors.js
│ │ │ └── selectors.test.js
│ │ ├── talend-scripts.json
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── components/
│ │ ├── .babelrc.json
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── .sass-lint.yml
│ │ ├── .storybook/
│ │ │ ├── main.ts
│ │ │ ├── preview-head.html
│ │ │ └── preview.ts
│ │ ├── 6.0 - breaking changes.md
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── __mocks__/
│ │ │ ├── day-calendar.jsx
│ │ │ ├── list.jsx
│ │ │ └── month-calendar.jsx
│ │ ├── custom.d.ts
│ │ ├── eslint.config.mjs
│ │ ├── i18next-scanner.config.js
│ │ ├── package.json
│ │ ├── screenshots.config.json
│ │ ├── src/
│ │ │ ├── AboutDialog/
│ │ │ │ ├── AboutDialog.component.jsx
│ │ │ │ ├── AboutDialog.module.css
│ │ │ │ ├── AboutDialog.test.jsx
│ │ │ │ ├── AboutDialogTable.component.jsx
│ │ │ │ ├── AboutModal.stories.jsx
│ │ │ │ └── index.js
│ │ │ ├── ActionBar/
│ │ │ │ ├── ActionBar.component.jsx
│ │ │ │ ├── ActionBar.module.css
│ │ │ │ ├── ActionBar.stories.jsx
│ │ │ │ ├── ActionBar.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── ActionIntercom/
│ │ │ │ ├── Intercom.component.jsx
│ │ │ │ ├── Intercom.component.test.jsx
│ │ │ │ ├── Intercom.module.css
│ │ │ │ ├── Intercom.service.jsx
│ │ │ │ ├── Intercom.service.test.jsx
│ │ │ │ ├── Intercom.stories.jsx
│ │ │ │ └── index.js
│ │ │ ├── ActionList/
│ │ │ │ ├── ActionList.component.jsx
│ │ │ │ ├── ActionList.module.css
│ │ │ │ ├── ActionList.stories.jsx
│ │ │ │ ├── ActionList.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── Actions/
│ │ │ │ ├── Action/
│ │ │ │ │ ├── Action.component.jsx
│ │ │ │ │ ├── Action.test.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── ActionButton/
│ │ │ │ │ ├── ActionButton.component.jsx
│ │ │ │ │ ├── ActionButton.module.css
│ │ │ │ │ ├── ActionButton.test.jsx
│ │ │ │ │ ├── Button.stories.jsx
│ │ │ │ │ ├── Button.stories.module.css
│ │ │ │ │ └── index.js
│ │ │ │ ├── ActionDropdown/
│ │ │ │ │ ├── ActionDropdown.component.jsx
│ │ │ │ │ ├── ActionDropdown.component.md
│ │ │ │ │ ├── ActionDropdown.module.css
│ │ │ │ │ ├── ActionDropdown.snapshot.test.jsx
│ │ │ │ │ ├── ActionDropdown.test.jsx
│ │ │ │ │ ├── Dropdown.stories.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── ActionFile/
│ │ │ │ │ ├── ActionFile.component.jsx
│ │ │ │ │ ├── ActionFile.module.css
│ │ │ │ │ ├── ActionFile.test.jsx
│ │ │ │ │ ├── File.stories.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── ActionIconToggle/
│ │ │ │ │ ├── ActionIconToggle.component.jsx
│ │ │ │ │ ├── ActionIconToggle.component.test.jsx
│ │ │ │ │ ├── ActionIconToggle.module.css
│ │ │ │ │ ├── IconToggle.stories.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── ActionSplitDropdown/
│ │ │ │ │ ├── ActionSplitDropdown.component.jsx
│ │ │ │ │ ├── ActionSplitDropdown.module.css
│ │ │ │ │ ├── ActionSplitDropdown.test.jsx
│ │ │ │ │ ├── SplitDropdown.stories.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── Actions.component.jsx
│ │ │ │ ├── Actions.test.jsx
│ │ │ │ ├── ButtonGroup.stories.jsx
│ │ │ │ ├── index.js
│ │ │ │ ├── wrapOnClick.js
│ │ │ │ └── wrapOnClick.test.js
│ │ │ ├── AppGuidedTour/
│ │ │ │ ├── AppGuidedTour.component.jsx
│ │ │ │ ├── AppGuidedTour.stories.jsx
│ │ │ │ ├── AppGuidedTour.test.jsx
│ │ │ │ ├── DemoContentStep.component.jsx
│ │ │ │ ├── DemoContentStep.component.test.jsx
│ │ │ │ ├── DemoContentStep.module.css
│ │ │ │ └── index.js
│ │ │ ├── AppLoader/
│ │ │ │ ├── AppLoader.component.jsx
│ │ │ │ ├── AppLoader.md
│ │ │ │ ├── AppLoader.stories.jsx
│ │ │ │ ├── AppLoader.test.jsx
│ │ │ │ ├── constant.js
│ │ │ │ └── index.js
│ │ │ ├── AppSwitcher/
│ │ │ │ ├── AppSwitcher.component.jsx
│ │ │ │ ├── AppSwitcher.component.test.jsx
│ │ │ │ ├── AppSwitcher.module.css
│ │ │ │ └── index.js
│ │ │ ├── Badge/
│ │ │ │ ├── Badge.component.jsx
│ │ │ │ ├── Badge.component.test.jsx
│ │ │ │ ├── Badge.module.css
│ │ │ │ ├── Badge.stories.jsx
│ │ │ │ ├── BadgeComposition/
│ │ │ │ │ ├── BadgeCategory/
│ │ │ │ │ │ ├── BadgeCategory.component.jsx
│ │ │ │ │ │ ├── BadgeCategory.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── BadgeDelete/
│ │ │ │ │ │ ├── BadgeDelete.component.jsx
│ │ │ │ │ │ ├── BadgeDelete.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── BadgeDropdown/
│ │ │ │ │ │ ├── BadgeDropdown.component.jsx
│ │ │ │ │ │ ├── BadgeDropdown.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── BadgeIcon/
│ │ │ │ │ │ ├── BadgeIcon.component.jsx
│ │ │ │ │ │ ├── BadgeIcon.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── BadgeIcon.component.test.js.snap
│ │ │ │ │ │ │ └── BadgeIcon.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── BadgeLabel/
│ │ │ │ │ │ ├── BadgeLabel.component.jsx
│ │ │ │ │ │ ├── BadgeLabel.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── BadgeSeparator/
│ │ │ │ │ │ ├── BadgeSeparator.component.jsx
│ │ │ │ │ │ ├── BadgeSeparator.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── BadgeSeparator.component.test.js.snap
│ │ │ │ │ │ │ └── BadgeSeparator.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ └── index.js
│ │ │ ├── Breadcrumbs/
│ │ │ │ ├── Breadcrumbs.component.jsx
│ │ │ │ ├── Breadcrumbs.module.css
│ │ │ │ ├── Breadcrumbs.snapshot.test.jsx
│ │ │ │ ├── Breadcrumbs.stories.jsx
│ │ │ │ ├── Breadcrumbs.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── Checkbox/
│ │ │ │ ├── Checkbox.jsx
│ │ │ │ ├── Checkbox.stories.jsx
│ │ │ │ └── index.js
│ │ │ ├── CircularProgress/
│ │ │ │ ├── CircularProgress.component.jsx
│ │ │ │ ├── CircularProgress.module.css
│ │ │ │ ├── CircularProgress.test.jsx
│ │ │ │ ├── Spinner.stories.jsx
│ │ │ │ └── index.js
│ │ │ ├── CollapsiblePanel/
│ │ │ │ ├── CollapsiblePanel.component.jsx
│ │ │ │ ├── CollapsiblePanel.module.css
│ │ │ │ ├── CollapsiblePanel.snapshot.test.jsx
│ │ │ │ ├── CollapsiblePanel.stories.jsx
│ │ │ │ ├── CollapsiblePanel.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── ConfirmDialog/
│ │ │ │ ├── ConfirmDialog.component.jsx
│ │ │ │ ├── ConfirmDialog.stories.jsx
│ │ │ │ ├── ConfirmDialog.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── DataViewer/
│ │ │ │ ├── Badges/
│ │ │ │ │ ├── LengthBadge/
│ │ │ │ │ │ ├── LengthBadge.component.jsx
│ │ │ │ │ │ ├── LengthBadge.module.css
│ │ │ │ │ │ ├── LengthBadge.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── LengthBadge.test.js.snap
│ │ │ │ │ │ │ └── LengthBadge.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── Core/
│ │ │ │ │ ├── Tree/
│ │ │ │ │ │ ├── Tree.component.jsx
│ │ │ │ │ │ ├── Tree.module.css
│ │ │ │ │ │ ├── Tree.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── TreeNode/
│ │ │ │ │ │ ├── TreeNode.component.js
│ │ │ │ │ │ ├── TreeNode.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── TreeNodeList/
│ │ │ │ │ │ ├── TreeNodeList.component.jsx
│ │ │ │ │ │ ├── TreeNodeList.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── DataViewer.stories.jsx
│ │ │ │ ├── Headers/
│ │ │ │ │ ├── TreeHeader/
│ │ │ │ │ │ ├── TreeHeader.component.jsx
│ │ │ │ │ │ ├── TreeHeader.module.css
│ │ │ │ │ │ ├── TreeHeader.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── TreeHeader.test.js.snap
│ │ │ │ │ │ │ └── TreeHeader.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── Icons/
│ │ │ │ │ ├── TreeBranchIcon/
│ │ │ │ │ │ ├── TreeBranchIcon.component.jsx
│ │ │ │ │ │ ├── TreeBranchIcon.module.css
│ │ │ │ │ │ ├── TreeBranchIcon.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── Managers/
│ │ │ │ │ ├── TreeManager/
│ │ │ │ │ │ ├── TreeManager.container.js
│ │ │ │ │ │ ├── TreeManager.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── ModelViewer/
│ │ │ │ │ ├── Branch/
│ │ │ │ │ │ ├── ModelViewerBranch.component.jsx
│ │ │ │ │ │ ├── ModelViewerBranch.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Leaf/
│ │ │ │ │ │ ├── ModelViewerLeaf.component.jsx
│ │ │ │ │ │ ├── ModelViewerLeaf.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── ModelViewerLeaf.test.js.snap
│ │ │ │ │ │ │ └── ModelViewerLeaf.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── ModelViewer.component.jsx
│ │ │ │ │ ├── ModelViewer.component.test.jsx
│ │ │ │ │ ├── ModelViewer.container.jsx
│ │ │ │ │ ├── ModelViewer.container.test.jsx
│ │ │ │ │ ├── ModelViewer.module.css
│ │ │ │ │ ├── ModelViewer.parser.test.js
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── ModelViewer.component.test.js.snap
│ │ │ │ │ │ ├── ModelViewer.component.test.jsx.snap
│ │ │ │ │ │ ├── ModelViewer.container.test.js.snap
│ │ │ │ │ │ └── ModelViewer.container.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── RecordsViewer/
│ │ │ │ │ ├── Branch/
│ │ │ │ │ │ ├── RecordsViewerBranch.component.jsx
│ │ │ │ │ │ ├── RecordsViewerBranch.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── RecordsViewerBranch.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── CellRenderer/
│ │ │ │ │ │ ├── RecordsCellRenderer.component.jsx
│ │ │ │ │ │ ├── RecordsCellRenderer.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── RecordsCellRenderer.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Leaf/
│ │ │ │ │ │ ├── RecordsViewerLeaf.component.jsx
│ │ │ │ │ │ ├── RecordsViewerLeaf.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── RecordsViewerLeaf.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── RecordsViewer.component.jsx
│ │ │ │ │ ├── RecordsViewer.component.test.jsx
│ │ │ │ │ ├── RecordsViewer.container.jsx
│ │ │ │ │ ├── RecordsViewer.container.test.jsx
│ │ │ │ │ ├── RecordsViewer.module.css
│ │ │ │ │ ├── RecordsViewer.parser.js
│ │ │ │ │ ├── RecordsViewer.parser.test.js
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── RecordsViewer.component.test.jsx.snap
│ │ │ │ │ │ ├── RecordsViewer.container.test.js.snap
│ │ │ │ │ │ └── RecordsViewer.container.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── Text/
│ │ │ │ │ ├── SimpleTextKeyValue/
│ │ │ │ │ │ ├── DefaultValueRenderer.component.jsx
│ │ │ │ │ │ ├── DefaultValueRenderer.module.css
│ │ │ │ │ │ ├── DefaultValueRenderer.test.jsx
│ │ │ │ │ │ ├── SimpleTextKeyValue.component.jsx
│ │ │ │ │ │ ├── SimpleTextKeyValue.module.css
│ │ │ │ │ │ ├── SimpleTextKeyValue.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── SimpleTextKeyValue.test.js.snap
│ │ │ │ │ │ │ └── SimpleTextKeyValue.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── Virtualized/
│ │ │ │ │ ├── TreeCellMeasurer/
│ │ │ │ │ │ ├── TreeCellMeasurer.component.jsx
│ │ │ │ │ │ ├── TreeCellMeasurer.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── TreeCellMeasurer.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── VirtualizedTree/
│ │ │ │ │ │ ├── VirtualizedTree.component.jsx
│ │ │ │ │ │ ├── VirtualizedTree.module.css
│ │ │ │ │ │ ├── VirtualizedTree.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── VirtualizedTree.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ ├── jsonPath.js
│ │ │ │ ├── jsonPath.test.js
│ │ │ │ ├── sample.raw.json
│ │ │ │ └── theme.module.css
│ │ │ ├── Datalist/
│ │ │ │ ├── Datalist.component.jsx
│ │ │ │ ├── Datalist.component.test.jsx
│ │ │ │ ├── Datalist.module.css
│ │ │ │ ├── Datalist.stories.jsx
│ │ │ │ └── index.js
│ │ │ ├── DateTimePickers/
│ │ │ │ ├── Date/
│ │ │ │ │ ├── Context.js
│ │ │ │ │ ├── Input/
│ │ │ │ │ │ ├── Input.component.jsx
│ │ │ │ │ │ ├── Input.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Manager/
│ │ │ │ │ │ ├── Manager.component.jsx
│ │ │ │ │ │ ├── Manager.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Picker/
│ │ │ │ │ │ ├── Picker.component.jsx
│ │ │ │ │ │ ├── Picker.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── date-extraction.js
│ │ │ │ │ ├── date-extraction.test.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── DateRange/
│ │ │ │ │ ├── Context.js
│ │ │ │ │ ├── Input/
│ │ │ │ │ │ ├── Input.component.jsx
│ │ │ │ │ │ ├── Input.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Manager/
│ │ │ │ │ │ ├── Manager.component.jsx
│ │ │ │ │ │ ├── Manager.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Picker/
│ │ │ │ │ │ ├── Picker.component.jsx
│ │ │ │ │ │ ├── Picker.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Picker.component.test.js.snap
│ │ │ │ │ │ │ └── Picker.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── constants.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── DateTime/
│ │ │ │ │ ├── Context.js
│ │ │ │ │ ├── Manager/
│ │ │ │ │ │ ├── Manager.component.jsx
│ │ │ │ │ │ ├── Manager.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── datetime-extraction.js
│ │ │ │ │ ├── datetime-extraction.test.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── DateTimeRange/
│ │ │ │ │ ├── Context.js
│ │ │ │ │ ├── Manager/
│ │ │ │ │ │ ├── Manager.component.jsx
│ │ │ │ │ │ ├── Manager.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── InputDatePicker/
│ │ │ │ │ ├── DatePicker.stories.jsx
│ │ │ │ │ ├── InputDatePicker.component.jsx
│ │ │ │ │ ├── InputDatePicker.module.css
│ │ │ │ │ └── index.js
│ │ │ │ ├── InputDateRangePicker/
│ │ │ │ │ ├── DateRangePicker.stories.jsx
│ │ │ │ │ ├── InputDateRangePicker.component.jsx
│ │ │ │ │ ├── InputDateRangePicker.module.css
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── index.js
│ │ │ │ ├── InputDateTimePicker/
│ │ │ │ │ ├── DateTimePicker.stories.jsx
│ │ │ │ │ ├── InputDateTimePicker.component.jsx
│ │ │ │ │ ├── InputDateTimePicker.component.test.jsx
│ │ │ │ │ ├── InputDateTimePicker.module.css
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── InputDateTimePicker.component.test.js.snap
│ │ │ │ │ │ └── InputDateTimePicker.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── InputDateTimeRangePicker/
│ │ │ │ │ ├── DateTimeRangePicker.stories.jsx
│ │ │ │ │ ├── InputDateTimeRangePicker.component.jsx
│ │ │ │ │ ├── InputDateTimeRangePicker.component.test.jsx
│ │ │ │ │ ├── InputDateTimeRangePicker.module.css
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── InputDateTimeRangePicker.component.test.js.snap
│ │ │ │ │ │ └── InputDateTimeRangePicker.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── InputTimePicker/
│ │ │ │ │ ├── InputTimePicker.component.jsx
│ │ │ │ │ ├── InputTimePicker.component.test.jsx
│ │ │ │ │ ├── InputTimePicker.module.css
│ │ │ │ │ ├── TimePicker.stories.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── LegacyDateTimePickers/
│ │ │ │ │ ├── DateTime/
│ │ │ │ │ │ ├── Context.js
│ │ │ │ │ │ ├── Input/
│ │ │ │ │ │ │ ├── Input.component.jsx
│ │ │ │ │ │ │ ├── Input.component.test.jsx
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── Manager/
│ │ │ │ │ │ │ ├── Manager.component.jsx
│ │ │ │ │ │ │ ├── Manager.component.test.jsx
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── Picker/
│ │ │ │ │ │ │ ├── Picker.component.jsx
│ │ │ │ │ │ │ ├── Picker.component.test.jsx
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── Validation/
│ │ │ │ │ │ │ ├── Error.component.test.tsx
│ │ │ │ │ │ │ ├── Error.component.tsx
│ │ │ │ │ │ │ ├── Validation.component.jsx
│ │ │ │ │ │ │ ├── Validation.component.test.jsx
│ │ │ │ │ │ │ ├── Validation.module.css
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── constants.js
│ │ │ │ │ │ ├── date-extraction.js
│ │ │ │ │ │ ├── date-extraction.test.js
│ │ │ │ │ │ ├── error-messages.js
│ │ │ │ │ │ ├── error-messages.test.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── InputDateTimePicker/
│ │ │ │ │ │ ├── InputDateTimePicker.component.jsx
│ │ │ │ │ │ ├── InputDateTimePicker.component.test.jsx
│ │ │ │ │ │ ├── InputDateTimePicker.module.css
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── LegacyDateTimePicker.stories.jsx
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── generator.js
│ │ │ │ │ ├── generator.test.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── pickers/
│ │ │ │ │ │ ├── DatePicker/
│ │ │ │ │ │ │ ├── DatePicker.component.jsx
│ │ │ │ │ │ │ ├── DatePicker.module.css
│ │ │ │ │ │ │ ├── DatePicker.test.jsx
│ │ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ │ ├── DatePicker.test.js.snap
│ │ │ │ │ │ │ │ └── DatePicker.test.jsx.snap
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── DateTimePicker/
│ │ │ │ │ │ │ ├── DateTimePicker.component.jsx
│ │ │ │ │ │ │ ├── DateTimePicker.module.css
│ │ │ │ │ │ │ ├── DateTimePicker.test.jsx
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── MonthPicker/
│ │ │ │ │ │ │ ├── MonthPicker.component.jsx
│ │ │ │ │ │ │ ├── MonthPicker.module.css
│ │ │ │ │ │ │ ├── MonthPicker.test.jsx
│ │ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ │ ├── MonthPicker.test.js.snap
│ │ │ │ │ │ │ │ └── MonthPicker.test.jsx.snap
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── TimePicker/
│ │ │ │ │ │ │ ├── TimePicker.component.jsx
│ │ │ │ │ │ │ ├── TimePicker.md
│ │ │ │ │ │ │ ├── TimePicker.module.css
│ │ │ │ │ │ │ ├── TimePicker.test.jsx
│ │ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ │ ├── TimePicker.test.js.snap
│ │ │ │ │ │ │ │ └── TimePicker.test.jsx.snap
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── YearPicker/
│ │ │ │ │ │ ├── YearPicker.component.jsx
│ │ │ │ │ │ ├── YearPicker.md
│ │ │ │ │ │ ├── YearPicker.module.css
│ │ │ │ │ │ ├── YearPicker.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── YearPicker.test.js.snap
│ │ │ │ │ │ │ └── YearPicker.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── shared/
│ │ │ │ │ │ └── styles/
│ │ │ │ │ │ ├── mixins.scss
│ │ │ │ │ │ └── variables.scss
│ │ │ │ │ └── views/
│ │ │ │ │ ├── DateTimeView/
│ │ │ │ │ │ ├── DateTimeView.component.jsx
│ │ │ │ │ │ ├── DateTimeView.module.css
│ │ │ │ │ │ ├── DateTimeView.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── DateTimeView.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── HeaderTitle/
│ │ │ │ │ │ ├── HeaderTitle.component.jsx
│ │ │ │ │ │ ├── HeaderTitle.module.css
│ │ │ │ │ │ ├── HeaderTitle.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── HeaderTitle.test.js.snap
│ │ │ │ │ │ │ └── HeaderTitle.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── MonthYearView/
│ │ │ │ │ │ ├── MonthYearView.component.jsx
│ │ │ │ │ │ ├── MonthYearView.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── MonthYearView.test.js.snap
│ │ │ │ │ │ │ └── MonthYearView.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── ViewLayout/
│ │ │ │ │ ├── ViewLayout.component.jsx
│ │ │ │ │ ├── ViewLayout.module.css
│ │ │ │ │ ├── ViewLayout.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── ViewLayout.test.js.snap
│ │ │ │ │ │ └── ViewLayout.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── README.md
│ │ │ │ ├── Time/
│ │ │ │ │ ├── Context.js
│ │ │ │ │ ├── Input/
│ │ │ │ │ │ ├── Input.component.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Manager/
│ │ │ │ │ │ ├── Manager.component.jsx
│ │ │ │ │ │ ├── Manager.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── Manager.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Picker/
│ │ │ │ │ │ ├── Picker.component.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── time-extraction.js
│ │ │ │ │ └── time-extraction.test.js
│ │ │ │ ├── TimeZone/
│ │ │ │ │ ├── TimeZone.component.jsx
│ │ │ │ │ ├── TimeZone.component.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── TimeZone.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── generator.js
│ │ │ │ ├── generator.test.js
│ │ │ │ ├── gesture/
│ │ │ │ │ └── timePickerGesture.js
│ │ │ │ ├── hooks/
│ │ │ │ │ └── useInputPickerHandlers.js
│ │ │ │ ├── index.js
│ │ │ │ ├── pickers/
│ │ │ │ │ ├── CalendarPicker/
│ │ │ │ │ │ ├── CalendarPicker.component.jsx
│ │ │ │ │ │ ├── CalendarPicker.module.css
│ │ │ │ │ │ ├── CalendarPicker.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── DatePicker/
│ │ │ │ │ │ ├── DatePicker.component.jsx
│ │ │ │ │ │ ├── DatePicker.module.css
│ │ │ │ │ │ ├── DatePicker.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── DatePicker.test.js.snap
│ │ │ │ │ │ │ └── DatePicker.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── MonthPicker/
│ │ │ │ │ │ ├── MonthPicker.component.jsx
│ │ │ │ │ │ ├── MonthPicker.module.css
│ │ │ │ │ │ ├── MonthPicker.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── MonthPicker.test.js.snap
│ │ │ │ │ │ │ └── MonthPicker.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── TimePicker/
│ │ │ │ │ │ ├── TimePicker.component.jsx
│ │ │ │ │ │ ├── TimePicker.component.test.jsx
│ │ │ │ │ │ ├── TimePicker.module.css
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── TimePicker.component.test.js.snap
│ │ │ │ │ │ │ └── TimePicker.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── YearPicker/
│ │ │ │ │ ├── YearPicker.component.jsx
│ │ │ │ │ ├── YearPicker.md
│ │ │ │ │ ├── YearPicker.module.css
│ │ │ │ │ ├── YearPicker.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── YearPicker.test.js.snap
│ │ │ │ │ │ └── YearPicker.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── shared/
│ │ │ │ │ ├── InputSizer/
│ │ │ │ │ │ ├── InputSizer.component.test.jsx
│ │ │ │ │ │ ├── InputSizer.component.tsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── constants.js
│ │ │ │ │ ├── error-messages.js
│ │ │ │ │ └── styles/
│ │ │ │ │ ├── mixins.scss
│ │ │ │ │ └── variables.scss
│ │ │ │ └── views/
│ │ │ │ ├── DateView/
│ │ │ │ │ ├── DateView.component.jsx
│ │ │ │ │ ├── DateView.module.css
│ │ │ │ │ ├── DateView.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── DateView.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── HeaderTitle/
│ │ │ │ │ ├── HeaderTitle.component.jsx
│ │ │ │ │ ├── HeaderTitle.module.css
│ │ │ │ │ ├── HeaderTitle.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── HeaderTitle.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── MonthYearView/
│ │ │ │ │ ├── MonthYearView.component.jsx
│ │ │ │ │ ├── MonthYearView.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── MonthYearView.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ └── ViewLayout/
│ │ │ │ ├── ViewLayout.component.tsx
│ │ │ │ ├── ViewLayout.module.css
│ │ │ │ ├── ViewLayout.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── ViewLayout.test.js.snap
│ │ │ │ │ └── ViewLayout.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Dialog/
│ │ │ │ ├── Dialog.component.jsx
│ │ │ │ ├── Dialog.css
│ │ │ │ ├── Dialog.stories.jsx
│ │ │ │ ├── Dialog.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── Dialog.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Drawer/
│ │ │ │ ├── Drawer.component.jsx
│ │ │ │ ├── Drawer.module.css
│ │ │ │ ├── Drawer.stories.jsx
│ │ │ │ ├── Drawer.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Drawer.test.js.snap
│ │ │ │ │ └── Drawer.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── EditableText/
│ │ │ │ ├── EditableText.component.jsx
│ │ │ │ ├── EditableText.module.css
│ │ │ │ ├── EditableText.stories.jsx
│ │ │ │ ├── EditableText.test.jsx
│ │ │ │ ├── InlineForm.component.jsx
│ │ │ │ ├── InlineForm.component.test.jsx
│ │ │ │ ├── InlineForm.module.css
│ │ │ │ ├── PlainTextTitle.component.test.jsx
│ │ │ │ ├── PlainTextTitle.component.tsx
│ │ │ │ ├── PlainTextTitle.module.css
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── EditableText.test.js.snap
│ │ │ │ │ ├── EditableText.test.jsx.snap
│ │ │ │ │ ├── InlineForm.component.test.js.snap
│ │ │ │ │ ├── InlineForm.component.test.jsx.snap
│ │ │ │ │ ├── PlainTextTitle.component.test.js.snap
│ │ │ │ │ └── PlainTextTitle.component.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Emphasis/
│ │ │ │ ├── Emphasis.component.jsx
│ │ │ │ ├── Emphasis.module.css
│ │ │ │ ├── Emphasis.stories.jsx
│ │ │ │ ├── Emphasis.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── Enumeration/
│ │ │ │ ├── Enumeration.component.jsx
│ │ │ │ ├── Enumeration.module.css
│ │ │ │ ├── Enumeration.propTypes.js
│ │ │ │ ├── Enumeration.stories.jsx
│ │ │ │ ├── Enumeration.stories.module.css
│ │ │ │ ├── Enumeration.test.jsx
│ │ │ │ ├── Header/
│ │ │ │ │ ├── Header.component.jsx
│ │ │ │ │ ├── Header.module.css
│ │ │ │ │ ├── Header.propTypes.js
│ │ │ │ │ ├── Header.test.jsx
│ │ │ │ │ ├── HeaderEnumeration.component.jsx
│ │ │ │ │ ├── HeaderInput.component.jsx
│ │ │ │ │ ├── HeaderInput.test.jsx
│ │ │ │ │ ├── HeaderSelected.component.jsx
│ │ │ │ │ └── headerSelected.test.jsx
│ │ │ │ ├── Items/
│ │ │ │ │ ├── EmptyListPlaceholder.component.jsx
│ │ │ │ │ ├── EmptyListPlaceholder.module.css
│ │ │ │ │ ├── Item/
│ │ │ │ │ │ ├── Item.component.jsx
│ │ │ │ │ │ ├── Item.module.css
│ │ │ │ │ │ ├── Item.propTypes.js
│ │ │ │ │ │ ├── Item.test.jsx
│ │ │ │ │ │ ├── ItemEdit.component.jsx
│ │ │ │ │ │ ├── ItemEdit.propTypes.js
│ │ │ │ │ │ ├── ItemEdit.test.jsx
│ │ │ │ │ │ ├── utils.js
│ │ │ │ │ │ └── utils.test.js
│ │ │ │ │ ├── Items.component.jsx
│ │ │ │ │ ├── Items.module.css
│ │ │ │ │ └── ItemsEnumeration.component.jsx
│ │ │ │ ├── displayModes.js
│ │ │ │ └── index.js
│ │ │ ├── FilterBar/
│ │ │ │ ├── Filter.stories.jsx
│ │ │ │ ├── FilterBar.component.jsx
│ │ │ │ ├── FilterBar.module.css
│ │ │ │ ├── FilterBar.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── FocusManager/
│ │ │ │ ├── FocusManager.component.jsx
│ │ │ │ ├── FocusManager.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── FormatValue/
│ │ │ │ ├── FormatValue.component.jsx
│ │ │ │ ├── FormatValue.module.css
│ │ │ │ ├── FormatValue.stories.jsx
│ │ │ │ ├── FormatValue.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── FormatValue.test.js.snap
│ │ │ │ │ └── FormatValue.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Gesture/
│ │ │ │ └── index.ts
│ │ │ ├── GridLayout/
│ │ │ │ ├── Dashboard.stories.jsx
│ │ │ │ ├── Grid.component.jsx
│ │ │ │ ├── Grid.component.test.jsx
│ │ │ │ ├── Grid.module.css
│ │ │ │ ├── Tile/
│ │ │ │ │ ├── Body/
│ │ │ │ │ │ ├── TileBody.component.test.tsx
│ │ │ │ │ │ ├── TileBody.component.tsx
│ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ └── TileBody.component.test.tsx.snap
│ │ │ │ │ ├── Footer/
│ │ │ │ │ │ ├── TileFooter.component.test.tsx
│ │ │ │ │ │ ├── TileFooter.component.tsx
│ │ │ │ │ │ ├── TileFooter.module.css
│ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ └── TileFooter.component.test.tsx.snap
│ │ │ │ │ ├── Header/
│ │ │ │ │ │ ├── TileHeader.component.test.tsx
│ │ │ │ │ │ ├── TileHeader.component.tsx
│ │ │ │ │ │ ├── TileHeader.module.css
│ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ └── TileHeader.component.test.tsx.snap
│ │ │ │ │ ├── Skeleton/
│ │ │ │ │ │ ├── SkeletonTile.component.test.tsx
│ │ │ │ │ │ ├── SkeletonTile.component.tsx
│ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ └── SkeletonTile.component.test.tsx.snap
│ │ │ │ │ ├── Tile.component.test.tsx
│ │ │ │ │ ├── Tile.component.tsx
│ │ │ │ │ ├── Tile.module.css
│ │ │ │ │ ├── context.ts
│ │ │ │ │ └── index.ts
│ │ │ │ └── index.js
│ │ │ ├── GuidedTour/
│ │ │ │ ├── GuidedTour.component.jsx
│ │ │ │ ├── GuidedTour.module.css
│ │ │ │ ├── GuidedTour.stories.jsx
│ │ │ │ ├── GuidedTour.test.jsx
│ │ │ │ ├── README.md
│ │ │ │ └── index.js
│ │ │ ├── HeaderBar/
│ │ │ │ ├── HeaderBar.component.jsx
│ │ │ │ ├── HeaderBar.module.css
│ │ │ │ ├── HeaderBar.stories.jsx
│ │ │ │ ├── HeaderBar.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── HeaderBar.test.js.snap
│ │ │ │ │ └── HeaderBar.test.jsx.snap
│ │ │ │ ├── index.js
│ │ │ │ └── primitives/
│ │ │ │ ├── AppNotification.component.jsx
│ │ │ │ ├── CallToAction.component.jsx
│ │ │ │ ├── Environment.component.jsx
│ │ │ │ ├── GenericAction.component.jsx
│ │ │ │ ├── Help.component.jsx
│ │ │ │ ├── Information.component.jsx
│ │ │ │ ├── Intercom.component.jsx
│ │ │ │ ├── Logo.component.jsx
│ │ │ │ ├── Search.component.jsx
│ │ │ │ └── User.component.jsx
│ │ │ ├── HttpError/
│ │ │ │ ├── HttpError.component.jsx
│ │ │ │ ├── HttpError.module.css
│ │ │ │ ├── HttpError.snapshot.test.jsx
│ │ │ │ ├── HttpError.stories.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── HttpError.snapshot.test.js.snap
│ │ │ │ │ └── HttpError.snapshot.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Icon/
│ │ │ │ └── index.ts
│ │ │ ├── IconsProvider/
│ │ │ │ ├── README.md
│ │ │ │ └── index.ts
│ │ │ ├── Inject/
│ │ │ │ ├── Inject.component.tsx
│ │ │ │ ├── Inject.md
│ │ │ │ ├── Inject.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── Inject.test.jsx.snap
│ │ │ │ └── index.ts
│ │ │ ├── JSONSchemaRenderer/
│ │ │ │ ├── JSONSchemaRenderer.component.jsx
│ │ │ │ ├── JSONSchemaRenderer.module.css
│ │ │ │ ├── JSONSchemaRenderer.stories.jsx
│ │ │ │ ├── JSONSchemaRenderer.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── JSONSchemaRenderer.test.js.snap
│ │ │ │ │ └── JSONSchemaRenderer.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Layout/
│ │ │ │ ├── AppLayout.stories.jsx
│ │ │ │ ├── Layout.component.jsx
│ │ │ │ ├── Layout.md
│ │ │ │ ├── Layout.module.css
│ │ │ │ ├── Layout.test.jsx
│ │ │ │ ├── OneColumn/
│ │ │ │ │ ├── OneColumn.component.jsx
│ │ │ │ │ ├── OneColumn.module.css
│ │ │ │ │ ├── OneColumn.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── OneColumn.test.js.snap
│ │ │ │ │ │ └── OneColumn.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── SkipLinks/
│ │ │ │ │ ├── SkipLinks.component.tsx
│ │ │ │ │ ├── SkipLinks.module.css
│ │ │ │ │ ├── SkipLinks.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── SkipLinks.test.js.snap
│ │ │ │ │ │ └── SkipLinks.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── TwoColumns/
│ │ │ │ │ ├── TwoColumns.component.jsx
│ │ │ │ │ ├── TwoColumns.module.css
│ │ │ │ │ ├── TwoColumns.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── TwoColumns.test.js.snap
│ │ │ │ │ │ └── TwoColumns.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ └── index.js
│ │ │ ├── Link/
│ │ │ │ └── index.ts
│ │ │ ├── List/
│ │ │ │ ├── List.component.jsx
│ │ │ │ ├── List.md
│ │ │ │ ├── List.module.css
│ │ │ │ ├── List.stories.jsx
│ │ │ │ ├── List.test.jsx
│ │ │ │ ├── ListComposition/
│ │ │ │ │ ├── ColumnChooser/
│ │ │ │ │ │ ├── ColumnChooser.component.jsx
│ │ │ │ │ │ ├── ColumnChooser.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── DisplayMode/
│ │ │ │ │ │ ├── DisplayModeToggle.scss
│ │ │ │ │ │ ├── ListDisplayMode.component.jsx
│ │ │ │ │ │ ├── ListDisplayMode.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── ListDisplayMode.component.test.js.snap
│ │ │ │ │ │ │ └── ListDisplayMode.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── ItemsNumber/
│ │ │ │ │ │ ├── ItemsNumber.component.jsx
│ │ │ │ │ │ ├── ItemsNumber.component.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── LazyLoadingList/
│ │ │ │ │ │ ├── LazyLoadingList.component.jsx
│ │ │ │ │ │ ├── LazyLoadingList.component.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── LazyLoadingList.component.test.js.snap
│ │ │ │ │ │ │ └── LazyLoadingList.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── List.module.css
│ │ │ │ │ ├── Manager/
│ │ │ │ │ │ ├── ListManager.component.jsx
│ │ │ │ │ │ ├── ListManager.component.test.jsx
│ │ │ │ │ │ ├── hooks/
│ │ │ │ │ │ │ ├── useCollectionActions.hook.js
│ │ │ │ │ │ │ ├── useCollectionActions.hook.test.jsx
│ │ │ │ │ │ │ ├── useCollectionFilter.hook.js
│ │ │ │ │ │ │ ├── useCollectionFilter.hook.test.jsx
│ │ │ │ │ │ │ ├── useCollectionSelection.hook.js
│ │ │ │ │ │ │ ├── useCollectionSelection.hook.test.jsx
│ │ │ │ │ │ │ ├── useCollectionSort.hook.js
│ │ │ │ │ │ │ ├── useCollectionSort.hook.test.jsx
│ │ │ │ │ │ │ ├── useColumnsVisibility.hook.js
│ │ │ │ │ │ │ └── useColumnsVisibility.hook.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── SortBy/
│ │ │ │ │ │ ├── SortBy.component.jsx
│ │ │ │ │ │ ├── SortBy.component.test.jsx
│ │ │ │ │ │ ├── SortBy.md
│ │ │ │ │ │ ├── SortBy.module.css
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── SortBy.component.test.js.snap
│ │ │ │ │ │ │ └── SortBy.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── TextFilter/
│ │ │ │ │ │ ├── TextFilter.component.jsx
│ │ │ │ │ │ ├── TextFilter.component.md
│ │ │ │ │ │ ├── TextFilter.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── TextFilter.component.test.js.snap
│ │ │ │ │ │ │ └── TextFilter.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Toolbar/
│ │ │ │ │ │ ├── ListToolbar.component.jsx
│ │ │ │ │ │ ├── ListToolbar.component.test.jsx
│ │ │ │ │ │ ├── ListToolbar.module.css
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── ListToolbar.component.test.js.snap
│ │ │ │ │ │ │ └── ListToolbar.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── VList/
│ │ │ │ │ │ ├── VList.component.jsx
│ │ │ │ │ │ ├── VList.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── collection.js
│ │ │ │ │ ├── constants.js
│ │ │ │ │ ├── context.js
│ │ │ │ │ ├── context.test.jsx
│ │ │ │ │ ├── doc/
│ │ │ │ │ │ ├── developer-guide.md
│ │ │ │ │ │ └── principle.md
│ │ │ │ │ └── index.js
│ │ │ │ ├── ListComposition.stories.jsx
│ │ │ │ ├── ListToVirtualizedList/
│ │ │ │ │ ├── ListToVirtualizedList.component.jsx
│ │ │ │ │ ├── ListToVirtualizedList.test.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── Toolbar/
│ │ │ │ │ ├── ColumnChooserButton/
│ │ │ │ │ │ ├── ColumnChooser/
│ │ │ │ │ │ │ ├── ColumnChooser.component.jsx
│ │ │ │ │ │ │ ├── ColumnChooser.component.test.jsx
│ │ │ │ │ │ │ ├── ColumnChooser.module.css
│ │ │ │ │ │ │ ├── ColumnChooser.stories.jsx
│ │ │ │ │ │ │ ├── ColumnChooserBody/
│ │ │ │ │ │ │ │ ├── ColumnChooserBody.component.jsx
│ │ │ │ │ │ │ │ ├── ColumnChooserBody.component.test.jsx
│ │ │ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ │ │ ├── ColumnChooserBody.component.test.js.snap
│ │ │ │ │ │ │ │ │ └── ColumnChooserBody.component.test.jsx.snap
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ ├── ColumnChooserFooter/
│ │ │ │ │ │ │ │ ├── ColumnChooserFooter.component.jsx
│ │ │ │ │ │ │ │ ├── ColumnChooserFooter.component.test.jsx
│ │ │ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ │ │ ├── ColumnChooserFooter.component.test.js.snap
│ │ │ │ │ │ │ │ │ └── ColumnChooserFooter.component.test.jsx.snap
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ ├── ColumnChooserHeader/
│ │ │ │ │ │ │ │ ├── ColumnChooserHeader.component.jsx
│ │ │ │ │ │ │ │ ├── ColumnChooserHeader.component.test.jsx
│ │ │ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ │ │ ├── ColumnChooserHeader.component.test.js.snap
│ │ │ │ │ │ │ │ │ └── ColumnChooserHeader.component.test.jsx.snap
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ ├── ColumnChooserRow/
│ │ │ │ │ │ │ │ ├── ColumnChooserRow.component.jsx
│ │ │ │ │ │ │ │ ├── ColumnChooserRow.component.test.jsx
│ │ │ │ │ │ │ │ ├── RowCheckbox/
│ │ │ │ │ │ │ │ │ ├── RowCheckbox.component.jsx
│ │ │ │ │ │ │ │ │ ├── RowCheckbox.component.test.jsx
│ │ │ │ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ │ │ │ ├── RowCheckbox.component.test.js.snap
│ │ │ │ │ │ │ │ │ │ └── RowCheckbox.component.test.jsx.snap
│ │ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ │ ├── RowLabel/
│ │ │ │ │ │ │ │ │ ├── RowLabel.component.jsx
│ │ │ │ │ │ │ │ │ ├── RowLabel.component.test.jsx
│ │ │ │ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ │ │ │ ├── RowLabel.component.test.js.snap
│ │ │ │ │ │ │ │ │ │ └── RowLabel.component.test.jsx.snap
│ │ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ │ │ ├── ColumnChooserRow.component.test.js.snap
│ │ │ │ │ │ │ │ │ └── ColumnChooserRow.component.test.jsx.snap
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ ├── ColumnChooserTable/
│ │ │ │ │ │ │ │ ├── ColumnChooserTable.component.jsx
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ ├── SelectAllColumnsCheckbox/
│ │ │ │ │ │ │ │ ├── SelectAllColumnsCheckbox.component.jsx
│ │ │ │ │ │ │ │ ├── SelectAllColumnsCheckbox.component.test.jsx
│ │ │ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ │ │ ├── SelectAllColumnsCheckbox.component.test.js.snap
│ │ │ │ │ │ │ │ │ └── SelectAllColumnsCheckbox.component.test.jsx.snap
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ │ ├── ColumnChooser.component.test.js.snap
│ │ │ │ │ │ │ │ └── ColumnChooser.component.test.jsx.snap
│ │ │ │ │ │ │ ├── columnChooser.context.js
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── ColumnChooserButton.component.jsx
│ │ │ │ │ │ ├── ColumnChooserButton.component.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── columnChooser.propTypes.js
│ │ │ │ │ │ ├── hooks/
│ │ │ │ │ │ │ ├── columnChooserManager.hook.js
│ │ │ │ │ │ │ ├── columnChooserManager.hook.test.jsx
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── service/
│ │ │ │ │ │ ├── columnChooser.utils.js
│ │ │ │ │ │ ├── columnChooser.utils.test.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── DisplayModeToggle/
│ │ │ │ │ │ ├── DisplayModeToggle.component.jsx
│ │ │ │ │ │ ├── DisplayModeToggle.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── DisplayModeToggle.test.js.snap
│ │ │ │ │ │ │ └── DisplayModeToggle.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── ItemsNumber/
│ │ │ │ │ │ ├── ItemsNumber.component.jsx
│ │ │ │ │ │ ├── ItemsNumber.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Label/
│ │ │ │ │ │ ├── Label.component.jsx
│ │ │ │ │ │ ├── Label.snapshot.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Label.snapshot.test.js.snap
│ │ │ │ │ │ │ └── Label.snapshot.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Pagination/
│ │ │ │ │ │ ├── Pagination.component.jsx
│ │ │ │ │ │ ├── Pagination.module.css
│ │ │ │ │ │ ├── Pagination.snapshot.test.jsx
│ │ │ │ │ │ ├── Pagination.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Pagination.snapshot.test.js.snap
│ │ │ │ │ │ │ └── Pagination.snapshot.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── SelectAll/
│ │ │ │ │ │ ├── SelectAll.component.jsx
│ │ │ │ │ │ ├── SelectAll.component.test.jsx
│ │ │ │ │ │ ├── SelectAll.module.css
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── SelectSortBy/
│ │ │ │ │ │ ├── SelectSortBy.component.jsx
│ │ │ │ │ │ ├── SelectSortBy.module.css
│ │ │ │ │ │ ├── SelectSortBy.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── SelectSortBy.test.js.snap
│ │ │ │ │ │ │ └── SelectSortBy.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Toolbar.component.jsx
│ │ │ │ │ ├── Toolbar.module.css
│ │ │ │ │ ├── Toolbar.snapshot.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── Toolbar.snapshot.test.js.snap
│ │ │ │ │ │ └── Toolbar.snapshot.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── List.test.js.snap
│ │ │ │ │ └── List.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── ListView/
│ │ │ │ ├── Header/
│ │ │ │ │ ├── Header.component.jsx
│ │ │ │ │ ├── Header.module.css
│ │ │ │ │ ├── Header.test.jsx
│ │ │ │ │ ├── HeaderInput.component.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── Header.test.js.snap
│ │ │ │ │ │ └── Header.test.jsx.snap
│ │ │ │ │ └── headerInput.test.jsx
│ │ │ │ ├── Items/
│ │ │ │ │ ├── Item/
│ │ │ │ │ │ ├── Item.component.jsx
│ │ │ │ │ │ ├── Item.propTypes.js
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── item.snapshot.test.js.snap
│ │ │ │ │ │ │ └── item.snapshot.test.jsx.snap
│ │ │ │ │ │ └── item.snapshot.test.jsx
│ │ │ │ │ ├── Items.component.jsx
│ │ │ │ │ ├── Items.module.css
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── items.test.js.snap
│ │ │ │ │ │ └── items.test.jsx.snap
│ │ │ │ │ └── items.test.jsx
│ │ │ │ ├── ListView.component.jsx
│ │ │ │ ├── ListView.module.css
│ │ │ │ ├── ListView.stories.jsx
│ │ │ │ └── index.js
│ │ │ ├── Loader/
│ │ │ │ ├── Loader.component.jsx
│ │ │ │ ├── Loader.md
│ │ │ │ ├── Loader.module.css
│ │ │ │ ├── Loader.stories.jsx
│ │ │ │ ├── Loader.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Loader.test.js.snap
│ │ │ │ │ └── Loader.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── MultiSelect/
│ │ │ │ ├── Dropdown.container.jsx
│ │ │ │ ├── Dropdown.module.css
│ │ │ │ ├── ItemOption.component.jsx
│ │ │ │ ├── ItemOption.module.css
│ │ │ │ ├── ItemView.component.jsx
│ │ │ │ ├── MultiSelect.container.jsx
│ │ │ │ ├── MultiSelect.module.css
│ │ │ │ ├── MultiSelect.stories.jsx
│ │ │ │ ├── README.md
│ │ │ │ ├── constants.js
│ │ │ │ └── index.js
│ │ │ ├── Notification/
│ │ │ │ ├── Notification.component.jsx
│ │ │ │ ├── Notification.module.css
│ │ │ │ ├── Notification.stories.jsx
│ │ │ │ ├── Notification.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── ObjectViewer/
│ │ │ │ ├── DataTreeViewer.stories.jsx
│ │ │ │ ├── JSONLike/
│ │ │ │ │ ├── JSONLike.component.jsx
│ │ │ │ │ ├── JSONLike.module.css
│ │ │ │ │ ├── JSONLike.test.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── List/
│ │ │ │ │ ├── List.component.jsx
│ │ │ │ │ ├── List.module.css
│ │ │ │ │ ├── List.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── List.test.js.snap
│ │ │ │ │ │ └── List.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── ObjectViewer.component.jsx
│ │ │ │ ├── ObjectViewer.test.jsx
│ │ │ │ ├── Table/
│ │ │ │ │ ├── Table.component.jsx
│ │ │ │ │ ├── Table.module.css
│ │ │ │ │ ├── Table.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── Table.test.js.snap
│ │ │ │ │ │ └── Table.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── convertDate.js
│ │ │ │ ├── index.js
│ │ │ │ ├── toflat.js
│ │ │ │ └── toflat.test.js
│ │ │ ├── OverlayTrigger/
│ │ │ │ ├── OverlayTrigger.component.jsx
│ │ │ │ ├── OverlayTrigger.forked.jsx
│ │ │ │ ├── OverlayTrigger.module.css
│ │ │ │ ├── OverlayTrigger.test.jsx
│ │ │ │ ├── index.js
│ │ │ │ ├── overlay.js
│ │ │ │ └── overlay.test.js
│ │ │ ├── PieChart/
│ │ │ │ ├── PieChart.component.jsx
│ │ │ │ ├── PieChart.module.css
│ │ │ │ ├── PieChart.stories.jsx
│ │ │ │ ├── PieChart.test.jsx
│ │ │ │ ├── PieChartButton.component.jsx
│ │ │ │ ├── PieChartButton.test.jsx
│ │ │ │ ├── PieChartIcon.component.jsx
│ │ │ │ ├── PieChartIcon.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── PieChart.test.jsx.snap
│ │ │ │ │ ├── PieChartButton.test.jsx.snap
│ │ │ │ │ ├── PieChartIcon.test.js.snap
│ │ │ │ │ └── PieChartIcon.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Progress/
│ │ │ │ ├── Progress.component.jsx
│ │ │ │ ├── Progress.module.css
│ │ │ │ ├── Progress.test.jsx
│ │ │ │ ├── ProgressBar.stories.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Progress.test.js.snap
│ │ │ │ │ └── Progress.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── QualityBar/
│ │ │ │ ├── QualityBar.component.tsx
│ │ │ │ ├── QualityBar.stories.jsx
│ │ │ │ └── index.ts
│ │ │ ├── RadarChart/
│ │ │ │ ├── RadarChart.component.jsx
│ │ │ │ ├── RadarChart.module.css
│ │ │ │ ├── RadarChart.stories.jsx
│ │ │ │ ├── RadarChart.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── RadarChart.test.js.snap
│ │ │ │ │ └── RadarChart.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── RatioBar/
│ │ │ │ ├── RatioBar.component.tsx
│ │ │ │ ├── RatioBar.stories.jsx
│ │ │ │ └── index.ts
│ │ │ ├── ResourceList/
│ │ │ │ ├── Resource/
│ │ │ │ │ ├── Resource.component.jsx
│ │ │ │ │ ├── Resource.module.css
│ │ │ │ │ ├── Resource.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── Resource.test.js.snap
│ │ │ │ │ │ └── Resource.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── ResourceList.component.jsx
│ │ │ │ ├── ResourceList.module.css
│ │ │ │ ├── ResourceList.propTypes.js
│ │ │ │ ├── ResourceList.stories.jsx
│ │ │ │ ├── ResourceList.test.jsx
│ │ │ │ ├── Toolbar/
│ │ │ │ │ ├── NameFilter/
│ │ │ │ │ │ ├── NameFilter.component.jsx
│ │ │ │ │ │ ├── NameFilter.module.css
│ │ │ │ │ │ ├── NameFilter.snap.test.jsx
│ │ │ │ │ │ ├── NameFilter.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── NameFilter.snap.test.js.snap
│ │ │ │ │ │ │ └── NameFilter.snap.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── SortOptions/
│ │ │ │ │ │ ├── OrderChooser/
│ │ │ │ │ │ │ ├── OrderChooser.component.jsx
│ │ │ │ │ │ │ ├── OrderChooser.module.css
│ │ │ │ │ │ │ ├── OrderChooser.test.jsx
│ │ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ │ ├── OrderChooser.test.js.snap
│ │ │ │ │ │ │ │ └── OrderChooser.test.jsx.snap
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── SortOptions.component.jsx
│ │ │ │ │ │ ├── SortOptions.module.css
│ │ │ │ │ │ ├── SortOptions.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── SortOptions.test.js.snap
│ │ │ │ │ │ │ └── SortOptions.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── StateFilter/
│ │ │ │ │ │ ├── StateFilter.component.jsx
│ │ │ │ │ │ ├── StateFilter.module.css
│ │ │ │ │ │ ├── StateFilter.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── StateFilter.test.js.snap
│ │ │ │ │ │ │ └── StateFilter.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Toolbar.component.jsx
│ │ │ │ │ ├── Toolbar.module.css
│ │ │ │ │ ├── Toolbar.snap.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── Toolbar.snap.test.js.snap
│ │ │ │ │ │ └── Toolbar.snap.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ └── index.js
│ │ │ ├── ResourcePicker/
│ │ │ │ ├── ResourcePicker.component.jsx
│ │ │ │ ├── ResourcePicker.module.css
│ │ │ │ ├── ResourcePicker.stories.jsx
│ │ │ │ ├── ResourcePicker.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── ResourcePicker.test.js.snap
│ │ │ │ │ └── ResourcePicker.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Rich/
│ │ │ │ ├── Error/
│ │ │ │ │ ├── RichError.component.jsx
│ │ │ │ │ ├── RichError.component.test.jsx
│ │ │ │ │ ├── RichError.module.css
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── RichError.component.test.js.snap
│ │ │ │ │ │ └── RichError.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── HeaderTitle/
│ │ │ │ │ ├── HeaderTitle.component.jsx
│ │ │ │ │ ├── HeaderTitle.component.test.jsx
│ │ │ │ │ ├── HeaderTitle.module.css
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── HeaderTitle.component.test.js.snap
│ │ │ │ │ │ └── HeaderTitle.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── Layout/
│ │ │ │ │ ├── RichLayout.component.jsx
│ │ │ │ │ ├── RichLayout.module.css
│ │ │ │ │ ├── RichLayout.stories.jsx
│ │ │ │ │ ├── RichLayout.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── RichLayout.test.js.snap
│ │ │ │ │ │ └── RichLayout.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ └── index.js
│ │ │ ├── SidePanel/
│ │ │ │ ├── SidePanel.component.jsx
│ │ │ │ ├── SidePanel.module.css
│ │ │ │ ├── SidePanel.stories.jsx
│ │ │ │ ├── SidePanel.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── SidePanel.test.js.snap
│ │ │ │ │ └── SidePanel.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Skeleton/
│ │ │ │ ├── Skeleton.component.tsx
│ │ │ │ ├── Skeleton.md
│ │ │ │ ├── Skeleton.module.css
│ │ │ │ ├── Skeleton.stories.jsx
│ │ │ │ ├── Skeleton.test.jsx
│ │ │ │ └── index.ts
│ │ │ ├── Slider/
│ │ │ │ ├── Slider.component.tsx
│ │ │ │ ├── Slider.module.css
│ │ │ │ ├── Slider.stories.jsx
│ │ │ │ ├── Slider.test.tsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── Slider.test.tsx.snap
│ │ │ │ └── index.ts
│ │ │ ├── Status/
│ │ │ │ ├── Status.component.jsx
│ │ │ │ ├── Status.module.css
│ │ │ │ ├── Status.stories.jsx
│ │ │ │ ├── Status.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Status.test.js.snap
│ │ │ │ │ └── Status.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Stepper/
│ │ │ │ ├── Stepper.component.jsx
│ │ │ │ ├── Stepper.component.module.css
│ │ │ │ ├── Stepper.component.test.jsx
│ │ │ │ ├── Stepper.stories.jsx
│ │ │ │ ├── StepperTransition.component.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Stepper.component.test.js.snap
│ │ │ │ │ └── Stepper.component.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── SubHeaderBar/
│ │ │ │ ├── SubHeader.stories.jsx
│ │ │ │ ├── SubHeaderBar.component.jsx
│ │ │ │ ├── SubHeaderBar.md
│ │ │ │ ├── SubHeaderBar.module.css
│ │ │ │ ├── SubHeaderBar.test.jsx
│ │ │ │ ├── TitleSubHeader/
│ │ │ │ │ ├── SubTitle.component.jsx
│ │ │ │ │ ├── SubTitle.test.jsx
│ │ │ │ │ ├── TitleSubHeader.component.jsx
│ │ │ │ │ ├── TitleSubHeader.module.css
│ │ │ │ │ ├── TitleSubHeader.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── SubTitle.test.js.snap
│ │ │ │ │ │ ├── SubTitle.test.jsx.snap
│ │ │ │ │ │ ├── TitleSubHeader.test.js.snap
│ │ │ │ │ │ └── TitleSubHeader.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── SubHeaderBar.test.js.snap
│ │ │ │ │ └── SubHeaderBar.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── TabBar/
│ │ │ │ ├── TabBar.component.jsx
│ │ │ │ ├── TabBar.module.css
│ │ │ │ ├── TabBar.test.jsx
│ │ │ │ ├── Tabs.stories.jsx
│ │ │ │ └── index.js
│ │ │ ├── Tag/
│ │ │ │ ├── Tag.component.jsx
│ │ │ │ ├── Tag.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Tag.test.js.snap
│ │ │ │ │ └── Tag.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Toggle/
│ │ │ │ ├── LabelToggle/
│ │ │ │ │ ├── LabelToggle.component.jsx
│ │ │ │ │ ├── LabelToggle.module.css
│ │ │ │ │ ├── LabelToggleComponent.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── LabelToggleComponent.test.js.snap
│ │ │ │ │ │ └── LabelToggleComponent.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── Toggle.component.jsx
│ │ │ │ ├── Toggle.stories.jsx
│ │ │ │ ├── Toggle.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Toggle.test.js.snap
│ │ │ │ │ └── Toggle.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── TooltipTrigger/
│ │ │ │ ├── Tooltip.stories.jsx
│ │ │ │ ├── TooltipTrigger.component.jsx
│ │ │ │ ├── TooltipTrigger.hook.js
│ │ │ │ ├── TooltipTrigger.module.css
│ │ │ │ ├── TooltipTrigger.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── TreeView/
│ │ │ │ ├── FolderTreeView.stories.jsx
│ │ │ │ ├── TreeView.component.jsx
│ │ │ │ ├── TreeView.module.css
│ │ │ │ ├── TreeView.test.jsx
│ │ │ │ ├── TreeViewItem/
│ │ │ │ │ ├── TreeViewItem.component.jsx
│ │ │ │ │ ├── TreeViewItem.module.css
│ │ │ │ │ ├── TreeViewItem.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── TreeViewItem.test.js.snap
│ │ │ │ │ │ └── TreeViewItem.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── TreeView.test.js.snap
│ │ │ │ │ └── TreeView.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Typeahead/
│ │ │ │ ├── Typeahead.component.jsx
│ │ │ │ ├── Typeahead.component.renderers.jsx
│ │ │ │ ├── Typeahead.module.css
│ │ │ │ ├── Typeahead.snapshot.test.jsx
│ │ │ │ ├── Typeahead.stories.jsx
│ │ │ │ ├── Typeahead.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── Typeahead.snapshot.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── VirtualizedList/
│ │ │ │ ├── CellActions/
│ │ │ │ │ ├── ActionsColumn.component.jsx
│ │ │ │ │ ├── CellActions.component.jsx
│ │ │ │ │ ├── CellActions.test.jsx
│ │ │ │ │ ├── RowLargeCellActions.module.css
│ │ │ │ │ ├── RowTableCellActions.module.css
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── CellActions.test.js.snap
│ │ │ │ │ │ └── CellActions.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── CellBadge/
│ │ │ │ │ ├── BadgeColumn.component.jsx
│ │ │ │ │ ├── CellBadge.component.jsx
│ │ │ │ │ ├── CellBadge.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── CellBadge.test.js.snap
│ │ │ │ │ │ └── CellBadge.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── CellBoolean/
│ │ │ │ │ ├── BooleanColumn.component.jsx
│ │ │ │ │ ├── CellBoolean.component.jsx
│ │ │ │ │ ├── CellBoolean.module.css
│ │ │ │ │ ├── CellBoolean.test.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── CellCheckbox/
│ │ │ │ │ ├── CellCheckbox.component.jsx
│ │ │ │ │ ├── CellCheckbox.module.css
│ │ │ │ │ ├── CellCheckbox.test.jsx
│ │ │ │ │ ├── CheckboxColumn.component.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── CellCheckbox.test.js.snap
│ │ │ │ │ │ └── CellCheckbox.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── CellDatetime/
│ │ │ │ │ ├── CellDatetime.component.jsx
│ │ │ │ │ ├── CellDatetime.module.css
│ │ │ │ │ ├── CellDatetime.test.jsx
│ │ │ │ │ ├── DatetimeColumn.component.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── CellDatetime.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── CellIconText/
│ │ │ │ │ ├── CellIconText.component.jsx
│ │ │ │ │ ├── CellIconText.module.css
│ │ │ │ │ ├── CellIconText.test.jsx
│ │ │ │ │ ├── IconTextColumn.component.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── CellIconText.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── CellLabel/
│ │ │ │ │ ├── CellLabel.component.jsx
│ │ │ │ │ ├── CellLabel.test.jsx
│ │ │ │ │ ├── LabelColumn.component.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── CellLabel.test.js.snap
│ │ │ │ │ │ └── CellLabel.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── CellLink/
│ │ │ │ │ ├── CellLink.component.jsx
│ │ │ │ │ ├── CellLink.module.css
│ │ │ │ │ ├── CellLink.test.jsx
│ │ │ │ │ ├── LinkColumn.component.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── CellMappedData/
│ │ │ │ │ ├── CellMappedData.component.jsx
│ │ │ │ │ ├── CellMappedData.component.test.jsx
│ │ │ │ │ ├── MappedDataColumn.component.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── CellMappedData.component.test.js.snap
│ │ │ │ │ │ └── CellMappedData.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── CellQualityBar/
│ │ │ │ │ ├── CellQualityBar.component.jsx
│ │ │ │ │ ├── CellQualityBar.test.jsx
│ │ │ │ │ ├── QualityBarColumn.component.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── CellQualityBar.test.js.snap
│ │ │ │ │ │ └── CellQualityBar.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── CellTextIcon/
│ │ │ │ │ ├── CellWithIcon.component.jsx
│ │ │ │ │ ├── CellWithIcon.module.css
│ │ │ │ │ ├── CellWithIcon.test.jsx
│ │ │ │ │ ├── TextIconColumn.component.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── CellWithIcon.test.js.snap
│ │ │ │ │ │ └── CellWithIcon.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── CellTitle/
│ │ │ │ │ ├── CellTitle.component.jsx
│ │ │ │ │ ├── CellTitle.module.css
│ │ │ │ │ ├── CellTitle.test.jsx
│ │ │ │ │ ├── CellTitleActions.component.jsx
│ │ │ │ │ ├── CellTitleActions.module.css
│ │ │ │ │ ├── CellTitleActions.test.jsx
│ │ │ │ │ ├── CellTitleInput.component.jsx
│ │ │ │ │ ├── CellTitleInput.test.jsx
│ │ │ │ │ ├── CellTitleSelector.component.jsx
│ │ │ │ │ ├── CellTitleSelector.test.jsx
│ │ │ │ │ ├── TitleColumn.component.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── CellTitle.test.jsx.snap
│ │ │ │ │ │ ├── CellTitleInput.test.js.snap
│ │ │ │ │ │ ├── CellTitleInput.test.jsx.snap
│ │ │ │ │ │ ├── CellTitleSelector.test.js.snap
│ │ │ │ │ │ └── CellTitleSelector.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── Content.component.jsx
│ │ │ │ ├── Content.component.test.jsx
│ │ │ │ ├── HeaderCheckbox/
│ │ │ │ │ ├── HeaderCheckbox.component.jsx
│ │ │ │ │ ├── HeaderCheckbox.module.css
│ │ │ │ │ ├── HeaderCheckbox.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── HeaderCheckbox.test.js.snap
│ │ │ │ │ │ └── HeaderCheckbox.test.jsx.snap
│ │ │ │ │ └── index.jsx
│ │ │ │ ├── HeaderIcon/
│ │ │ │ │ ├── HeaderIcon.component.jsx
│ │ │ │ │ ├── HeaderIcon.component.test.jsx
│ │ │ │ │ ├── HeaderIcon.module.css
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── HeaderIcon.component.test.js.snap
│ │ │ │ │ │ └── HeaderIcon.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── HeaderResizable/
│ │ │ │ │ ├── HeaderResizable.component.jsx
│ │ │ │ │ ├── HeaderResizable.component.test.jsx
│ │ │ │ │ ├── HeaderResizable.module.css
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── HeaderResizable.component.test.js.snap
│ │ │ │ │ │ └── HeaderResizable.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── ListGrid/
│ │ │ │ │ ├── ListGrid.component.jsx
│ │ │ │ │ ├── ListGrid.module.css
│ │ │ │ │ ├── ListGrid.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── ListGrid.test.js.snap
│ │ │ │ │ │ └── ListGrid.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── ListTable/
│ │ │ │ │ ├── ListTable.component.jsx
│ │ │ │ │ ├── ListTable.module.css
│ │ │ │ │ ├── ListTable.test.jsx
│ │ │ │ │ ├── RowThemes.js
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── ListTable.test.js.snap
│ │ │ │ │ │ └── ListTable.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── NoRows/
│ │ │ │ │ ├── NoRows.component.jsx
│ │ │ │ │ ├── NoRows.module.css
│ │ │ │ │ ├── NoRows.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── NoRows.test.js.snap
│ │ │ │ │ │ └── NoRows.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── PropTypes.js
│ │ │ │ ├── README.md
│ │ │ │ ├── RendererSelector.component.jsx
│ │ │ │ ├── RendererSelector.test.jsx
│ │ │ │ ├── RowCollapsiblePanel/
│ │ │ │ │ ├── RowCollapsiblePanel.component.jsx
│ │ │ │ │ ├── RowCollapsiblePanel.module.css
│ │ │ │ │ ├── RowCollapsiblePanel.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── RowCollapsiblePanel.test.js.snap
│ │ │ │ │ │ └── RowCollapsiblePanel.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── RowLarge/
│ │ │ │ │ ├── RowLarge.component.jsx
│ │ │ │ │ ├── RowLarge.module.css
│ │ │ │ │ ├── RowLarge.test.jsx
│ │ │ │ │ ├── RowThemes.js
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── RowLarge.test.js.snap
│ │ │ │ │ │ └── RowLarge.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── RowSelection/
│ │ │ │ │ ├── RowSelection.component.jsx
│ │ │ │ │ ├── RowSelection.module.css
│ │ │ │ │ ├── RowSelection.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── RowSelection.test.js.snap
│ │ │ │ │ │ └── RowSelection.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── VirtualizedList.component.jsx
│ │ │ │ ├── VirtualizedList.module.css
│ │ │ │ ├── VirtualizedList.stories.jsx
│ │ │ │ ├── VirtualizedList.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Content.component.test.js.snap
│ │ │ │ │ ├── Content.component.test.jsx.snap
│ │ │ │ │ ├── RendererSelector.test.js.snap
│ │ │ │ │ ├── RendererSelector.test.jsx.snap
│ │ │ │ │ └── VirtualizedList.test.jsx.snap
│ │ │ │ ├── collection.js
│ │ │ │ ├── event/
│ │ │ │ │ ├── rowclick.js
│ │ │ │ │ └── rowclick.test.js
│ │ │ │ ├── index.js
│ │ │ │ ├── utils/
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── gridrow.test.jsx.snap
│ │ │ │ │ │ ├── tablerow.test.js.snap
│ │ │ │ │ │ └── tablerow.test.jsx.snap
│ │ │ │ │ ├── constants.js
│ │ │ │ │ ├── dictionary.js
│ │ │ │ │ ├── gridrow.js
│ │ │ │ │ ├── gridrow.test.jsx
│ │ │ │ │ ├── resizable.js
│ │ │ │ │ ├── resizable.test.js
│ │ │ │ │ ├── tablerow.jsx
│ │ │ │ │ └── tablerow.test.jsx
│ │ │ │ └── virtualizedListContext.jsx
│ │ │ ├── WithDrawer/
│ │ │ │ ├── WithDrawer.component.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── withDrawer.test.js.snap
│ │ │ │ │ └── withDrawer.test.jsx.snap
│ │ │ │ ├── index.js
│ │ │ │ ├── withDrawer.module.css
│ │ │ │ └── withDrawer.test.jsx
│ │ │ ├── constants.js
│ │ │ ├── i18n/
│ │ │ │ ├── DateFnsLocale/
│ │ │ │ │ ├── formatters.js
│ │ │ │ │ ├── locale.js
│ │ │ │ │ └── locale.test.js
│ │ │ │ └── index.js
│ │ │ ├── index.js
│ │ │ ├── polyfills/
│ │ │ │ └── element-closest.js
│ │ │ ├── test-setup.js
│ │ │ ├── theme.test.ts
│ │ │ ├── theme.ts
│ │ │ ├── translate.js
│ │ │ ├── translate.test.js
│ │ │ ├── utils/
│ │ │ │ ├── getPropsFrom.js
│ │ │ │ ├── getPropsFrom.test.js
│ │ │ │ ├── getTabBarBadgeLabel.js
│ │ │ │ └── getTabBarBadgeLabel.test.js
│ │ │ ├── wrap.test.tsx
│ │ │ └── wrap.tsx
│ │ ├── stylelint.config.mjs
│ │ ├── talend-i18n.json
│ │ ├── talend-scripts.json
│ │ ├── test/
│ │ │ └── storageMock.js
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── containers/
│ │ ├── .babelrc.json
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── .storybook/
│ │ │ ├── cmf.jsx
│ │ │ ├── cmfModule/
│ │ │ │ ├── actionCreators.js
│ │ │ │ ├── components.js
│ │ │ │ ├── expressions.js
│ │ │ │ ├── index.js
│ │ │ │ ├── reducers.js
│ │ │ │ ├── registry.js
│ │ │ │ ├── sagas.js
│ │ │ │ └── settings.js
│ │ │ ├── main.mjs
│ │ │ ├── preview-head.html
│ │ │ └── preview.jsx
│ │ ├── 6.0 - breaking changes.md
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── docs.json
│ │ ├── eslint.config.mjs
│ │ ├── i18next-scanner.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── AboutDialog/
│ │ │ │ ├── AboutDialog.connect.js
│ │ │ │ ├── AboutDialog.constant.js
│ │ │ │ ├── AboutDialog.container.jsx
│ │ │ │ ├── AboutDialog.sagas.js
│ │ │ │ ├── AboutDialog.sagas.test.jsx
│ │ │ │ ├── AboutDialog.stories.jsx
│ │ │ │ ├── AboutDialog.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── Action/
│ │ │ │ ├── Action.connect.js
│ │ │ │ ├── Action.stories.jsx
│ │ │ │ ├── Action.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Action.test.js.snap
│ │ │ │ │ └── Action.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── ActionBar/
│ │ │ │ ├── ActionBar.connect.js
│ │ │ │ ├── ActionBar.stories.jsx
│ │ │ │ ├── ActionBar.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── ActionButton/
│ │ │ │ ├── ActionButton.connect.jsx
│ │ │ │ ├── ActionButton.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── ActionButton.test.js.snap
│ │ │ │ │ └── ActionButton.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── ActionDropdown/
│ │ │ │ ├── ActionDropdown.connect.jsx
│ │ │ │ ├── ActionDropdown.connect.md
│ │ │ │ ├── ActionDropdown.stories.jsx
│ │ │ │ ├── ActionDropdown.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── ActionDropdown.test.js.snap
│ │ │ │ │ └── ActionDropdown.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── ActionFile/
│ │ │ │ ├── ActionFile.connect.jsx
│ │ │ │ ├── ActionFile.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── ActionFile.test.js.snap
│ │ │ │ │ └── ActionFile.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── ActionIconToggle/
│ │ │ │ ├── ActionIconToggle.connect.jsx
│ │ │ │ ├── ActionIconToggle.connect.md
│ │ │ │ ├── ActionIconToggle.stories.jsx
│ │ │ │ ├── ActionIconToggle.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── ActionIconToggle.test.js.snap
│ │ │ │ │ └── ActionIconToggle.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── ActionSplitDropdown/
│ │ │ │ ├── ActionSplitDropdown.connect.jsx
│ │ │ │ ├── ActionSplitDropdown.stories.jsx
│ │ │ │ ├── ActionSplitDropdown.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── ActionSplitDropdown.test.js.snap
│ │ │ │ │ └── ActionSplitDropdown.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Actions/
│ │ │ │ ├── Actions.connect.js
│ │ │ │ ├── Actions.stories.jsx
│ │ │ │ ├── Actions.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Actions.test.js.snap
│ │ │ │ │ └── Actions.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── AppLoader/
│ │ │ │ ├── AppLoader.connect.jsx
│ │ │ │ ├── AppLoader.connect.test.jsx
│ │ │ │ ├── AppLoader.md
│ │ │ │ ├── AppLoader.saga.js
│ │ │ │ ├── AppLoader.saga.test.jsx
│ │ │ │ ├── AppLoader.stories.jsx
│ │ │ │ └── index.js
│ │ │ ├── Badge/
│ │ │ │ ├── Badge.component.js
│ │ │ │ ├── Badge.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── Breadcrumbs/
│ │ │ │ ├── Breadcrumbs.connect.jsx
│ │ │ │ ├── Breadcrumbs.stories.jsx
│ │ │ │ ├── Breadcrumbs.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── ComponentForm/
│ │ │ │ ├── ComponentForm.actions.js
│ │ │ │ ├── ComponentForm.actions.test.jsx
│ │ │ │ ├── ComponentForm.component.jsx
│ │ │ │ ├── ComponentForm.md
│ │ │ │ ├── ComponentForm.puml
│ │ │ │ ├── ComponentForm.saga.test.jsx
│ │ │ │ ├── ComponentForm.sagas.js
│ │ │ │ ├── ComponentForm.selectors.js
│ │ │ │ ├── ComponentForm.selectors.test.jsx
│ │ │ │ ├── ComponentForm.test.jsx
│ │ │ │ ├── ComponentForm.test.schema.json
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── ComponentForm.test.js.snap
│ │ │ │ │ └── ComponentForm.test.jsx.snap
│ │ │ │ ├── fields/
│ │ │ │ │ ├── MultiSelect/
│ │ │ │ │ │ ├── MultiSelect.component.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── displayMode/
│ │ │ │ │ │ │ └── TextMode.component.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── NameResolver/
│ │ │ │ │ │ ├── NameResolver.component.jsx
│ │ │ │ │ │ ├── NameResolver.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ └── kit/
│ │ │ │ ├── createTriggers.js
│ │ │ │ ├── createTriggers.test.jsx
│ │ │ │ ├── defaultRegistry.js
│ │ │ │ ├── defaultRegistry.md
│ │ │ │ ├── defaultRegistry.test.jsx
│ │ │ │ ├── flatten.js
│ │ │ │ ├── flatten.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── ConfirmDialog/
│ │ │ │ ├── ConfirmDialog.connect.js
│ │ │ │ ├── ConfirmDialog.container.jsx
│ │ │ │ ├── ConfirmDialog.stories.jsx
│ │ │ │ ├── ConfirmDialog.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── ConfirmDialog.test.jsx.snap
│ │ │ │ ├── index.js
│ │ │ │ └── showHideConfirmDialog.js
│ │ │ ├── DeleteResource/
│ │ │ │ ├── DeleteResource.connect.js
│ │ │ │ ├── DeleteResource.container.jsx
│ │ │ │ ├── DeleteResource.stories.jsx
│ │ │ │ ├── DeleteResource.test.jsx
│ │ │ │ ├── README.md
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── DeleteResource.test.js.snap
│ │ │ │ │ └── DeleteResource.test.jsx.snap
│ │ │ │ ├── actions.js
│ │ │ │ ├── actions.test.jsx
│ │ │ │ ├── constants.js
│ │ │ │ ├── index.js
│ │ │ │ ├── sagas.js
│ │ │ │ └── sagas.test.jsx
│ │ │ ├── EditableText/
│ │ │ │ ├── EditableText.connect.js
│ │ │ │ ├── EditableText.container.jsx
│ │ │ │ ├── EditableText.selectors.js
│ │ │ │ ├── EditableText.stories.jsx
│ │ │ │ ├── EditableText.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── EditableText.test.js.snap
│ │ │ │ │ └── EditableText.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── FilterBar/
│ │ │ │ ├── FilterBar.connect.js
│ │ │ │ ├── FilterBar.container.jsx
│ │ │ │ ├── FilterBar.selectors.js
│ │ │ │ ├── FilterBar.stories.jsx
│ │ │ │ ├── FilterBar.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── FilterBar.test.js.snap
│ │ │ │ │ └── FilterBar.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Form/
│ │ │ │ ├── Form.connect.js
│ │ │ │ ├── Form.container.jsx
│ │ │ │ ├── Form.md
│ │ │ │ ├── Form.stories.jsx
│ │ │ │ ├── Form.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Form.test.js.snap
│ │ │ │ │ └── Form.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── GuidedTour/
│ │ │ │ ├── GuidedTour.connect.js
│ │ │ │ ├── GuidedTour.constants.js
│ │ │ │ ├── GuidedTour.container.jsx
│ │ │ │ ├── GuidedTour.sagas.js
│ │ │ │ ├── GuidedTour.sagas.test.jsx
│ │ │ │ ├── GuidedTour.stories.jsx
│ │ │ │ ├── GuidedTour.test.jsx
│ │ │ │ ├── README.md
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── GuidedTour.test.js.snap
│ │ │ │ │ └── GuidedTour.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── HeaderBar/
│ │ │ │ ├── HeaderBar.actions.js
│ │ │ │ ├── HeaderBar.connect.js
│ │ │ │ ├── HeaderBar.constant.js
│ │ │ │ ├── HeaderBar.container.jsx
│ │ │ │ ├── HeaderBar.md
│ │ │ │ ├── HeaderBar.sagas.js
│ │ │ │ ├── HeaderBar.sagas.test.jsx
│ │ │ │ ├── HeaderBar.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── HomeListView/
│ │ │ │ ├── HomeListView.component.jsx
│ │ │ │ ├── HomeListView.component.test.jsx
│ │ │ │ ├── HomeListView.connect.js
│ │ │ │ ├── HomeListView.connect.test.jsx
│ │ │ │ ├── HomeListView.stories.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── HomeListView.connect.test.js.snap
│ │ │ │ │ └── HomeListView.connect.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── List/
│ │ │ │ ├── List.connect.js
│ │ │ │ ├── List.constant.js
│ │ │ │ ├── List.container.jsx
│ │ │ │ ├── List.md
│ │ │ │ ├── List.sagas.js
│ │ │ │ ├── List.sagas.test.jsx
│ │ │ │ ├── List.stories.jsx
│ │ │ │ ├── List.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── List.test.jsx.snap
│ │ │ │ ├── index.js
│ │ │ │ ├── selector.js
│ │ │ │ └── selector.test.jsx
│ │ │ ├── Notification/
│ │ │ │ ├── Notification.actions.js
│ │ │ │ ├── Notification.connect.js
│ │ │ │ ├── Notification.constants.js
│ │ │ │ ├── Notification.container.jsx
│ │ │ │ ├── Notification.sagas.js
│ │ │ │ ├── Notification.sagas.test.jsx
│ │ │ │ ├── Notification.stories.jsx
│ │ │ │ ├── Notification.test.jsx
│ │ │ │ ├── README.md
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ └── Notification.test.jsx.snap
│ │ │ │ ├── clearNotifications.js
│ │ │ │ ├── index.js
│ │ │ │ └── pushNotification.js
│ │ │ ├── ObjectViewer/
│ │ │ │ ├── ObjectViewer.connect.js
│ │ │ │ ├── ObjectViewer.container.jsx
│ │ │ │ ├── ObjectViewer.stories.jsx
│ │ │ │ ├── ObjectViewer.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── PieChartButton/
│ │ │ │ ├── PieChartButton.connect.jsx
│ │ │ │ ├── PieChartButton.stories.jsx
│ │ │ │ ├── PieChartButton.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── PieChartButton.test.js.snap
│ │ │ │ │ └── PieChartButton.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── Redirect/
│ │ │ │ ├── Redirect.container.jsx
│ │ │ │ ├── Redirect.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── SelectObject/
│ │ │ │ ├── SelectObject.component.jsx
│ │ │ │ ├── SelectObject.component.test.jsx
│ │ │ │ ├── SelectObject.connect.js
│ │ │ │ ├── SelectObject.connect.test.jsx
│ │ │ │ ├── SelectObject.container.jsx
│ │ │ │ ├── SelectObject.container.test.jsx
│ │ │ │ ├── SelectObject.module.css
│ │ │ │ ├── SelectObject.stories.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── SelectObject.component.test.js.snap
│ │ │ │ │ ├── SelectObject.component.test.jsx.snap
│ │ │ │ │ └── SelectObject.container.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── ShortcutManager/
│ │ │ │ ├── ShortcutManager.connect.js
│ │ │ │ ├── ShortcutManager.container.js
│ │ │ │ ├── ShortcutManager.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── SidePanel/
│ │ │ │ ├── SidePanel.connect.js
│ │ │ │ ├── SidePanel.container.jsx
│ │ │ │ ├── SidePanel.md
│ │ │ │ ├── SidePanel.stories.jsx
│ │ │ │ ├── SidePanel.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── SidePanel.test.js.snap
│ │ │ │ │ └── SidePanel.test.jsx.snap
│ │ │ │ ├── constants.js
│ │ │ │ └── index.js
│ │ │ ├── Slider/
│ │ │ │ ├── Slider.connect.js
│ │ │ │ ├── Slider.container.jsx
│ │ │ │ ├── Slider.selectors.js
│ │ │ │ ├── Slider.stories.jsx
│ │ │ │ ├── Slider.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Slider.test.js.snap
│ │ │ │ │ └── Slider.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── SubHeaderBar/
│ │ │ │ ├── SubHeaderBar.connect.js
│ │ │ │ ├── SubHeaderBar.container.jsx
│ │ │ │ ├── SubHeaderBar.md
│ │ │ │ ├── SubHeaderBar.selectors.js
│ │ │ │ ├── SubHeaderBar.stories.jsx
│ │ │ │ ├── SubHeaderBar.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── SubHeaderBar.test.js.snap
│ │ │ │ │ └── SubHeaderBar.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── TabBar/
│ │ │ │ ├── TabBar.connect.js
│ │ │ │ ├── TabBar.selectors.js
│ │ │ │ ├── TabBar.stories.jsx
│ │ │ │ ├── TabBar.test.jsx
│ │ │ │ └── index.js
│ │ │ ├── TreeView/
│ │ │ │ ├── TreeView.container.jsx
│ │ │ │ ├── TreeView.stories.jsx
│ │ │ │ ├── TreeView.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── TreeView.test.js.snap
│ │ │ │ │ └── TreeView.test.jsx.snap
│ │ │ │ ├── index.js
│ │ │ │ └── index.test.jsx
│ │ │ ├── Typeahead/
│ │ │ │ ├── Typeahead.connect.js
│ │ │ │ ├── Typeahead.container.jsx
│ │ │ │ ├── Typeahead.stories.jsx
│ │ │ │ ├── Typeahead.test.jsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── Typeahead.test.js.snap
│ │ │ │ │ └── Typeahead.test.jsx.snap
│ │ │ │ └── index.js
│ │ │ ├── actionAPI.js
│ │ │ ├── actionAPI.test.jsx
│ │ │ ├── actionOnClick.js
│ │ │ ├── actionOnClick.test.jsx
│ │ │ ├── cmfModule.js
│ │ │ ├── constant.js
│ │ │ ├── containers.js
│ │ │ ├── index.js
│ │ │ ├── mock.settings.json
│ │ │ ├── register.js
│ │ │ ├── register.test.jsx
│ │ │ ├── renderers.js
│ │ │ ├── test-setup.js
│ │ │ └── translate.js
│ │ ├── stylelint.config.mjs
│ │ ├── talend-i18n.json
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── dataviz/
│ │ ├── .babelrc.json
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── .storybook/
│ │ │ ├── main.ts
│ │ │ └── preview.ts
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── assets/
│ │ │ └── maps/
│ │ │ ├── CA.topo.json
│ │ │ ├── FR.topo.json
│ │ │ ├── MX.topo.json
│ │ │ ├── US.topo.json
│ │ │ ├── US_CA.topo.json
│ │ │ ├── continents.topo.json
│ │ │ └── world.topo.json
│ │ ├── eslint.config.mjs
│ │ ├── i18next-scanner.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ ├── BarChart/
│ │ │ │ │ ├── ColoredBar/
│ │ │ │ │ │ ├── ColoredBar.component.module.css
│ │ │ │ │ │ └── ColoredBar.component.tsx
│ │ │ │ │ ├── HorizontalBarChart/
│ │ │ │ │ │ ├── HorizontalBarChart.component.module.css
│ │ │ │ │ │ ├── HorizontalBarChart.component.test.tsx
│ │ │ │ │ │ ├── HorizontalBarChart.component.tsx
│ │ │ │ │ │ ├── HorizontalBarChart.stories.tsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── HorizontalBarChart.component.test.tsx.snap
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── TooltipCursor/
│ │ │ │ │ │ ├── TooltipCursor.component.module.css
│ │ │ │ │ │ └── TooltipCursor.component.tsx
│ │ │ │ │ ├── VerticalBarChart/
│ │ │ │ │ │ ├── VerticalBarChart.component.module.css
│ │ │ │ │ │ ├── VerticalBarChart.component.test.tsx
│ │ │ │ │ │ ├── VerticalBarChart.component.tsx
│ │ │ │ │ │ ├── VerticalBarChart.stories.tsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── VerticalBarChart.component.test.tsx.snap
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── _bar-chart.scss
│ │ │ │ │ ├── barChart.tooltip.test.ts
│ │ │ │ │ ├── barChart.tooltip.ts
│ │ │ │ │ ├── barChart.types.ts
│ │ │ │ │ ├── useBarChart.hook.tsx
│ │ │ │ │ └── useBarChartHook.test.ts
│ │ │ │ ├── BoxPlot/
│ │ │ │ │ ├── BoxPlot.component.module.css
│ │ │ │ │ ├── BoxPlot.component.test.tsx
│ │ │ │ │ ├── BoxPlot.component.tsx
│ │ │ │ │ ├── BoxPlot.stories.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── BoxPlot.component.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── ChartPanel/
│ │ │ │ │ └── VerticalChartFilter/
│ │ │ │ │ ├── VerticalChartFilter.component.module.css
│ │ │ │ │ ├── VerticalChartFilter.component.test.tsx
│ │ │ │ │ ├── VerticalChartFilter.component.tsx
│ │ │ │ │ ├── VerticalChartFilter.stories.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── GeoChart/
│ │ │ │ │ ├── GeoChart.component.tsx
│ │ │ │ │ ├── GeoChart.module.css
│ │ │ │ │ ├── GeoChart.stories.tsx
│ │ │ │ │ ├── GeoChart.test.jsx
│ │ │ │ │ ├── GeoChart.utils.ts
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── index.ts
│ │ │ │ ├── KeyValueTooltip/
│ │ │ │ │ ├── KeyValueTooltip.component.module.css
│ │ │ │ │ ├── KeyValueTooltip.component.test.tsx
│ │ │ │ │ ├── KeyValueTooltip.component.tsx
│ │ │ │ │ ├── KeyValueTooltip.stories.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── KeyValueTooltip.component.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── LineChart/
│ │ │ │ │ ├── LineChart.component.test.tsx
│ │ │ │ │ ├── LineChart.component.tsx
│ │ │ │ │ ├── LineChart.module.css
│ │ │ │ │ ├── LineChart.stories.tsx
│ │ │ │ │ ├── LineChart.types.ts
│ │ │ │ │ ├── LineChartLegend.component.tsx
│ │ │ │ │ ├── LineChartLineIcon.component.tsx
│ │ │ │ │ ├── LineChartTooltip.component.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── RangeFilter/
│ │ │ │ │ ├── RangeFilter.component.module.css
│ │ │ │ │ ├── RangeFilter.component.stories.tsx
│ │ │ │ │ ├── RangeFilter.component.test.tsx
│ │ │ │ │ ├── RangeFilter.component.tsx
│ │ │ │ │ ├── handlers/
│ │ │ │ │ │ ├── DateRangeHandler/
│ │ │ │ │ │ │ ├── DateRangeHandler.test.tsx
│ │ │ │ │ │ │ └── DateRangeHandler.tsx
│ │ │ │ │ │ ├── DateTimeRangeHandler/
│ │ │ │ │ │ │ ├── DateTimeInputField.component.module.css
│ │ │ │ │ │ │ ├── DateTimeRangeHandler.test.tsx
│ │ │ │ │ │ │ └── DateTimeRangeHandler.tsx
│ │ │ │ │ │ ├── IntegerRangeHandler/
│ │ │ │ │ │ │ ├── IntegerRangeHandler.test.tsx
│ │ │ │ │ │ │ └── IntegerRangeHandler.tsx
│ │ │ │ │ │ ├── NumberRangeHandler/
│ │ │ │ │ │ │ ├── NumberInputField.component.module.css
│ │ │ │ │ │ │ ├── NumberRangeHandler.test.tsx
│ │ │ │ │ │ │ └── NumberRangeHandler.tsx
│ │ │ │ │ │ ├── TimeRangeHandler/
│ │ │ │ │ │ │ ├── TimeRangeHandler.test.tsx
│ │ │ │ │ │ │ └── TimeRangeHandler.tsx
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── range-handler.types.ts
│ │ │ │ │ │ ├── slider-ticks.utils.test.ts
│ │ │ │ │ │ ├── slider-ticks.utils.ts
│ │ │ │ │ │ └── useRangeInputField.hook.ts
│ │ │ │ │ └── index.ts
│ │ │ │ └── Tooltip/
│ │ │ │ ├── Tooltip.component.module.css
│ │ │ │ └── Tooltip.component.tsx
│ │ │ ├── constants.ts
│ │ │ ├── formatters/
│ │ │ │ ├── formatters.test.ts
│ │ │ │ └── formatters.ts
│ │ │ ├── index.ts
│ │ │ ├── setupTests.ts
│ │ │ └── types/
│ │ │ ├── index.ts
│ │ │ └── types.d.ts
│ │ ├── stylelint.config.mjs
│ │ ├── talend-i18n.json
│ │ ├── talend-scripts.json
│ │ ├── tsconfig.build.json
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── design-docs/
│ │ ├── .babelrc.json
│ │ ├── .storybook/
│ │ │ ├── .babelrc
│ │ │ ├── main.mjs
│ │ │ ├── manager-head.html
│ │ │ ├── manager.mjs
│ │ │ ├── preview-head.html
│ │ │ ├── preview.mjs
│ │ │ └── vite.config.ts
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── eslint.config.mjs
│ │ ├── netlify.toml
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── GettingStarted.mdx
│ │ │ ├── Principles.mdx
│ │ │ ├── StatusTable.module.css
│ │ │ ├── StatusTable.tsx
│ │ │ ├── Statuses.mdx
│ │ │ ├── Welcome.mdx
│ │ │ ├── Welcome.module.css
│ │ │ ├── WelcomeImage.tsx
│ │ │ ├── content/
│ │ │ │ ├── Capitalization.mdx
│ │ │ │ ├── Conventions.mdx
│ │ │ │ ├── Internationalization.mdx
│ │ │ │ ├── VoiceAndTone.mdx
│ │ │ │ └── Wording.mdx
│ │ │ ├── index.ts
│ │ │ ├── status.json
│ │ │ ├── tokens/
│ │ │ │ ├── A-About.mdx
│ │ │ │ ├── AB-Colors.mdx
│ │ │ │ ├── AC-ColorComposition.mdx
│ │ │ │ ├── Borders.mdx
│ │ │ │ ├── Brandings.mdx
│ │ │ │ ├── BreakPoints.mdx
│ │ │ │ ├── ColorChecker.tsx
│ │ │ │ ├── ColorComposition.module.css
│ │ │ │ ├── ColorComposition.tsx
│ │ │ │ ├── ColorCompositions.json
│ │ │ │ ├── Elevations.mdx
│ │ │ │ ├── ExampleCard.module.css
│ │ │ │ ├── ExampleCard.tsx
│ │ │ │ ├── Gradients.mdx
│ │ │ │ ├── Mesures.mdx
│ │ │ │ ├── Opacity.mdx
│ │ │ │ ├── Radius.mdx
│ │ │ │ ├── Shadows.mdx
│ │ │ │ ├── TokenFormatter.ts
│ │ │ │ ├── TokenValue.module.css
│ │ │ │ ├── TokenValue.tsx
│ │ │ │ ├── Transitions.mdx
│ │ │ │ ├── Transitions.module.css
│ │ │ │ └── Typography.mdx
│ │ │ └── types.d.ts
│ │ ├── stylelint.config.mjs
│ │ ├── talend-scripts.json
│ │ └── tsconfig.json
│ ├── design-system/
│ │ ├── .babelrc
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── .prettierrc.js
│ │ ├── .storybook/
│ │ │ ├── main.mjs
│ │ │ └── preview.mjs
│ │ ├── CHANGELOG.md
│ │ ├── CONTRIBUTING.md
│ │ ├── DOCTEMPLATE.md
│ │ ├── LICENSE
│ │ ├── MIGRATING.md
│ │ ├── README.md
│ │ ├── custom.d.ts
│ │ ├── eslint.config.mjs
│ │ ├── i18next-scanner.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ ├── Accordion/
│ │ │ │ │ ├── Accordion.test.tsx
│ │ │ │ │ ├── Accordion.tsx
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── CollapsiblePanel.module.css
│ │ │ │ │ │ ├── CollapsiblePanel.tsx
│ │ │ │ │ │ ├── CollapsiblePanelHeader.module.css
│ │ │ │ │ │ ├── CollapsiblePanelHeader.tsx
│ │ │ │ │ │ └── types.ts
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Accordion.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Badge/
│ │ │ │ │ ├── Badge.test.tsx
│ │ │ │ │ ├── Badge.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Badge.test.tsx.snap
│ │ │ │ │ ├── button/
│ │ │ │ │ │ ├── BadgeButton.module.css
│ │ │ │ │ │ └── BadgeButton.tsx
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── primitive/
│ │ │ │ │ │ ├── BadgePrimitive.module.css
│ │ │ │ │ │ └── BadgePrimitive.tsx
│ │ │ │ │ └── variants/
│ │ │ │ │ ├── BadgeDropdown.module.css
│ │ │ │ │ ├── BadgeDropdown.tsx
│ │ │ │ │ ├── BadgePopover.tsx
│ │ │ │ │ ├── BadgeTag.tsx
│ │ │ │ │ ├── BadgeValue.module.css
│ │ │ │ │ └── BadgeValue.tsx
│ │ │ │ ├── Breadcrumbs/
│ │ │ │ │ ├── Breadcrumbs.module.css
│ │ │ │ │ ├── Breadcrumbs.test.tsx
│ │ │ │ │ ├── Breadcrumbs.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Breadcrumbs.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Button/
│ │ │ │ │ ├── Button.test.tsx
│ │ │ │ │ ├── Button.tsx
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── ButtonPrimitive.tsx
│ │ │ │ │ │ └── ButtonStyles.module.css
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Button.test.tsx.snap
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── variations/
│ │ │ │ │ ├── ButtonDestructive.module.css
│ │ │ │ │ ├── ButtonDestructive.tsx
│ │ │ │ │ ├── ButtonPrimary.module.css
│ │ │ │ │ ├── ButtonPrimary.tsx
│ │ │ │ │ ├── ButtonSecondary.module.css
│ │ │ │ │ ├── ButtonSecondary.tsx
│ │ │ │ │ ├── ButtonTertiary.module.css
│ │ │ │ │ └── ButtonTertiary.tsx
│ │ │ │ ├── ButtonAsLink/
│ │ │ │ │ ├── ButtonAsLink.test.tsx
│ │ │ │ │ ├── ButtonAsLink.tsx
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── ButtonPrimitiveAsLink.module.css
│ │ │ │ │ │ └── ButtonPrimitiveAsLink.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── ButtonAsLink.test.tsx.snap
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── variations/
│ │ │ │ │ ├── ButtonDestructiveAsLink.tsx
│ │ │ │ │ ├── ButtonPrimaryAsLink.tsx
│ │ │ │ │ ├── ButtonSecondaryAsLink.tsx
│ │ │ │ │ └── ButtonTertiaryAsLink.tsx
│ │ │ │ ├── ButtonIcon/
│ │ │ │ │ ├── ButtonIcon.test.tsx
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── ButtonIcon.module.css
│ │ │ │ │ │ └── ButtonIconPrimitive.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── ButtonIcon.test.tsx.snap
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── variations/
│ │ │ │ │ ├── ButtonIcon.tsx
│ │ │ │ │ ├── ButtonIconFloating.tsx
│ │ │ │ │ └── ButtonIconToggle.tsx
│ │ │ │ ├── Card/
│ │ │ │ │ ├── Card.module.css
│ │ │ │ │ ├── Card.test.tsx
│ │ │ │ │ ├── Card.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Card.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Clickable/
│ │ │ │ │ ├── Clickable.module.css
│ │ │ │ │ ├── Clickable.tsx
│ │ │ │ │ ├── Clikable.test.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Clikable.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Combobox/
│ │ │ │ │ ├── Combobox.module.css
│ │ │ │ │ ├── Combobox.test.tsx
│ │ │ │ │ ├── Combobox.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Combobox.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Disclosure/
│ │ │ │ │ ├── Disclosure.tsx
│ │ │ │ │ └── DisclosureContext.ts
│ │ │ │ ├── Divider/
│ │ │ │ │ ├── Divider.module.css
│ │ │ │ │ ├── Divider.test.tsx
│ │ │ │ │ ├── Divider.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Divider.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Drawer/
│ │ │ │ │ ├── Drawer.test.tsx
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── PrimitiveDrawer.module.css
│ │ │ │ │ │ └── PrimitiveDrawer.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Drawer.test.tsx.snap
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── variants/
│ │ │ │ │ └── FloatingDrawer/
│ │ │ │ │ ├── FloatingDrawer.module.css
│ │ │ │ │ └── FloatingDrawer.tsx
│ │ │ │ ├── Dropdown/
│ │ │ │ │ ├── Dropdown.cy.tsx
│ │ │ │ │ ├── Dropdown.test.tsx
│ │ │ │ │ ├── Dropdown.tsx
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── DropdownButton.tsx
│ │ │ │ │ │ ├── DropdownDivider.module.css
│ │ │ │ │ │ ├── DropdownDivider.tsx
│ │ │ │ │ │ ├── DropdownEntry.module.css
│ │ │ │ │ │ ├── DropdownLink.tsx
│ │ │ │ │ │ ├── DropdownShell.module.css
│ │ │ │ │ │ ├── DropdownShell.tsx
│ │ │ │ │ │ ├── DropdownTitle.module.css
│ │ │ │ │ │ └── DropdownTitle.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Dropdown.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── EmptyState/
│ │ │ │ │ ├── EmptyState.test.tsx
│ │ │ │ │ ├── EmptyState.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── EmptyState.test.tsx.snap
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── primitive/
│ │ │ │ │ │ ├── EmptyStatePrimitive.module.css
│ │ │ │ │ │ └── EmptyStatePrimitive.tsx
│ │ │ │ │ └── variants/
│ │ │ │ │ ├── EmptyStateLarge.tsx
│ │ │ │ │ ├── EmptyStateMedium.tsx
│ │ │ │ │ └── EmptyStateSmall.tsx
│ │ │ │ ├── Enumeration/
│ │ │ │ │ ├── Enumeration.component.tsx
│ │ │ │ │ ├── Enumeration.module.css
│ │ │ │ │ ├── Enumeration.types.tsx
│ │ │ │ │ ├── EnumerationHeader/
│ │ │ │ │ │ ├── EnumerationHeader.component.tsx
│ │ │ │ │ │ ├── EnumerationHeader.module.css
│ │ │ │ │ │ └── EnumerationIHeader.types.tsx
│ │ │ │ │ ├── EnumerationItem/
│ │ │ │ │ │ ├── EnumerationItem.component.tsx
│ │ │ │ │ │ ├── EnumerationItem.module.css
│ │ │ │ │ │ └── EnumerationItem.types.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── ErrorState/
│ │ │ │ │ ├── ErrorState.module.css
│ │ │ │ │ ├── ErrorState.test.tsx
│ │ │ │ │ ├── ErrorState.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── ErrorState.test.tsx.snap
│ │ │ │ │ ├── illutstrations/
│ │ │ │ │ │ └── ErrorIllustration.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Form/
│ │ │ │ │ ├── Affix/
│ │ │ │ │ │ ├── AffixStyles.module.css
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── variations/
│ │ │ │ │ │ ├── AffixButton.tsx
│ │ │ │ │ │ ├── AffixReadOnly.tsx
│ │ │ │ │ │ └── AffixSelect.tsx
│ │ │ │ │ ├── Buttons/
│ │ │ │ │ │ ├── Buttons.module.css
│ │ │ │ │ │ ├── Buttons.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── Field/
│ │ │ │ │ │ ├── Datalist/
│ │ │ │ │ │ │ ├── Datalist.tsx
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── Input/
│ │ │ │ │ │ │ ├── Input.Checkbox.tsx
│ │ │ │ │ │ │ ├── Input.Color.tsx
│ │ │ │ │ │ │ ├── Input.Copy.tsx
│ │ │ │ │ │ │ ├── Input.Date.tsx
│ │ │ │ │ │ │ ├── Input.DatetimeLocal.tsx
│ │ │ │ │ │ │ ├── Input.Email.tsx
│ │ │ │ │ │ │ ├── Input.File.module.css
│ │ │ │ │ │ │ ├── Input.File.tsx
│ │ │ │ │ │ │ ├── Input.Hidden.tsx
│ │ │ │ │ │ │ ├── Input.Month.tsx
│ │ │ │ │ │ │ ├── Input.Number.tsx
│ │ │ │ │ │ │ ├── Input.Radio.tsx
│ │ │ │ │ │ │ ├── Input.Search.tsx
│ │ │ │ │ │ │ ├── Input.Tel.tsx
│ │ │ │ │ │ │ ├── Input.Text.tsx
│ │ │ │ │ │ │ ├── Input.Time.tsx
│ │ │ │ │ │ │ ├── Input.ToggleSwitch.module.css
│ │ │ │ │ │ │ ├── Input.ToggleSwitch.tsx
│ │ │ │ │ │ │ ├── Input.Url.tsx
│ │ │ │ │ │ │ ├── Input.Week.tsx
│ │ │ │ │ │ │ ├── Input.tsx
│ │ │ │ │ │ │ ├── Password/
│ │ │ │ │ │ │ │ ├── Password.cy.tsx
│ │ │ │ │ │ │ │ ├── Password.tsx
│ │ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ ├── hooks/
│ │ │ │ │ │ │ │ ├── passwordButton.module.css
│ │ │ │ │ │ │ │ ├── useReadOnly.tsx
│ │ │ │ │ │ │ │ └── useRevealPassword.tsx
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── Select/
│ │ │ │ │ │ │ ├── Select.tsx
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ └── Textarea/
│ │ │ │ │ │ ├── Textarea.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── Fieldset/
│ │ │ │ │ │ ├── Fieldset.cy.tsx
│ │ │ │ │ │ ├── Fieldset.module.css
│ │ │ │ │ │ ├── Fieldset.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── Form.module.css
│ │ │ │ │ ├── Form.test.tsx
│ │ │ │ │ ├── Form.tsx
│ │ │ │ │ ├── Label/
│ │ │ │ │ │ ├── Label.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── Primitives/
│ │ │ │ │ │ ├── Checkbox/
│ │ │ │ │ │ │ ├── Checkbox.module.css
│ │ │ │ │ │ │ └── Checkbox.tsx
│ │ │ │ │ │ ├── Field/
│ │ │ │ │ │ │ └── Field.tsx
│ │ │ │ │ │ ├── Input/
│ │ │ │ │ │ │ ├── Input.module.css
│ │ │ │ │ │ │ └── Input.tsx
│ │ │ │ │ │ ├── InputWrapper/
│ │ │ │ │ │ │ ├── InputWrapper.module.css
│ │ │ │ │ │ │ └── InputWrapper.tsx
│ │ │ │ │ │ ├── Label/
│ │ │ │ │ │ │ ├── Label.module.css
│ │ │ │ │ │ │ └── Label.tsx
│ │ │ │ │ │ ├── Radio/
│ │ │ │ │ │ │ ├── Radio.module.css
│ │ │ │ │ │ │ └── Radio.tsx
│ │ │ │ │ │ ├── Select/
│ │ │ │ │ │ │ ├── Select.module.css
│ │ │ │ │ │ │ ├── Select.tsx
│ │ │ │ │ │ │ └── SelectNoWrapper.tsx
│ │ │ │ │ │ ├── Textarea/
│ │ │ │ │ │ │ ├── Textarea.module.css
│ │ │ │ │ │ │ └── Textarea.tsx
│ │ │ │ │ │ └── index.tsx
│ │ │ │ │ ├── Row/
│ │ │ │ │ │ ├── Row.module.css
│ │ │ │ │ │ ├── Row.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Form.test.tsx.snap
│ │ │ │ │ ├── docs/
│ │ │ │ │ │ └── data/
│ │ │ │ │ │ └── CountryCodes.json
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Icon/
│ │ │ │ │ ├── DeprecatedIconHelper.tsx
│ │ │ │ │ ├── Icon.cy.tsx
│ │ │ │ │ ├── Icon.module.css
│ │ │ │ │ ├── Icon.test.tsx
│ │ │ │ │ ├── Icon.tsx
│ │ │ │ │ ├── SizedIcon.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Icon.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── IconsProvider/
│ │ │ │ │ ├── IconsProvider.cy.tsx
│ │ │ │ │ ├── IconsProvider.module.css
│ │ │ │ │ ├── IconsProvider.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── InlineEditing/
│ │ │ │ │ ├── InlineEditing.test.tsx
│ │ │ │ │ ├── Primitives/
│ │ │ │ │ │ ├── InlineEditingPrimitive.module.css
│ │ │ │ │ │ └── InlineEditingPrimitive.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── InlineEditing.test.tsx.snap
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── variations/
│ │ │ │ │ ├── InlineEditing.text.tsx
│ │ │ │ │ ├── InlineEditing.textarea.cy.tsx
│ │ │ │ │ └── InlineEditing.textarea.tsx
│ │ │ │ ├── InlineMessage/
│ │ │ │ │ ├── InlineMessage.test.tsx
│ │ │ │ │ ├── InlineMessage.tsx
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── InlineMessagePrimitive.module.css
│ │ │ │ │ │ └── InlineMessagePrimitive.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── InlineMessage.test.tsx.snap
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── variations/
│ │ │ │ │ ├── InlineMessageBeta.module.css
│ │ │ │ │ ├── InlineMessageBeta.tsx
│ │ │ │ │ ├── InlineMessageDestructive.module.css
│ │ │ │ │ ├── InlineMessageDestructive.tsx
│ │ │ │ │ ├── InlineMessageInformation.module.css
│ │ │ │ │ ├── InlineMessageInformation.tsx
│ │ │ │ │ ├── InlineMessageSuccess.module.css
│ │ │ │ │ ├── InlineMessageSuccess.tsx
│ │ │ │ │ ├── InlineMessageWarning.module.css
│ │ │ │ │ └── InlineMessageWarning.tsx
│ │ │ │ ├── Link/
│ │ │ │ │ ├── Link.cy.tsx
│ │ │ │ │ ├── Link.module.css
│ │ │ │ │ ├── Link.test.tsx
│ │ │ │ │ ├── Link.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Link.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── LinkAsButton/
│ │ │ │ │ ├── LinkAsButton.cy.tsx
│ │ │ │ │ ├── LinkAsButton.test.tsx
│ │ │ │ │ ├── LinkAsButton.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── LinkAsButton.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Linkable/
│ │ │ │ │ ├── Linkable.test.tsx
│ │ │ │ │ ├── Linkable.tsx
│ │ │ │ │ ├── LinkableStyles.module.css
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Linkable.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Loading/
│ │ │ │ │ ├── Loading.test.tsx
│ │ │ │ │ ├── Loading.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Loading.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Message/
│ │ │ │ │ ├── Message.test.tsx
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── MessagePrimitive.tsx
│ │ │ │ │ │ └── MessageStyles.module.css
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Message.test.tsx.snap
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── variations/
│ │ │ │ │ ├── MessageCollectionDestructive.tsx
│ │ │ │ │ ├── MessageCollectionInformation.tsx
│ │ │ │ │ ├── MessageCollectionSuccess.tsx
│ │ │ │ │ ├── MessageCollectionWarning.tsx
│ │ │ │ │ ├── MessageDestructive.module.css
│ │ │ │ │ ├── MessageDestructive.tsx
│ │ │ │ │ ├── MessageInformation.module.css
│ │ │ │ │ ├── MessageInformation.tsx
│ │ │ │ │ ├── MessageSuccess.module.css
│ │ │ │ │ ├── MessageSuccess.tsx
│ │ │ │ │ ├── MessageWarning.module.css
│ │ │ │ │ └── MessageWarning.tsx
│ │ │ │ ├── Modal/
│ │ │ │ │ ├── Modal.module.css
│ │ │ │ │ ├── Modal.test.tsx
│ │ │ │ │ ├── Modal.tsx
│ │ │ │ │ ├── Primitives/
│ │ │ │ │ │ ├── Dialog.tsx
│ │ │ │ │ │ ├── DialogBackdrop.tsx
│ │ │ │ │ │ ├── DialogState.ts
│ │ │ │ │ │ └── Portal.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Modal.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Popover/
│ │ │ │ │ ├── Popover.cy.tsx
│ │ │ │ │ ├── Popover.module.css
│ │ │ │ │ ├── Popover.tsx
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── usePopover.tsx
│ │ │ │ ├── QualityBar/
│ │ │ │ │ ├── QualityBar.component.test.tsx
│ │ │ │ │ ├── QualityBar.component.tsx
│ │ │ │ │ ├── QualityBar.stories.tsx
│ │ │ │ │ ├── QualityBar.types.ts
│ │ │ │ │ ├── QualityBarRatioBars.component.tsx
│ │ │ │ │ ├── QualityRatioBar.component.tsx
│ │ │ │ │ ├── QualityRatioBar.module.css
│ │ │ │ │ ├── QualityRatioBar.utils.ts
│ │ │ │ │ ├── SplitQualityBar.component.tsx
│ │ │ │ │ ├── SplitQualityBar.stories.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── RatioBar/
│ │ │ │ │ ├── RatioBar.component.test.jsx
│ │ │ │ │ ├── RatioBar.component.tsx
│ │ │ │ │ ├── RatioBar.module.css
│ │ │ │ │ ├── RatioBar.stories.tsx
│ │ │ │ │ ├── RatioBarComposition.component.tsx
│ │ │ │ │ ├── RatioBarLines.component.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── RatioBar.component.test.jsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── RichRadioButton/
│ │ │ │ │ ├── RichRadioButton.component.tsx
│ │ │ │ │ ├── RichRadioButton.module.css
│ │ │ │ │ ├── RichRadioButton.types.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Skeleton/
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── Skeleton.Primitive.tsx
│ │ │ │ │ │ └── Skeleton.module.css
│ │ │ │ │ ├── Skeleton.tsx
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── variations/
│ │ │ │ │ ├── SkeletonButton.module.css
│ │ │ │ │ ├── SkeletonButton.tsx
│ │ │ │ │ ├── SkeletonButtonIcon.module.css
│ │ │ │ │ ├── SkeletonButtonIcon.tsx
│ │ │ │ │ ├── SkeletonHeading.module.css
│ │ │ │ │ ├── SkeletonHeading.tsx
│ │ │ │ │ ├── SkeletonInput.module.css
│ │ │ │ │ ├── SkeletonInput.tsx
│ │ │ │ │ ├── SkeletonParagraph.module.css
│ │ │ │ │ ├── SkeletonParagraph.tsx
│ │ │ │ │ ├── SkeletonSized.module.css
│ │ │ │ │ └── SkeletonSized.tsx
│ │ │ │ ├── Stack/
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── StackPrimitive.module.css
│ │ │ │ │ │ ├── StackPrimitive.test.tsx
│ │ │ │ │ │ └── StackPrimitive.tsx
│ │ │ │ │ ├── StackHorizontal.tsx
│ │ │ │ │ ├── StackItem.module.css
│ │ │ │ │ ├── StackItem.tsx
│ │ │ │ │ ├── StackVertical.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Status/
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── Status.module.css
│ │ │ │ │ │ ├── StatusPrimitive.test.tsx
│ │ │ │ │ │ └── StatusPrimitive.tsx
│ │ │ │ │ ├── Status.tsx
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── variations/
│ │ │ │ │ ├── StatusCanceled.tsx
│ │ │ │ │ ├── StatusFailed.tsx
│ │ │ │ │ ├── StatusInProgress.tsx
│ │ │ │ │ ├── StatusSuccessful.tsx
│ │ │ │ │ └── StatusWarning.tsx
│ │ │ │ ├── StatusDot/
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── StatusDotPrimitive.module.css
│ │ │ │ │ │ ├── StatusDotPrimitive.test.tsx
│ │ │ │ │ │ └── StatusDotPrimitive.tsx
│ │ │ │ │ ├── StatusDot.tsx
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── variations/
│ │ │ │ │ ├── StatusDotBeta.tsx
│ │ │ │ │ ├── StatusDotError.tsx
│ │ │ │ │ ├── StatusDotInformation.tsx
│ │ │ │ │ ├── StatusDotSuccess.tsx
│ │ │ │ │ └── StatusDotWarning.tsx
│ │ │ │ ├── Stepper/
│ │ │ │ │ ├── Progress/
│ │ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ │ ├── Progress.module.css
│ │ │ │ │ │ │ └── Progress.tsx
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── variations/
│ │ │ │ │ │ ├── Progress.horizontal.module.css
│ │ │ │ │ │ ├── Progress.horizontal.tsx
│ │ │ │ │ │ ├── Progress.vertical.module.css
│ │ │ │ │ │ └── Progress.vertical.tsx
│ │ │ │ │ ├── Step/
│ │ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ │ ├── Step.module.css
│ │ │ │ │ │ │ └── Step.tsx
│ │ │ │ │ │ ├── Step.cy.tsx
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ └── variations/
│ │ │ │ │ │ ├── Step.Skeleton.module.css
│ │ │ │ │ │ ├── Step.disabled.tsx
│ │ │ │ │ │ ├── Step.enabled.tsx
│ │ │ │ │ │ ├── Step.error.tsx
│ │ │ │ │ │ ├── Step.progress.tsx
│ │ │ │ │ │ ├── Step.skeleton.tsx
│ │ │ │ │ │ └── Step.validated.tsx
│ │ │ │ │ ├── Stepper.cy.tsx
│ │ │ │ │ ├── Stepper.module.css
│ │ │ │ │ ├── Stepper.tsx
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── variations/
│ │ │ │ │ ├── Stepper.horizontal.tsx
│ │ │ │ │ └── Stepper.vertical.tsx
│ │ │ │ ├── Switch/
│ │ │ │ │ ├── Switch.module.css
│ │ │ │ │ ├── Switch.test.tsx
│ │ │ │ │ ├── Switch.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Switch.test.tsx.snap
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Tabs/
│ │ │ │ │ ├── Primitive/
│ │ │ │ │ │ ├── TabPanel.tsx
│ │ │ │ │ │ ├── TabStyles.module.css
│ │ │ │ │ │ ├── Tabs.tsx
│ │ │ │ │ │ └── TabsProvider.tsx
│ │ │ │ │ ├── Tabs.test.tsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Tabs.test.tsx.snap
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── variants/
│ │ │ │ │ └── Tabs.tsx
│ │ │ │ ├── Tag/
│ │ │ │ │ ├── Tag.cy.tsx
│ │ │ │ │ ├── Tag.tsx
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── primitive/
│ │ │ │ │ │ ├── TagPrimitive.module.css
│ │ │ │ │ │ ├── TagPrimitive.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── variations/
│ │ │ │ │ ├── TagBeta.module.css
│ │ │ │ │ ├── TagBeta.tsx
│ │ │ │ │ ├── TagDefault.module.css
│ │ │ │ │ ├── TagDefault.tsx
│ │ │ │ │ ├── TagDestructive.module.css
│ │ │ │ │ ├── TagDestructive.tsx
│ │ │ │ │ ├── TagInformation.module.css
│ │ │ │ │ ├── TagInformation.tsx
│ │ │ │ │ ├── TagSuccess.module.css
│ │ │ │ │ ├── TagSuccess.tsx
│ │ │ │ │ ├── TagWarning.module.css
│ │ │ │ │ ├── TagWarning.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── ThemeProvider/
│ │ │ │ │ ├── ThemeContext/
│ │ │ │ │ │ ├── ThemeContext.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── ThemeProvider.css
│ │ │ │ │ ├── ThemeProvider.tsx
│ │ │ │ │ ├── ThemeSwitcher/
│ │ │ │ │ │ ├── ThemeSwitcher.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── ThemeProviderWithoutGlobals/
│ │ │ │ │ ├── ThemeProviderWithoutGlobals.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── Tooltip/
│ │ │ │ │ ├── Tooltip.cy.tsx
│ │ │ │ │ ├── Tooltip.module.css
│ │ │ │ │ ├── Tooltip.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── VisuallyHidden/
│ │ │ │ │ ├── VisuallyHidden.module.css
│ │ │ │ │ ├── VisuallyHidden.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── constants.ts
│ │ │ │ └── illustrations/
│ │ │ │ ├── IconActivity.tsx
│ │ │ │ ├── IconChart.tsx
│ │ │ │ ├── IconChecklist.tsx
│ │ │ │ ├── IconDefault.module.css
│ │ │ │ ├── IconDefault.tsx
│ │ │ │ ├── IconDocument.tsx
│ │ │ │ ├── IconFlask.tsx
│ │ │ │ ├── IconInProgress.tsx
│ │ │ │ ├── IconLightBulb.tsx
│ │ │ │ ├── IconMessage.tsx
│ │ │ │ ├── IconPlug.tsx
│ │ │ │ ├── IconRocket.tsx
│ │ │ │ ├── IconSearch.tsx
│ │ │ │ ├── IconSettings.tsx
│ │ │ │ ├── IconUpdate.tsx
│ │ │ │ ├── IconUser.tsx
│ │ │ │ ├── IconWarning.tsx
│ │ │ │ ├── SpotDefault.module.css
│ │ │ │ ├── SpotDefault.tsx
│ │ │ │ └── index.ts
│ │ │ ├── declare.d.ts
│ │ │ ├── index.ts
│ │ │ ├── mergeRef.ts
│ │ │ ├── renderChildren.ts
│ │ │ ├── renderOrClone.ts
│ │ │ ├── stories/
│ │ │ │ ├── Status.block.tsx
│ │ │ │ ├── clickable/
│ │ │ │ │ ├── About.mdx
│ │ │ │ │ ├── Button.mdx
│ │ │ │ │ ├── Button.stories.tsx
│ │ │ │ │ ├── ButtonAsLink.mdx
│ │ │ │ │ ├── ButtonAsLink.stories.tsx
│ │ │ │ │ ├── ButtonIcon.mdx
│ │ │ │ │ ├── ButtonIcon.stories.tsx
│ │ │ │ │ ├── Dropdown.mdx
│ │ │ │ │ ├── Dropdown.stories.tsx
│ │ │ │ │ ├── Link.mdx
│ │ │ │ │ ├── Link.stories.tsx
│ │ │ │ │ └── LinkAsButton.stories.tsx
│ │ │ │ ├── docs/
│ │ │ │ │ ├── Area.module.css
│ │ │ │ │ ├── Area.tsx
│ │ │ │ │ ├── WithSelector.tsx
│ │ │ │ │ └── data/
│ │ │ │ │ └── CountryCodes.json
│ │ │ │ ├── feedback/
│ │ │ │ │ ├── EmptyState.mdx
│ │ │ │ │ ├── EmptyState.stories.tsx
│ │ │ │ │ ├── ErrorState.mdx
│ │ │ │ │ ├── ErrorState.stories.tsx
│ │ │ │ │ ├── Loading.mdx
│ │ │ │ │ ├── Loading.stories.tsx
│ │ │ │ │ ├── Skeleton.mdx
│ │ │ │ │ ├── Skeleton.stories.tsx
│ │ │ │ │ ├── Status.mdx
│ │ │ │ │ ├── Status.stories.tsx
│ │ │ │ │ ├── StatusDot.mdx
│ │ │ │ │ └── StatusDot.stories.tsx
│ │ │ │ ├── form/
│ │ │ │ │ ├── About.mdx
│ │ │ │ │ ├── Affix/
│ │ │ │ │ │ ├── Affix.stories.tsx
│ │ │ │ │ │ └── Affixes.mdx
│ │ │ │ │ ├── Buttons/
│ │ │ │ │ │ ├── FormButtons.mdx
│ │ │ │ │ │ └── FormButtons.stories.tsx
│ │ │ │ │ ├── Combobox.stories.tsx
│ │ │ │ │ ├── Enumeration/
│ │ │ │ │ │ ├── Enumeration.mdx
│ │ │ │ │ │ └── Enumeration.stories.tsx
│ │ │ │ │ ├── Field/
│ │ │ │ │ │ ├── Datalist/
│ │ │ │ │ │ │ ├── Input.Datalist.mdx
│ │ │ │ │ │ │ └── Input.Datalist.stories.tsx
│ │ │ │ │ │ ├── FormField.mdx
│ │ │ │ │ │ ├── FormField.stories.tsx
│ │ │ │ │ │ ├── Input/
│ │ │ │ │ │ │ ├── Input.Checkbox.mdx
│ │ │ │ │ │ │ ├── Input.Checkbox.stories.tsx
│ │ │ │ │ │ │ ├── Input.Color.mdx
│ │ │ │ │ │ │ ├── Input.Color.stories.tsx
│ │ │ │ │ │ │ ├── Input.Copy.mdx
│ │ │ │ │ │ │ ├── Input.Copy.stories.tsx
│ │ │ │ │ │ │ ├── Input.Date.mdx
│ │ │ │ │ │ │ ├── Input.Date.stories.tsx
│ │ │ │ │ │ │ ├── Input.DatetimeLocal.mdx
│ │ │ │ │ │ │ ├── Input.DatetimeLocal.stories.tsx
│ │ │ │ │ │ │ ├── Input.Email.mdx
│ │ │ │ │ │ │ ├── Input.Email.stories.tsx
│ │ │ │ │ │ │ ├── Input.File.mdx
│ │ │ │ │ │ │ ├── Input.File.stories.tsx
│ │ │ │ │ │ │ ├── Input.Month.mdx
│ │ │ │ │ │ │ ├── Input.Month.stories.tsx
│ │ │ │ │ │ │ ├── Input.Number.mdx
│ │ │ │ │ │ │ ├── Input.Number.stories.tsx
│ │ │ │ │ │ │ ├── Input.Radio.mdx
│ │ │ │ │ │ │ ├── Input.Radio.stories.tsx
│ │ │ │ │ │ │ ├── Input.Search.mdx
│ │ │ │ │ │ │ ├── Input.Search.stories.tsx
│ │ │ │ │ │ │ ├── Input.Tel.mdx
│ │ │ │ │ │ │ ├── Input.Tel.stories.tsx
│ │ │ │ │ │ │ ├── Input.Text.mdx
│ │ │ │ │ │ │ ├── Input.Text.stories.tsx
│ │ │ │ │ │ │ ├── Input.Time.mdx
│ │ │ │ │ │ │ ├── Input.Time.stories.tsx
│ │ │ │ │ │ │ ├── Input.Url.mdx
│ │ │ │ │ │ │ ├── Input.Url.stories.tsx
│ │ │ │ │ │ │ ├── Input.Week.mdx
│ │ │ │ │ │ │ ├── Input.Week.stories.tsx
│ │ │ │ │ │ │ ├── Password.mdx
│ │ │ │ │ │ │ └── Password.stories.tsx
│ │ │ │ │ │ ├── Select/
│ │ │ │ │ │ │ ├── Input.Select.mdx
│ │ │ │ │ │ │ └── Input.Select.stories.tsx
│ │ │ │ │ │ └── Textarea/
│ │ │ │ │ │ ├── Input.Textarea.mdx
│ │ │ │ │ │ └── Input.Textarea.stories.tsx
│ │ │ │ │ ├── FieldCombobox.mdx
│ │ │ │ │ ├── Fieldset/
│ │ │ │ │ │ ├── Fieldset.mdx
│ │ │ │ │ │ ├── Fieldset.stories.tsx
│ │ │ │ │ │ └── FormFieldset.mdx
│ │ │ │ │ ├── Form.mdx
│ │ │ │ │ ├── Form.stories.tsx
│ │ │ │ │ ├── InlineEditing.mdx
│ │ │ │ │ ├── InlineEditing.stories.tsx
│ │ │ │ │ ├── RichRadioButton.mdx
│ │ │ │ │ ├── RichRadioButton.stories.tsx
│ │ │ │ │ ├── Switch.mdx
│ │ │ │ │ ├── Switch.stories.tsx
│ │ │ │ │ └── ToggleSwitch/
│ │ │ │ │ ├── ToggleSwitch.mdx
│ │ │ │ │ └── ToggleSwitch.stories.tsx
│ │ │ │ ├── icons/
│ │ │ │ │ ├── About.mdx
│ │ │ │ │ ├── Icon.mdx
│ │ │ │ │ ├── Icon.stories.tsx
│ │ │ │ │ ├── Icons.tsx
│ │ │ │ │ ├── SizedIcon.mdx
│ │ │ │ │ └── SizedIcon.stories.tsx
│ │ │ │ ├── layout/
│ │ │ │ │ ├── Card.mdx
│ │ │ │ │ ├── Card.stories.tsx
│ │ │ │ │ ├── Modal.mdx
│ │ │ │ │ ├── Modal.stories.tsx
│ │ │ │ │ ├── Stack.mdx
│ │ │ │ │ └── Stack.stories.tsx
│ │ │ │ ├── messaging/
│ │ │ │ │ ├── Badge.mdx
│ │ │ │ │ ├── Badge.stories.tsx
│ │ │ │ │ ├── InlineMessage.mdx
│ │ │ │ │ ├── InlineMessage.stories.tsx
│ │ │ │ │ ├── Message.mdx
│ │ │ │ │ ├── Message.stories.tsx
│ │ │ │ │ ├── Popover.mdx
│ │ │ │ │ ├── Popover.stories.tsx
│ │ │ │ │ ├── Tag.mdx
│ │ │ │ │ ├── Tag.stories.tsx
│ │ │ │ │ ├── Tooltip.mdx
│ │ │ │ │ └── Tooltip.stories.tsx
│ │ │ │ ├── navigation/
│ │ │ │ │ ├── Accordion.mdx
│ │ │ │ │ ├── Accordion.stories.tsx
│ │ │ │ │ ├── Breadcrumbs.mdx
│ │ │ │ │ ├── Breadcrumbs.stories.tsx
│ │ │ │ │ ├── Divider.mdx
│ │ │ │ │ ├── Divider.stories.tsx
│ │ │ │ │ ├── FloatingDrawer.mdx
│ │ │ │ │ ├── FloatingDrawer.stories.tsx
│ │ │ │ │ ├── Stepper.Step.mdx
│ │ │ │ │ ├── Stepper.Step.stories.tsx
│ │ │ │ │ ├── Stepper.mdx
│ │ │ │ │ ├── Stepper.stories.tsx
│ │ │ │ │ ├── Tabs.mdx
│ │ │ │ │ └── Tabs.stories.tsx
│ │ │ │ └── status.json
│ │ │ ├── themes/
│ │ │ │ └── index.ts
│ │ │ ├── types/
│ │ │ │ └── index.ts
│ │ │ ├── useControl.ts
│ │ │ ├── useId.ts
│ │ │ └── vitest.setup.ts
│ │ ├── static/
│ │ │ ├── _headers
│ │ │ ├── favicon/
│ │ │ │ ├── browserconfig.xml
│ │ │ │ └── site.webmanifest
│ │ │ ├── robots.txt
│ │ │ └── sw.js
│ │ ├── stylelint.config.mjs
│ │ ├── talend-i18n.json
│ │ ├── talend-scripts.json
│ │ ├── tsconfig.build.json
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── design-tokens/
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── dependencies.json
│ │ ├── eslint.config.mjs
│ │ ├── package.json
│ │ ├── scripts/
│ │ │ ├── compare.js
│ │ │ └── umd.test.js
│ │ ├── src/
│ │ │ ├── _tokens.scss
│ │ │ ├── dark/
│ │ │ │ ├── _index.scss
│ │ │ │ ├── _tokens.scss
│ │ │ │ ├── dictionary.ts
│ │ │ │ └── index.ts
│ │ │ ├── declaration.d.ts
│ │ │ ├── index.scss
│ │ │ ├── index.ts
│ │ │ ├── index.umd.ts
│ │ │ ├── light/
│ │ │ │ ├── _index.scss
│ │ │ │ ├── dictionary.ts
│ │ │ │ └── index.ts
│ │ │ ├── qlik-light/
│ │ │ │ ├── _index.scss
│ │ │ │ ├── dictionary.ts
│ │ │ │ └── index.ts
│ │ │ └── types.ts
│ │ ├── supernova-exporter/
│ │ │ ├── README.md
│ │ │ ├── exporter.json
│ │ │ ├── output.json
│ │ │ ├── sources.json
│ │ │ └── src/
│ │ │ ├── exportCSS/
│ │ │ │ ├── CSS.pr
│ │ │ │ ├── css-stylesheet-with-path.pr
│ │ │ │ ├── main-renderers/
│ │ │ │ │ ├── css-reference-wrapper.pr
│ │ │ │ │ ├── css-rendered-name.pr
│ │ │ │ │ ├── css-rendered-token-class.pr
│ │ │ │ │ ├── css-rendered-token-style.pr
│ │ │ │ │ ├── css-rendered-token-var.pr
│ │ │ │ │ └── css-rendered-value.pr
│ │ │ │ └── token-renderers/
│ │ │ │ ├── css-rendered-border.pr
│ │ │ │ ├── css-rendered-color.pr
│ │ │ │ ├── css-rendered-gradient.pr
│ │ │ │ ├── css-rendered-lineHeight.pr
│ │ │ │ ├── css-rendered-measure.pr
│ │ │ │ ├── css-rendered-other.pr
│ │ │ │ ├── css-rendered-radius.pr
│ │ │ │ ├── css-rendered-shadow.pr
│ │ │ │ ├── css-rendered-text.pr
│ │ │ │ └── css-rendered-typography.pr
│ │ │ ├── exportSCSS/
│ │ │ │ ├── SCSS.pr
│ │ │ │ ├── main-renderers/
│ │ │ │ │ ├── scss-reference-wrapper.pr
│ │ │ │ │ ├── scss-rendered-description.pr
│ │ │ │ │ ├── scss-rendered-token-class.pr
│ │ │ │ │ └── scss-rendered-token-var.pr
│ │ │ │ └── scss-tokens-with-path.pr
│ │ │ ├── exportTS/
│ │ │ │ ├── allTokens.pr
│ │ │ │ ├── dictionary.pr
│ │ │ │ ├── main-renderers/
│ │ │ │ │ ├── index-file.pr
│ │ │ │ │ ├── reference-wrapper.pr
│ │ │ │ │ ├── rendered-css-name.pr
│ │ │ │ │ ├── rendered-description.pr
│ │ │ │ │ ├── rendered-dictionnary-entry.pr
│ │ │ │ │ ├── rendered-token-class.pr
│ │ │ │ │ ├── rendered-token-var.pr
│ │ │ │ │ ├── rendered-ts-name.pr
│ │ │ │ │ ├── rendered-type.pr
│ │ │ │ │ ├── rendered-value-detailed.pr
│ │ │ │ │ └── rendered-value.pr
│ │ │ │ ├── token-renderers/
│ │ │ │ │ ├── rendered-border.pr
│ │ │ │ │ ├── rendered-color-detailed.pr
│ │ │ │ │ ├── rendered-color.pr
│ │ │ │ │ ├── rendered-gradient-detailed.pr
│ │ │ │ │ ├── rendered-gradient.pr
│ │ │ │ │ ├── rendered-lineHeight.pr
│ │ │ │ │ ├── rendered-measure-detailed.pr
│ │ │ │ │ ├── rendered-measure.pr
│ │ │ │ │ ├── rendered-radius-detailed.pr
│ │ │ │ │ ├── rendered-radius.pr
│ │ │ │ │ ├── rendered-shadow-detailed.pr
│ │ │ │ │ ├── rendered-shadow.pr
│ │ │ │ │ ├── rendered-text-detailed.pr
│ │ │ │ │ ├── rendered-text.pr
│ │ │ │ │ ├── rendered-typography-detailed.pr
│ │ │ │ │ └── rendered-typography.pr
│ │ │ │ ├── ts-dictionnary-with-path.pr
│ │ │ │ └── ts-index-with-path.pr
│ │ │ └── js/
│ │ │ └── helpers.js
│ │ ├── talend-scripts.json
│ │ ├── tsconfig.json
│ │ └── webpack.config.js
│ ├── faceted-search/
│ │ ├── .babelrc
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── .storybook/
│ │ │ ├── main.mjs
│ │ │ └── preview.jsx
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── eslint.config.mjs
│ │ ├── i18next-scanner.config.js
│ │ ├── jest.setup.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── CRUDBadges.js
│ │ │ ├── components/
│ │ │ │ ├── AddFacetPopover/
│ │ │ │ │ ├── AddFacetPopover.component.jsx
│ │ │ │ │ ├── AddFacetPopover.module.css
│ │ │ │ │ ├── AddFacetPopoverHeader/
│ │ │ │ │ │ ├── AddFacetPopoverHeader.component.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── AddFacetPopoverRow/
│ │ │ │ │ │ ├── AddFacetPopoverRowButton/
│ │ │ │ │ │ │ ├── AddFacetPopoverRowButton.component.jsx
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── AddFacetPopoverRowItem/
│ │ │ │ │ │ │ ├── AddFacetPopoverRowItem.component.jsx
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── AddFacetPopver.component.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── AddFacetPopver.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── AdvancedSearch/
│ │ │ │ │ ├── AdvancedSearch.component.jsx
│ │ │ │ │ ├── AdvancedSearch.component.test.jsx
│ │ │ │ │ ├── AdvancedSearch.module.css
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── AdvancedSearch.component.test.js.snap
│ │ │ │ │ │ └── AdvancedSearch.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── Badges/
│ │ │ │ │ ├── BadgeCheckboxes/
│ │ │ │ │ │ ├── BadgeCheckboxes.component.jsx
│ │ │ │ │ │ ├── BadgeCheckboxes.component.test.jsx
│ │ │ │ │ │ ├── BadgeCheckboxes.module.css
│ │ │ │ │ │ ├── BadgeCheckboxesForm.component.jsx
│ │ │ │ │ │ ├── BadgeCheckboxesForm.component.test.jsx
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── BadgeDate/
│ │ │ │ │ │ ├── BadgeDate.component.jsx
│ │ │ │ │ │ ├── BadgeDate.component.test.jsx
│ │ │ │ │ │ ├── BadgeDate.module.css
│ │ │ │ │ │ ├── BadgeDateForm.component.jsx
│ │ │ │ │ │ ├── BadgeDateForm.component.test.jsx
│ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ ├── BadgeDate.component.test.js.snap
│ │ │ │ │ │ ├── BadgeDate.component.test.jsx.snap
│ │ │ │ │ │ ├── BadgeDateForm.component.test.js.snap
│ │ │ │ │ │ └── BadgeDateForm.component.test.jsx.snap
│ │ │ │ │ ├── BadgeFaceted/
│ │ │ │ │ │ ├── BadgeFaceted.component.jsx
│ │ │ │ │ │ ├── BadgeFaceted.component.test.jsx
│ │ │ │ │ │ ├── BadgeFaceted.module.css
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── BadgeFaceted.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── BadgeMenu/
│ │ │ │ │ │ ├── BadgeMenu.component.jsx
│ │ │ │ │ │ ├── BadgeMenu.component.test.jsx
│ │ │ │ │ │ ├── BadgeMenu.module.css
│ │ │ │ │ │ ├── BadgeMenuForm.component.jsx
│ │ │ │ │ │ └── BadgeMenuForm.component.test.jsx
│ │ │ │ │ ├── BadgeNumber/
│ │ │ │ │ │ ├── BadgeNumber.component.jsx
│ │ │ │ │ │ ├── BadgeNumber.component.test.jsx
│ │ │ │ │ │ ├── BadgeNumberForm.component.jsx
│ │ │ │ │ │ ├── BadgeNumberForm.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── BadgeNumber.component.test.js.snap
│ │ │ │ │ │ │ ├── BadgeNumber.component.test.jsx.snap
│ │ │ │ │ │ │ ├── BadgeNumberForm.component.test.js.snap
│ │ │ │ │ │ │ └── BadgeNumberForm.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── BadgeOperator/
│ │ │ │ │ │ ├── BadgeOperator.module.css
│ │ │ │ │ │ ├── BadgeOperatorOverlay.component.jsx
│ │ │ │ │ │ ├── BadgeOperatorPopover.component.jsx
│ │ │ │ │ │ ├── BadgeOperatorPopover.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── BadgeOperatorPopover.component.test.js.snap
│ │ │ │ │ │ │ └── BadgeOperatorPopover.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── BadgeOverlay/
│ │ │ │ │ │ ├── BadgeOverlay.component.jsx
│ │ │ │ │ │ ├── BadgeOverlay.component.test.jsx
│ │ │ │ │ │ ├── BadgeOverlay.module.css
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── BadgeOverlay.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── BadgePeriod/
│ │ │ │ │ │ ├── BadgePeriod.component.jsx
│ │ │ │ │ │ ├── BadgePeriod.component.test.jsx
│ │ │ │ │ │ ├── BadgePeriodForm.component.jsx
│ │ │ │ │ │ └── BadgePeriodForm.component.test.jsx
│ │ │ │ │ ├── BadgeSlider/
│ │ │ │ │ │ ├── BadgeSlider.component.jsx
│ │ │ │ │ │ ├── BadgeSlider.component.test.jsx
│ │ │ │ │ │ ├── BadgeSlider.module.css
│ │ │ │ │ │ ├── BadgeSliderForm.component.jsx
│ │ │ │ │ │ ├── BadgeSliderForm.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── BadgeSlider.component.test.js.snap
│ │ │ │ │ │ │ ├── BadgeSlider.component.test.jsx.snap
│ │ │ │ │ │ │ ├── BadgeSliderForm.component.test.js.snap
│ │ │ │ │ │ │ └── BadgeSliderForm.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── BadgeText/
│ │ │ │ │ │ ├── BadgeText.component.jsx
│ │ │ │ │ │ ├── BadgeText.component.test.jsx
│ │ │ │ │ │ ├── BadgeTextForm.component.jsx
│ │ │ │ │ │ ├── BadgeTextForm.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── BadgeText.component.test.js.snap
│ │ │ │ │ │ │ ├── BadgeText.component.test.jsx.snap
│ │ │ │ │ │ │ ├── BadgeTextForm.component.test.js.snap
│ │ │ │ │ │ │ └── BadgeTextForm.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── BadgesGenerator/
│ │ │ │ │ ├── BadgesGenerator.component.jsx
│ │ │ │ │ ├── BadgesGenerator.component.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── BadgesGenerator.component.test.js.snap
│ │ │ │ │ │ └── BadgesGenerator.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── BasicSearch/
│ │ │ │ │ ├── BasicSearch.component.jsx
│ │ │ │ │ ├── BasicSearch.component.test.jsx
│ │ │ │ │ ├── BasicSearch.module.css
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── BasicSearch.component.test.js.snap
│ │ │ │ │ │ └── BasicSearch.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── FacetedManager/
│ │ │ │ │ ├── FacetedManager.component.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── FacetedSearch/
│ │ │ │ │ ├── FacetedSearch.component.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── FacetedToolbar/
│ │ │ │ │ ├── FacetedToolbar.component.jsx
│ │ │ │ │ ├── FacetedToolbar.module.css
│ │ │ │ │ └── index.js
│ │ │ │ ├── QuickSearchInput/
│ │ │ │ │ ├── QuickSearchInput.component.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── README.md
│ │ │ │ ├── context/
│ │ │ │ │ ├── badgeFaceted.context.js
│ │ │ │ │ └── facetedSearch.context.js
│ │ │ │ ├── facetedSearch.propTypes.js
│ │ │ │ ├── index.js
│ │ │ │ └── types/
│ │ │ │ ├── badgeDefinition.type.js
│ │ │ │ └── badgeDefinition.type.test.jsx
│ │ │ ├── constants.js
│ │ │ ├── controlled.js
│ │ │ ├── dictionary/
│ │ │ │ ├── badge.dictionary.js
│ │ │ │ ├── badge.dictionary.test.jsx
│ │ │ │ ├── helpers.dictionary.js
│ │ │ │ ├── helpers.dictionary.test.jsx
│ │ │ │ └── operator.dictionary.js
│ │ │ ├── helpers/
│ │ │ │ ├── usage.helpers.js
│ │ │ │ └── usage.helpers.test.jsx
│ │ │ ├── hooks/
│ │ │ │ ├── README.md
│ │ │ │ ├── badgeOverlayFlow.hook.js
│ │ │ │ └── facetedBadges.hook.js
│ │ │ ├── index.js
│ │ │ ├── stories/
│ │ │ │ ├── badge.stories.jsx
│ │ │ │ ├── badgesDefinitions.js
│ │ │ │ └── facetedSearch.stories.jsx
│ │ │ └── translate.js
│ │ ├── stylelint.config.mjs
│ │ ├── talend-i18n.json
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── faceted-search-query-client/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── eslint.config.mjs
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── index.js
│ │ │ ├── tql.js
│ │ │ └── tql.test.js
│ │ └── vitest.config.ts
│ ├── flow-designer/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── eslint.config.mjs
│ │ ├── licence.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── actions/
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── flow.actions.test.ts.snap
│ │ │ │ │ ├── link.actions.test.ts.snap
│ │ │ │ │ ├── node.actions.test.ts.snap
│ │ │ │ │ └── port.actions.test.ts.snap
│ │ │ │ ├── flow.actions.test.ts
│ │ │ │ ├── flow.actions.ts
│ │ │ │ ├── link.actions.test.ts
│ │ │ │ ├── link.actions.ts
│ │ │ │ ├── node.actions.test.ts
│ │ │ │ ├── node.actions.ts
│ │ │ │ ├── nodeType.actions.test.ts
│ │ │ │ ├── nodeType.actions.ts
│ │ │ │ ├── port.actions.test.ts
│ │ │ │ └── port.actions.ts
│ │ │ ├── api/
│ │ │ │ ├── data/
│ │ │ │ │ ├── data.test.ts
│ │ │ │ │ └── data.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── link/
│ │ │ │ │ ├── link.test.ts
│ │ │ │ │ └── link.ts
│ │ │ │ ├── node/
│ │ │ │ │ ├── node.test.ts
│ │ │ │ │ └── node.ts
│ │ │ │ ├── port/
│ │ │ │ │ ├── port.test.ts
│ │ │ │ │ └── port.ts
│ │ │ │ ├── position/
│ │ │ │ │ ├── position.test.ts
│ │ │ │ │ └── position.ts
│ │ │ │ ├── readme.md
│ │ │ │ ├── size/
│ │ │ │ │ ├── size.test.ts
│ │ │ │ │ └── size.ts
│ │ │ │ └── throwInDev.ts
│ │ │ ├── components/
│ │ │ │ ├── FlowDesigner.container.test.tsx
│ │ │ │ ├── FlowDesigner.container.tsx
│ │ │ │ ├── ZoomHandler.component.tsx
│ │ │ │ ├── ZoomHandler.test.tsx
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── FlowDesigner.container.test.tsx.snap
│ │ │ │ │ └── ZoomHandler.test.tsx.snap
│ │ │ │ ├── configuration/
│ │ │ │ │ ├── LinkType.component.ts
│ │ │ │ │ ├── NodeType.component.ts
│ │ │ │ │ ├── NodeType.test.tsx
│ │ │ │ │ └── PortType.component.ts
│ │ │ │ ├── grid/
│ │ │ │ │ ├── Grid.component.tsx
│ │ │ │ │ ├── Grid.test.tsx
│ │ │ │ │ └── __snapshots__/
│ │ │ │ │ └── Grid.test.tsx.snap
│ │ │ │ ├── link/
│ │ │ │ │ ├── AbstractLink.component.tsx
│ │ │ │ │ ├── LinkHandle.component.tsx
│ │ │ │ │ ├── LinkHandle.test.tsx
│ │ │ │ │ ├── LinksRenderer.component.tsx
│ │ │ │ │ ├── LinksRenderer.test.tsx
│ │ │ │ │ └── __snapshots__/
│ │ │ │ │ ├── LinkHandle.test.tsx.snap
│ │ │ │ │ └── LinksRenderer.test.tsx.snap
│ │ │ │ ├── node/
│ │ │ │ │ ├── AbstractNode.component.tsx
│ │ │ │ │ ├── AbstractNode.snapshot.test.tsx
│ │ │ │ │ ├── AbstractNode.test.tsx
│ │ │ │ │ ├── NodesRenderer.component.tsx
│ │ │ │ │ ├── NodesRenderer.test.tsx
│ │ │ │ │ └── __snapshots__/
│ │ │ │ │ ├── AbstractNode.snapshot.test.tsx.snap
│ │ │ │ │ └── NodesRenderer.test.tsx.snap
│ │ │ │ └── port/
│ │ │ │ ├── AbstractPort.component.tsx
│ │ │ │ ├── AbstractPort.test.tsx
│ │ │ │ ├── PortsRenderer.component.tsx
│ │ │ │ ├── PortsRenderer.test.tsx
│ │ │ │ └── __snapshots__/
│ │ │ │ ├── AbstractPort.test.tsx.snap
│ │ │ │ └── PortsRenderer.test.tsx.snap
│ │ │ ├── constants/
│ │ │ │ ├── flowdesigner.constants.ts
│ │ │ │ ├── flowdesigner.model.ts
│ │ │ │ └── flowdesigner.proptypes.ts
│ │ │ ├── customTypings/
│ │ │ │ └── index.d.ts
│ │ │ ├── index.ts
│ │ │ ├── reducers/
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── flow.reducer.test.ts.snap
│ │ │ │ │ ├── link.reducer.test.ts.snap
│ │ │ │ │ ├── node.reducer.test.ts.snap
│ │ │ │ │ └── port.reducer.test.ts.snap
│ │ │ │ ├── flow.reducer.test.ts
│ │ │ │ ├── flow.reducer.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── link.reducer.test.ts
│ │ │ │ ├── link.reducer.ts
│ │ │ │ ├── node.reducer.test.ts
│ │ │ │ ├── node.reducer.ts
│ │ │ │ ├── nodeType.reducer.ts
│ │ │ │ ├── port.reducer.test.ts
│ │ │ │ └── port.reducer.ts
│ │ │ └── selectors/
│ │ │ ├── __snapshots__/
│ │ │ │ └── nodeSelectors.test.ts.snap
│ │ │ ├── linkSelectors.ts
│ │ │ ├── nodeSelectors.test.ts
│ │ │ ├── nodeSelectors.ts
│ │ │ ├── portSelectors.test.ts
│ │ │ └── portSelectors.ts
│ │ ├── test/
│ │ │ ├── fileMock.js
│ │ │ ├── styleMock.js
│ │ │ └── test-setup.js
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── forms/
│ │ ├── .babelrc.json
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── .sass-lint.yml
│ │ ├── .storybook/
│ │ │ └── preview.js
│ │ ├── 6.0-BreakingChanges.md
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── __mocks__/
│ │ │ ├── data.jsx
│ │ │ └── react-virtualized.js
│ │ ├── eslint.config.mjs
│ │ ├── i18next-scanner.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── FormSkeleton.module.css
│ │ │ ├── FormSkeleton.test.tsx
│ │ │ ├── FormSkeleton.tsx
│ │ │ ├── FormSwitcher.test.tsx
│ │ │ ├── FormSwitcher.tsx
│ │ │ ├── UIForm/
│ │ │ │ ├── FormTemplate/
│ │ │ │ │ ├── DefaultFormTemplate.component.jsx
│ │ │ │ │ ├── TextModeFormTemplate.component.jsx
│ │ │ │ │ └── index.js
│ │ │ │ ├── Message/
│ │ │ │ │ ├── Message.component.jsx
│ │ │ │ │ ├── Message.component.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── Message.component.test.js.snap
│ │ │ │ │ │ └── Message.component.test.jsx.snap
│ │ │ │ │ ├── generateId.js
│ │ │ │ │ ├── generateId.test.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── README.md
│ │ │ │ ├── UIForm.component.jsx
│ │ │ │ ├── UIForm.container.jsx
│ │ │ │ ├── UIForm.container.test.jsx
│ │ │ │ ├── UIForm.module.css
│ │ │ │ ├── Widget/
│ │ │ │ │ ├── Widget.component.jsx
│ │ │ │ │ ├── Widget.component.module.css
│ │ │ │ │ ├── Widget.component.test.jsx
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ └── Widget.component.test.jsx.snap
│ │ │ │ │ └── index.js
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── ordering.json
│ │ │ │ │ ├── simple-merged.json
│ │ │ │ │ ├── simple.json
│ │ │ │ │ └── widgets.json
│ │ │ │ ├── context.js
│ │ │ │ ├── customFormats.js
│ │ │ │ ├── customFormats.test.js
│ │ │ │ ├── doc/
│ │ │ │ │ ├── conditional-rendering.md
│ │ │ │ │ ├── display-mode.md
│ │ │ │ │ ├── how-to-use.md
│ │ │ │ │ ├── principles.md
│ │ │ │ │ ├── triggers.md
│ │ │ │ │ ├── validation.md
│ │ │ │ │ └── widgets.md
│ │ │ │ ├── fields/
│ │ │ │ │ ├── Button/
│ │ │ │ │ │ ├── Button.component.jsx
│ │ │ │ │ │ ├── Button.component.test.jsx
│ │ │ │ │ │ ├── Buttons.component.jsx
│ │ │ │ │ │ ├── Buttons.component.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── SingleButton.component.jsx
│ │ │ │ │ │ ├── SingleButton.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Button.component.test.js.snap
│ │ │ │ │ │ │ ├── Button.component.test.jsx.snap
│ │ │ │ │ │ │ ├── Buttons.component.test.js.snap
│ │ │ │ │ │ │ ├── Buttons.component.test.jsx.snap
│ │ │ │ │ │ │ ├── SingleButton.component.test.js.snap
│ │ │ │ │ │ │ └── SingleButton.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── CheckBox/
│ │ │ │ │ │ ├── CheckBox.component.jsx
│ │ │ │ │ │ ├── CheckBox.test.jsx
│ │ │ │ │ │ ├── CheckBoxes.component.jsx
│ │ │ │ │ │ ├── CheckBoxes.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── SimpleCheckBox.component.jsx
│ │ │ │ │ │ ├── SimpleCheckBox.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── CheckBox.test.js.snap
│ │ │ │ │ │ │ ├── CheckBox.test.jsx.snap
│ │ │ │ │ │ │ ├── CheckBoxes.test.js.snap
│ │ │ │ │ │ │ ├── CheckBoxes.test.jsx.snap
│ │ │ │ │ │ │ ├── SimpleCheckBox.test.js.snap
│ │ │ │ │ │ │ └── SimpleCheckBox.test.jsx.snap
│ │ │ │ │ │ ├── displayMode/
│ │ │ │ │ │ │ ├── TextMode.component.jsx
│ │ │ │ │ │ │ ├── TextMode.test.jsx
│ │ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ │ ├── TextMode.test.js.snap
│ │ │ │ │ │ │ └── TextMode.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Code/
│ │ │ │ │ │ ├── Code.component.test.tsx
│ │ │ │ │ │ ├── Code.component.tsx
│ │ │ │ │ │ ├── CodeSkeleton.component.tsx
│ │ │ │ │ │ ├── CodeSkeleton.module.css
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── displayMode/
│ │ │ │ │ │ │ ├── TextMode.component.test.tsx
│ │ │ │ │ │ │ └── TextMode.component.tsx
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── Comparator/
│ │ │ │ │ │ ├── Comparator.component.jsx
│ │ │ │ │ │ ├── Comparator.component.test.jsx
│ │ │ │ │ │ ├── Comparator.module.css
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Comparator.component.test.js.snap
│ │ │ │ │ │ │ └── Comparator.component.test.jsx.snap
│ │ │ │ │ │ ├── displayMode/
│ │ │ │ │ │ │ ├── TextMode.component.jsx
│ │ │ │ │ │ │ ├── TextMode.test.jsx
│ │ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ │ ├── TextMode.test.js.snap
│ │ │ │ │ │ │ └── TextMode.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Datalist/
│ │ │ │ │ │ ├── Datalist.component.jsx
│ │ │ │ │ │ ├── Datalist.component.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Datalist.component.test.js.snap
│ │ │ │ │ │ │ └── Datalist.component.test.jsx.snap
│ │ │ │ │ │ ├── constants.js
│ │ │ │ │ │ ├── displayMode/
│ │ │ │ │ │ │ ├── TextMode.component.jsx
│ │ │ │ │ │ │ ├── TextMode.component.test.jsx
│ │ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ │ ├── TextMode.component.test.js.snap
│ │ │ │ │ │ │ └── TextMode.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Date/
│ │ │ │ │ │ ├── Date.component.jsx
│ │ │ │ │ │ ├── Date.component.test.jsx
│ │ │ │ │ │ ├── Date.utils.js
│ │ │ │ │ │ ├── Date.utils.test.js
│ │ │ │ │ │ ├── DateTime.component.jsx
│ │ │ │ │ │ ├── DateTime.component.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── Time.component.jsx
│ │ │ │ │ │ ├── Time.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Date.component.test.js.snap
│ │ │ │ │ │ │ ├── Date.component.test.jsx.snap
│ │ │ │ │ │ │ ├── DateTime.component.test.js.snap
│ │ │ │ │ │ │ ├── DateTime.component.test.jsx.snap
│ │ │ │ │ │ │ ├── Time.component.test.js.snap
│ │ │ │ │ │ │ └── Time.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Enumeration/
│ │ │ │ │ │ ├── EnumerationWidget.jsx
│ │ │ │ │ │ ├── EnumerationWidget.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── utils/
│ │ │ │ │ │ ├── utils.js
│ │ │ │ │ │ └── utils.test.js
│ │ │ │ │ ├── FieldTemplate/
│ │ │ │ │ │ ├── FieldTemplate.component.jsx
│ │ │ │ │ │ ├── FieldTemplate.component.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── FieldTemplate.component.test.js.snap
│ │ │ │ │ │ │ └── FieldTemplate.component.test.jsx.snap
│ │ │ │ │ │ ├── displayMode/
│ │ │ │ │ │ │ ├── TextMode.component.jsx
│ │ │ │ │ │ │ ├── TextMode.component.test.jsx
│ │ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ │ ├── TextMode.component.test.js.snap
│ │ │ │ │ │ │ └── TextMode.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── File/
│ │ │ │ │ │ ├── File.component.jsx
│ │ │ │ │ │ ├── File.component.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── File.component.test.js.snap
│ │ │ │ │ │ │ └── File.component.test.jsx.snap
│ │ │ │ │ │ ├── displayMode/
│ │ │ │ │ │ │ ├── TextMode.component.jsx
│ │ │ │ │ │ │ ├── TextMode.component.test.jsx
│ │ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ │ ├── TextMode.component.test.js.snap
│ │ │ │ │ │ │ └── TextMode.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── KeyValue/
│ │ │ │ │ │ ├── KeyValue.component.jsx
│ │ │ │ │ │ ├── KeyValue.component.test.jsx
│ │ │ │ │ │ ├── KeyValue.module.css
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── KeyValue.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── ListView/
│ │ │ │ │ │ ├── ListView.component.jsx
│ │ │ │ │ │ ├── ListView.component.test.jsx
│ │ │ │ │ │ ├── ListView.utils.js
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── MultiSelectTag/
│ │ │ │ │ │ ├── MultiSelectTag.component.jsx
│ │ │ │ │ │ ├── MultiSelectTag.component.test.jsx
│ │ │ │ │ │ ├── MultiSelectTag.module.css
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── displayMode/
│ │ │ │ │ │ │ ├── TextMode.component.jsx
│ │ │ │ │ │ │ └── TextMode.module.css
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── NestedListView/
│ │ │ │ │ │ ├── NestedListView.component.jsx
│ │ │ │ │ │ ├── NestedListView.module.css
│ │ │ │ │ │ ├── NestedListView.test.jsx
│ │ │ │ │ │ ├── NestedListView.utils.js
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── RadioOrSelect/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── RadioOrSelect.component.jsx
│ │ │ │ │ │ ├── RadioOrSelect.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── RadioOrSelect.component.test.js.snap
│ │ │ │ │ │ │ └── RadioOrSelect.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Radios/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── Radios.component.jsx
│ │ │ │ │ │ ├── Radios.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Radios.component.test.js.snap
│ │ │ │ │ │ │ └── Radios.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── ResourcePicker/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── ResourcePicker.component.jsx
│ │ │ │ │ │ ├── ResourcePicker.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ └── ResourcePicker.component.test.jsx.snap
│ │ │ │ │ │ ├── constants.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Select/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── Select.component.jsx
│ │ │ │ │ │ ├── Select.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Select.component.test.js.snap
│ │ │ │ │ │ │ └── Select.component.test.jsx.snap
│ │ │ │ │ │ ├── displayMode/
│ │ │ │ │ │ │ ├── TextMode.component.jsx
│ │ │ │ │ │ │ ├── TextMode.component.test.jsx
│ │ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ │ ├── TextMode.component.test.js.snap
│ │ │ │ │ │ │ └── TextMode.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Text/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── Text.component.jsx
│ │ │ │ │ │ ├── Text.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Text.component.test.js.snap
│ │ │ │ │ │ │ └── Text.component.test.jsx.snap
│ │ │ │ │ │ ├── displayMode/
│ │ │ │ │ │ │ ├── TextMode.component.jsx
│ │ │ │ │ │ │ ├── TextMode.component.test.jsx
│ │ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ │ ├── TextMode.component.test.js.snap
│ │ │ │ │ │ │ └── TextMode.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── TextArea/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── TextArea.component.jsx
│ │ │ │ │ │ ├── TextArea.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── TextArea.component.test.js.snap
│ │ │ │ │ │ │ └── TextArea.component.test.jsx.snap
│ │ │ │ │ │ ├── displayMode/
│ │ │ │ │ │ │ ├── TextMode.component.jsx
│ │ │ │ │ │ │ ├── TextMode.component.test.jsx
│ │ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ │ ├── TextMode.component.test.js.snap
│ │ │ │ │ │ │ └── TextMode.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── TimezoneList/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── TimezoneList.component.jsx
│ │ │ │ │ │ ├── TimezoneList.component.test.jsx
│ │ │ │ │ │ ├── TimezoneList.utils.js
│ │ │ │ │ │ ├── TimezoneList.utils.test.js
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── TimezoneList.component.test.js.snap
│ │ │ │ │ │ │ └── TimezoneList.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Toggle/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── Toggle.component.jsx
│ │ │ │ │ │ ├── Toggle.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Toggle.component.test.js.snap
│ │ │ │ │ │ │ └── Toggle.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── fieldsets/
│ │ │ │ │ ├── Array/
│ │ │ │ │ │ ├── Array.component.jsx
│ │ │ │ │ │ ├── Array.component.test.jsx
│ │ │ │ │ │ ├── ArrayItem.component.jsx
│ │ │ │ │ │ ├── ArrayItem.component.test.jsx
│ │ │ │ │ │ ├── ArrayItem.module.css
│ │ │ │ │ │ ├── DefaultArrayTemplate.component.jsx
│ │ │ │ │ │ ├── DefaultArrayTemplate.component.test.jsx
│ │ │ │ │ │ ├── DefaultArrayTemplate.module.css
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Array.component.test.js.snap
│ │ │ │ │ │ │ ├── Array.component.test.jsx.snap
│ │ │ │ │ │ │ ├── ArrayItem.component.test.js.snap
│ │ │ │ │ │ │ ├── ArrayItem.component.test.jsx.snap
│ │ │ │ │ │ │ ├── DefaultArrayTemplate.component.test.js.snap
│ │ │ │ │ │ │ └── DefaultArrayTemplate.component.test.jsx.snap
│ │ │ │ │ │ ├── displayMode/
│ │ │ │ │ │ │ ├── TextModeArrayTemplate.component.jsx
│ │ │ │ │ │ │ ├── TextModeArrayTemplate.component.test.jsx
│ │ │ │ │ │ │ ├── TextModeArrayTemplate.module.css
│ │ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ │ ├── TextModeArrayTemplate.component.test.js.snap
│ │ │ │ │ │ │ └── TextModeArrayTemplate.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── CollapsibleFieldset/
│ │ │ │ │ │ ├── CollapsibleFieldset.component.jsx
│ │ │ │ │ │ ├── CollapsibleFieldset.component.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── CollapsibleFieldset.component.test.js.snap
│ │ │ │ │ │ │ └── CollapsibleFieldset.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Columns/
│ │ │ │ │ │ ├── Columns.component.jsx
│ │ │ │ │ │ ├── Columns.component.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Columns.component.test.js.snap
│ │ │ │ │ │ │ └── Columns.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Fieldset/
│ │ │ │ │ │ ├── Fieldset.component.jsx
│ │ │ │ │ │ ├── Fieldset.component.test.jsx
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Fieldset.component.test.js.snap
│ │ │ │ │ │ │ └── Fieldset.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── Tabs/
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── Tabs.component.jsx
│ │ │ │ │ │ ├── Tabs.component.test.jsx
│ │ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ │ ├── Tabs.component.test.js.snap
│ │ │ │ │ │ │ └── Tabs.component.test.jsx.snap
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── index.js
│ │ │ │ ├── index.test.js
│ │ │ │ ├── lang.js
│ │ │ │ ├── merge.js
│ │ │ │ ├── merge.test.js
│ │ │ │ ├── trigger/
│ │ │ │ │ └── index.js
│ │ │ │ └── utils/
│ │ │ │ ├── array.js
│ │ │ │ ├── array.test.js
│ │ │ │ ├── condition.js
│ │ │ │ ├── condition.test.js
│ │ │ │ ├── errors.js
│ │ │ │ ├── errors.test.js
│ │ │ │ ├── index.js
│ │ │ │ ├── labels.jsx
│ │ │ │ ├── labels.module.css
│ │ │ │ ├── propTypes.js
│ │ │ │ ├── properties.js
│ │ │ │ ├── properties.test.js
│ │ │ │ ├── templates.js
│ │ │ │ ├── triggers.js
│ │ │ │ ├── validation.js
│ │ │ │ ├── validation.test.js
│ │ │ │ └── widgets.js
│ │ │ ├── constants.ts
│ │ │ ├── declaration.d.ts
│ │ │ ├── index.ts
│ │ │ ├── rhf/
│ │ │ │ ├── fields/
│ │ │ │ │ ├── Input/
│ │ │ │ │ │ ├── Input.stories.jsx
│ │ │ │ │ │ ├── Input.test.jsx
│ │
================================================
FILE CONTENTS
================================================
================================================
FILE: .changeset/README.md
================================================
# Changesets
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
================================================
FILE: .changeset/config.json
================================================
{
"$schema": "https://unpkg.com/@changesets/config@1.6.0/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"access": "restricted",
"baseBranch": "master",
"updateInternalDependencies": "patch",
"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
"onlyUpdatePeerDependentsWhenOutOfRange": true
},
"ignore": []
}
================================================
FILE: .editorconfig
================================================
# http://editorconfig.org
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.js, *.jsx, *.css, *.scss]
indent_style = tab
# special rule for json expecially package.json wich npm reset to space for any modification
[*.json]
indent_style = space
indent_size = 2
================================================
FILE: .github/ISSUE_TEMPLATE/architecture_decision_record.md
================================================
---
name: Architecture Decision Record
about: Create an architecture decision record to capture an important architecture decision made along with its context and consequences.
title: ''
labels: 'architecture decision record'
assignees: ''
---
## Status
What is the status, such as proposed, accepted, rejected, deprecated, superseded, etc.?
## Context
How does it work today and why a decision is needed? If we've to tell to someone new.
## Problems
What is the issue that we're seeing that is motivating this decision or change?
## Solutions
What is the change that we're proposing and/or doing?
## Consequences
What becomes easier or more difficult to do because of this change?
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
**What is the problem this PR is trying to solve?**
**What is the chosen solution to this problem?**
**Please check if the PR fulfills these requirements**
- [ ] The PR have used `yarn changeset` to a request a release from the CI if wanted.
- [ ] The PR commit message follows our [guidelines](https://github.com/talend/tools/blob/master/tools-root-github/CONTRIBUTING.md)
- [ ] Tests for the changes have been added (for bug fixes / features) And [non reg](./screenshots.md) done before need review
- [ ] Docs have been added / updated (for bug fixes / features)
- [ ] Related design / discussions / pages (not in jira), if any, are all linked or available in the PR
<!-- You can add more checkboxes here -->
**[ ] This PR introduces a breaking change**
<!-- if the PR introduces a breaking change, add the description here. So when you merge this PR, add this description into the [breaking change wiki](https://github.com/Talend/ui/wiki/BREAKING-CHANGE) in the next version -->
<!-- **Original Template** -->
<!-- https://github.com/Talend/tools/blob/master/tools-root-github/.github/PULL_REQUEST_TEMPLATE.md -->
================================================
FILE: .github/actions/lint-merge-report/action.yml
================================================
name: 'Lint merge report'
description: 'Merge eslint and stylelint reports filtered by git diff'
author: 'Talend'
inputs:
base-branch:
description: 'Base branch to compare diff against'
required: true
head-branch:
description: 'Head branch (PR branch)'
required: true
runs:
using: 'composite'
steps:
- name: Merge lint reports
shell: bash
run: node $GITHUB_ACTION_PATH/merge-lint-reports.mjs ${{ inputs.base-branch }} ${{ inputs.head-branch }}
================================================
FILE: .github/actions/lint-merge-report/merge-lint-reports.mjs
================================================
#!/usr/bin/env node
/* eslint-disable no-console */
import { spawn } from 'child_process';
import fs from 'fs';
import path from 'path';
const [baseBranch, headBranch] = process.argv.slice(2);
if (!baseBranch || !headBranch) {
console.error('Usage: merge-lint-reports.mjs <base-branch> <head-branch>');
process.exit(1);
}
const reports = ['eslint-report.json', 'stylelint-report.json'];
function getPackageDirs() {
const configPath = path.join(process.cwd(), 'talend-scripts.json');
if (fs.existsSync(configPath)) {
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
return config?.lintMergeReport?.packageDirs ?? [];
}
return [];
}
function getPackages(packageDirs) {
return packageDirs.flatMap(dir =>
fs.readdirSync(dir).map(subDir => ({
name: subDir,
location: `${dir}/${subDir}`,
})),
);
}
function transform(item) {
if (item.source && !item.filePath) {
item.filePath = item.source;
delete item.source;
}
if (item.warnings && !item.messages) {
item.messages = item.warnings.map(w => ({
...w,
severity: 1,
message: w.text,
ruleId: w.rule,
}));
item.warningCount = item.warnings.length;
delete item.warning;
} else if (item.messages) {
item.messages = item.messages.map(w => ({ ...w, severity: 1 }));
item.warningCount += item.errorCount;
item.errorCount = 0;
}
return item;
}
function runGitDiff(base, head) {
return new Promise((resolve, reject) => {
const proc = spawn('git', ['diff', '--name-only', `origin/${base}`, `origin/${head}`]);
let stdout = '';
let stderr = '';
proc.stdout.on('data', data => {
stdout += data.toString();
});
proc.stderr.on('data', data => {
stderr += data.toString();
});
proc.on('close', code => {
if (code !== 0) {
reject(new Error(`git diff failed (exit ${code}): ${stderr}`));
} else {
resolve(
stdout
.split('\n')
.map(s => s.trim())
.filter(Boolean),
);
}
});
});
}
const packageDirs = getPackageDirs();
const packages = getPackages(packageDirs);
if (packages.length === 0) {
console.error('No packages found. Check lintMergeReport.packageDirs in talend-scripts.json');
process.exit(1);
}
const files = await runGitDiff(baseBranch, headBranch);
const onlyIfInDiff = lint => files.some(f => lint.filePath.endsWith(`/${f}`));
const buff = [];
for (const pkg of packages) {
for (const report of reports) {
const fpath = `${pkg.location}/${report}`;
if (fs.existsSync(fpath)) {
try {
const items = JSON.parse(fs.readFileSync(fpath, 'utf-8'));
buff.push(...items.map(transform).filter(onlyIfInDiff));
} catch (e) {
console.error(`Failed to read ${fpath}:`, e.message);
}
}
}
}
const target = path.join(process.cwd(), 'eslint-report.json');
console.log(`Merged ${buff.length} lint result(s) → ${target}`);
fs.writeFileSync(target, JSON.stringify(buff, null, 2));
================================================
FILE: .github/actions/setup-node/action.yml
================================================
name: 'Setup nodejs'
description: 'Setup nodejs'
author: 'Talend'
inputs:
NPM_TOKEN:
description: 'Token used for GitHub Packages auth (defaults to GITHUB_TOKEN)'
required: true
runs:
using: 'composite'
steps:
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.tool-versions'
# set up auth to read in from env.NODE_AUTH_TOKEN.
registry-url: 'https://npm.pkg.github.com'
scope: '@talend'
- name: Install yarn
shell: bash
run: npm i -g yarn
- name: Get yarn cache directory path
id: yarn-cache-dir-path
shell: bash
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
================================================
FILE: .github/copilot-instructions.md
================================================
# Talend/UI — AI Coding Instructions
## Repository Overview
This is **Talend/UI**, a Yarn workspaces monorepo containing shared front-end libraries for Talend products.
- **Workspaces**: `packages/*`, `tools/*`, `fork/*`
- **Stack**: React 18, TypeScript 5, Babel 7
- **Build tooling**: shared `@talend/scripts-*` packages (see `tools/`)
- **Versioning**: [Changesets](https://github.com/changesets/changesets) (`@changesets/cli`)
- **Package manager**: Yarn 1 (classic)
Run `yarn install` at the root. The `postinstall` script builds all libraries (`build:lib` + `build:lib:esm`).
---
## Code Style & Formatting
### Prettier
Config: `@talend/scripts-config-prettier` (see `tools/scripts-config-prettier/.prettierrc.js`).
| Setting | Value |
| ---------------- | ------------------ |
| Print width | 100 |
| Quotes | Single (`'`) |
| Trailing commas | All |
| Semicolons | Yes |
| Indentation | **Tabs** |
| Arrow parens | Avoid (`x => x`) |
| JSON / rc files | 2-space indent |
| SCSS files | 1000 print width |
Prettier runs automatically on commit via `lint-staged` on `*.{json,md,mdx,html,js,jsx,ts,tsx}`.
### EditorConfig
- LF line endings, UTF-8
- Trim trailing whitespace, insert final newline
- Tabs for `.js`, `.jsx`, `.css`, `.scss`
- 2-space indent for `.json`
### ESLint
Each package has an `.eslintrc.json` extending `@talend` (resolved from `@talend/eslint-config` → `tools/scripts-config-eslint`).
Key rules and extends:
- `eslint:recommended`, `airbnb-base`, `plugin:prettier/recommended`
- `plugin:react/recommended`, `plugin:react/jsx-runtime`
- `plugin:react-hooks/recommended` — `rules-of-hooks` is error, `exhaustive-deps` is warning
- `plugin:jsx-a11y/recommended`
- `plugin:testing-library/react`, `plugin:jest-dom/recommended`
- `plugin:storybook/recommended`
Important rules:
- **No `console.log`** — only `console.warn` and `console.error` allowed
- JSX only in `.jsx` / `.tsx` files (`react/jsx-filename-extension`)
- `@talend/import-depth` (error) — controls import depth into packages
- `import/prefer-default-export`: off — named exports are fine
- `react/jsx-props-no-spreading`: off — spread is allowed
- `react/require-default-props`: off
- `@typescript-eslint/no-explicit-any`: warning (not error) in `.ts`/`.tsx` files
- `import/no-extraneous-dependencies`: off in test and story files
For TypeScript projects, the config auto-detects `tsconfig.json` and adds `@typescript-eslint` with `airbnb-typescript`.
### Stylelint
Config: `stylelint-config-sass-guidelines` (see `tools/scripts-config-stylelint/.stylelintrc.js`).
- Tab indentation
- No `!important` (`declaration-no-important`)
- No `transition: all` — be specific about transitioned properties
- Max nesting depth: 5
- Lowercase hex colors, named colors where possible
- No unspaced `calc()` operators
---
## TypeScript
Base config: `@talend/scripts-config-typescript/tsconfig.json` (see `tools/scripts-config-typescript/`).
| Setting | Value |
| ---------------------------- | ---------- |
| `strict` | `true` |
| `target` | `ES2015` |
| `module` | `esnext` |
| `moduleResolution` | `bundler` |
| `jsx` | `react-jsx`|
| `declaration` | `true` |
| `sourceMap` | `true` |
| `isolatedModules` | `true` |
| `esModuleInterop` | `true` |
| `forceConsistentCasingInFileNames` | `true` |
| `skipLibCheck` | `true` |
Each package has a local `tsconfig.json` that extends this base:
```jsonc
{
"extends": "@talend/scripts-config-typescript/tsconfig.json",
"include": ["src/**/*"],
"compilerOptions": {
"rootDirs": ["src"]
}
}
```
---
## Component Architecture
### Closed API Pattern (Design System)
Design system components (`packages/design-system`) use **closed APIs** — consumers cannot pass `className`, `style`, or `css` props. This ensures visual homogeneity across all products.
- **Atoms** (Button, Link, Input): single-tag elements, accept `string` children, typed to mirror their HTML counterparts. Props extend native HTML attributes minus `className`/`style`.
- **Molecules/Organisms** (Modal, Dropdown, Combobox): assembled components with rich props-based APIs. No composition — consumers hydrate via typed props.
- **Templates/Layouts**: may use composition (`children`) for page-level arrangement.
### Styling
- **CSS Modules** with `.module.css` files — this is the standard for all new code. No Styled Components.
- **Design tokens** via CSS custom properties from `@talend/design-tokens`. Use them for all colors, spacing, fonts, border-radius, shadows, transitions, etc.
- Use the `classnames` library for conditional class merging.
### Component Conventions
- Support `ForwardRef` — wrap components with `forwardRef` so consumers can pass refs.
- Match native HTML element types — component props should extend the underlying element's attributes (e.g., `HTMLButtonElement` for buttons).
- Export components from the package's root `index.ts`.
- Use `DataAttributes` type from `src/types` to support `data-*` attributes.
### `data-testid` Convention
All interactive elements must have `data-testid` attributes following this pattern:
```
[data-testid="<block_name>.<element_type>[?<element_index>].<?element_identifier>"]
```
| Segment | Required | Example |
| -------------------- | -------- | --------------------------- |
| `block_name` | Yes | `modal`, `inlineediting` |
| `element_type` | Yes | `button`, `input`, `textarea` |
| `element_index` | No | `[1]`, `[2]` |
| `element_identifier` | No | `close`, `reveal`, `edit` |
Examples:
- `modal.button.close`
- `password.button.reveal`
- `inlineediting.textarea`
- `switch.radio[1]`
Components should support a `data-testid` prefix prop so consumers can namespace their test IDs (e.g., `my-prefix.inlineediting.button.edit`).
---
## Component Folder Structure
```
ComponentName/
├── ComponentName.tsx # Main component implementation
├── ComponentName.test.tsx # Jest + RTL + jest-axe tests
├── ComponentName.module.css # CSS Modules styles (with design tokens)
├── index.ts # Clean public exports
├── Primitive/ # Internal building-block sub-components
│ ├── ComponentPrimitive.tsx
│ └── ComponentStyles.module.css
└── variations/ # Standalone variant sub-components
├── ComponentVariantA.tsx
└── ComponentVariantA.module.css
```
- Stories live under `src/stories/` in the design-system package, grouped by category (e.g., `clickable/`, `feedback/`).
- The `index.ts` barrel file re-exports everything consumers need. All components must be exported from the package root `src/index.ts`.
---
## Testing
### Framework & Setup
- **Vitest** as test runner
- **@testing-library/react** for component rendering and queries
- **jest-axe** for automated accessibility checks
- Timezone forced to `UTC` (`TZ=UTC`)
### Test File Conventions
- Name test files `*.test.tsx` or `*.test.ts`, co-located next to the source file.
- Test file regex: `(/__tests__/.*|src/).*\.test.(js|jsx|ts|tsx)$`
### Writing Tests
Import test globals explicitly:
```tsx
import { describe, it, expect } from '@jest/globals';
```
Use `@testing-library/react` for rendering:
```tsx
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
```
**Every component test must include an accessibility check:**
```tsx
import { axe } from 'jest-axe';
it('should render a11y html', async () => {
const { container } = render(
<main>
<MyComponent />
</main>,
);
expect(container.firstChild).toMatchSnapshot();
const results = await axe(document.body);
expect(results).toHaveNoViolations();
});
```
**Interaction tests** — use `userEvent.setup()`, not `fireEvent` for user interactions:
```tsx
it('should handle click', async () => {
const user = userEvent.setup();
render(<MyComponent onClick={jest.fn()} />);
await user.click(screen.getByRole('button'));
});
```
**Querying elements:**
- Prefer `screen.getByRole()`, `screen.getByText()`, `screen.getByLabelText()`
- Use `screen.getByTestId()` for `data-testid` attributes
- Use `screen.queryBy*` for asserting absence
**Mocking:**
- Use `jest.fn()` for callback mocks
- Mock `@talend/utils` when components generate IDs:
```tsx
jest.mock('@talend/utils', () => {
let i = 0;
return {
randomUUID: () => `mocked-uuid-${i++}`,
};
});
```
**Snapshots** — use `container.firstChild` with `toMatchSnapshot()`.
---
## Internationalization (i18n)
Uses `react-i18next` backed by `i18next`.
### Namespaces
Each package has its own i18n namespace:
| Package | Namespace |
| ------------ | ---------------- |
| components | `tui-components` |
| forms | `tui-forms` |
### Translation Keys
- Format: `COMPONENTNAME_KEY` — prefix by the parent component name
- Examples: `LIST_DISPLAY`, `HEADERBAR_GO_PORTAL`, `DELETE_RESOURCE_MESSAGE`
Always provide a `defaultValue`:
```tsx
t('SUFFIX_COMPONENT_KEY', { defaultValue: 'Displayed text' });
```
For markup in translations, use the `Trans` component:
```tsx
import { Trans } from 'react-i18next';
<Trans i18nKey="DELETE_RESOURCE_MESSAGE" parent="div">
Are you sure you want to remove the {{ resourceLabel }}
<strong>{{ resourceName }}</strong>?
</Trans>
```
Extract translation catalogs with `yarn extract-i18n` in the relevant package.
---
## Dependencies Management
Follow these rules when adding dependencies to a package's `package.json`:
### `devDependencies`
For build-only tools or packages that are also a `peerDependency`. No runtime impact.
Examples: `@talend/scripts-core`, `react` (when also in peerDeps), `@types/*` (unless exported types depend on them), `i18next-scanner`
### `dependencies`
For packages used at runtime that consumers don't need to configure themselves.
Examples: `@talend/design-tokens`, `classnames`, `lodash`, `date-fns`, `react-transition-group`
### `peerDependencies`
Only for packages the **consumer must import or configure** for the library to work.
Examples: `react`, `react-dom`, `i18next`, `react-i18next`, `@talend/icons`
### Type Dependencies
`@types/*` packages go in `devDependencies` unless the library's **exported types** depend on them — in that case, add to `dependencies`.
---
## Build & Module Formats
Libraries produce dual output:
| Format | Directory | Module |
| -------- | --------- | --------- |
| CommonJS | `lib/` | `main` |
| ESM | `lib-esm/`| `module` |
Build commands:
```bash
talend-scripts build # CJS → lib/
talend-scripts build --esm # ESM → lib-esm/
```
Package `exports` field should map both:
```json
{
"main": "lib/index.js",
"module": "lib-esm/index.js",
"exports": {
".": {
"import": "./lib-esm/index.js",
"require": "./lib/index.js"
}
}
}
```
Babel config (`@talend/scripts-config-babel`):
- `@babel/preset-env` (targets: last 1 year of browsers, no IE/Samsung/Opera mini)
- `@babel/preset-react` with `runtime: 'automatic'` (no need to import React)
- `@babel/preset-typescript` with `allExtensions: true, isTSX: true`
---
## Storybook
- Stories go in `.stories.tsx` files
- Type stories with `StoryFn` or `StoryObj` from `@storybook/react`
- Use `action()` from `storybook/actions` for callback args
- Documentation pages use `.stories.mdx` format
- Stories should cover all component variations, states, and edge cases
- Use design tokens and the design system's own components in stories
Example structure:
```tsx
import { StoryFn, StoryObj } from '@storybook/react';
import { action } from 'storybook/actions';
import { MyComponent } from '../../';
export default {
component: MyComponent,
title: 'Category/MyComponent',
} as StoryObj<typeof MyComponent>;
export const Default: StoryFn<typeof MyComponent> = args => (
<MyComponent {...args} />
);
```
---
## Versioning & Releases
- Uses **Changesets** for version management.
- Run `yarn changeset` to create a changeset file describing your change before opening a PR.
- Base branch: `master`
- Internal dependency updates use `patch` bumps.
- Release: `yarn release` (runs `pre-release` then `changeset publish`).
---
## PR Checklist
Before opening a pull request:
- [ ] Run `yarn changeset` if a release is needed
- [ ] Tests added for bug fixes and features
- [ ] Documentation updated if applicable
- [ ] Related design links or discussions included in the PR description
- [ ] Breaking changes documented (update the [breaking change wiki](https://github.com/Talend/ui/wiki/BREAKING-CHANGE))
---
## Git Hooks
- **Husky** pre-commit hook runs `lint-staged`
- `lint-staged` auto-formats all staged `*.{json,md,mdx,html,js,jsx,ts,tsx}` files with Prettier
- Code is automatically formatted on every commit — no manual formatting needed
---
## Key ADRs (Architecture Decision Records)
These documents in `docs/` define architectural choices. Read them before making structural changes:
| ADR | Summary |
| --- | ------- |
| `adr-css-modules.md` | CSS Modules replace Styled Components for all new styling |
| `adr-composition-vs-api.md` | Design system uses closed APIs over composition |
| `adr-data-test.md` | `data-testid` naming convention for QA automation |
| `adr-dependencies.md` | Guidelines for `dependencies` vs `peerDependencies` vs `devDependencies` |
| `adr-2024-04-add-support-to-esm.md` | ESM support strategy and dual CJS/ESM output |
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
ignore:
- dependency-name: "@storybook/*"
- dependency-name: "@talend/*"
- dependency-name: "@types/react*"
versions: ^17
- dependency-name: "react*"
versions: ^17
- dependency-name: "css-loader"
update-types: [ "version-update:semver-major" ]
- dependency-name: "sass-loader"
update-types: [ "version-update:semver-major" ]
- dependency-name: "style-loader"
update-types: [ "version-update:semver-major" ]
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
================================================
FILE: .github/workflows/changeset.yml
================================================
name: Changeset (Release)
on:
push:
branches:
- master
permissions:
contents: write
deployments: read
pull-requests: write
statuses: write
# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
release:
name: Release
environment: main
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
with:
# This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
fetch-depth: 0
persist-credentials: false
- name: Use Node.js
uses: ./.github/actions/setup-node
- name: has changeset file
id: changesetfiles
run: |
count=$(find .changeset -name "*.md" -type f | wc -l)
echo "count=$count" >> $GITHUB_OUTPUT
if [ $count -gt 0 ]; then
echo "Found $count md file(s)"
find .changeset -name "*.md" -type f
else
echo "No md files found"
fi
- name: Install and Build
if: steps.changesetfiles.outputs.count == 1
run: yarn --frozen-lockfile
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Install but do not build
if: steps.changesetfiles.outputs.count > 1
run: yarn --ignore-scripts --frozen-lockfile
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Create Release Pull Request or Publish to npm
id: changesets
uses: changesets/action@6a0a831ff30acef54f2c6aa1cbbc1096b066edaf #v1.7.0
with:
# This expects you to have a script called release which does a build for your packages and calls changeset publish
publish: yarn release
commit: "chore: prepare release"
title: "chore: prepare release"
env:
GITHUB_TOKEN: ${{ secrets.CHANGESET_GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
update-cdn-content:
needs: release
environment: main
runs-on: ubuntu-latest
steps:
- run: |
curl -XPOST -u "build-travis-ci:${{ secrets.CDN_CONTENT_PAT }}" -H "Accept: application/vnd.github.everest-preview+json" -H "Content-Type: application/json" https://api.github.com/repos/talend/cdn-content/actions/workflows/download-talend-ui.yml/dispatches --data '{"ref": "main"}'
================================================
FILE: .github/workflows/clean-demo.yml
================================================
name: Delete PR folder in gh-pages
on:
pull_request:
types: [closed]
permissions:
contents: write
pull-requests: write
statuses: write
checks: write
pages: write
jobs:
clean:
runs-on: ubuntu-latest
steps:
- name: Checkout demo branch
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
with:
path: demo
ref: gh-pages
- name: Delete PR folder
run: |
rm -rf ./demo/${{ github.event.number }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Commit demo for gh-pages
uses: actions-js/push@5a7cbd780d82c0c937b5977586e641b2fd94acc5 #v1.5
with:
directory: "./demo"
github_token: ${{ secrets.GITHUB_TOKEN }}
message: "doc: cleanup demo"
branch: gh-pages
================================================
FILE: .github/workflows/demo.yml
================================================
name: Demo CI
on:
push:
branches:
- master
permissions:
contents: write
pull-requests: write
statuses: write
checks: write
pages: write
# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
cancel-in-progress: true
jobs:
build:
name: Build and test
environment: pull_request_unsafe
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
- name: Use Node.js
uses: ./.github/actions/setup-node
- name: Install
working-directory: ./
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: yarn install --frozen-lockfile
- name: Build Demo
run: yarn test:demo
- name: Checkout demo branch
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
with:
path: demo
ref: gh-pages
- name: Add demo and commit it
# symlink creation : workaround to be able to use service worker on storybook both in local and via github pages deployment
run: |
echo "Prepare demo folder"
cd demo && git rm -rf --ignore-unmatch ./main && cd ..
mkdir -p ./demo/main
cp ./index.html ./demo/main/
mkdir ./demo/main/cmf
mkdir ./demo/main/containers
mkdir ./demo/main/design-system
mkdir ./demo/main/faceted-search
mkdir ./demo/main/theme
mkdir ./demo/main/storybook-one
cp -R packages/containers/storybook-static/* ./demo/main/containers
cp -R packages/design-docs/storybook-static/* ./demo/main/design-system
cp -R packages/faceted-search/storybook-static/* ./demo/main/faceted-search
cp -R packages/theme/dist/* ./demo/main/theme
cp -R packages/storybook-one/storybook-static/* ./demo/main/storybook-one
echo Size of demo:
du -d 1 -h ./demo/main
cd demo && git add .
- name: Commit demo for gh-pages
uses: actions-js/push@5a7cbd780d82c0c937b5977586e641b2fd94acc5 #v1.5
with:
directory: "./demo"
github_token: ${{ secrets.GITHUB_TOKEN }}
message: "doc: update demo"
branch: gh-pages
================================================
FILE: .github/workflows/dependencies.yml
================================================
name: Upgrade dependencies
on:
workflow_dispatch:
schedule:
- cron: "0 10 * * WED"
permissions:
contents: write
deployments: read
pull-requests: write
statuses: write
jobs:
upgrade:
name: Upgrade dependencies
environment: pull_request_unsafe
runs-on: ubuntu-latest
continue-on-error: true # we want the PR to popup even if sth goes wrong
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
- name: Use Node.js
uses: ./.github/actions/setup-node
- name: Upgrade dependencies
run: |
yarn --frozen-lockfile --ignore-scripts
yarn talend-upgrade-deps --ignore-scripts
yarn talend-upgrade-deps --scope=@talend --latest --ignore-scripts
yarn talend-upgrade-deps --latest --dry > dependencies-latest.txt
git add dependencies-latest.txt
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Create Pull Request
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 #v8.1.0
with:
reviewers: "@Talend/frontend-admins"
commit-message: "chore: upgrade dependencies"
title: "chore: upgrade dependencies"
body: "Upgrade dependencies using `talend-scripts upgrade:deps`"
branch: ci/chore/upgrade-dependencies
token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/icons.yml
================================================
name: Download icons from Figma
on:
repository_dispatch:
workflow_dispatch:
permissions:
contents: write
deployments: read
pull-requests: write
jobs:
download:
runs-on: ubuntu-latest
name: Download icons from Figma
environment: main
defaults:
run:
working-directory: ./packages/icons
steps:
- name: Checkout sources
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
with:
# Required when using a PAT for opening the PR
persist-credentials: false
- name: Use Node.js
uses: ./.github/actions/setup-node
- name: Download icons
run: npx @talend/figma-icons-downloader
env:
FIGMA_ACCESS_TOKEN: ${{ secrets.STORYBOOK_FIGMA_ACCESS_TOKEN }}
- name: Generate changeset & PR body
id: get-pr-body
run: |
cd ../..
git add ./packages/icons/src
while read STATUS ADDR
do
icon=`basename $ADDR .svg`
size=`basename $(dirname $ADDR)`
semver=`sed 's/A/minor/;s/D/major/;s/M/patch/' <<< $STATUS`
verb=`sed 's/A/added/;s/D/removed/;s/M/changed/' <<< $STATUS`
echo -e "---\n'@talend/icons': $semver\n---\n\n$verb icon \`$icon\` in size \`$size\`" > .changeset/$icon-$size-$semver.md
done < <(git diff --name-status HEAD ./packages/icons/src/icon/**/*.svg)
git add .changeset
body=$(git diff --name-only HEAD .changeset/*.md | xargs -L1 sed -n '5p')
body="${body//$'\n'/'%0A'}"
echo ::set-output name=body::$body
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 #v8.1.0
with:
commit-message: "chore(icons): from Figma"
title: "chore(icons): from Figma"
body: ${{ steps.get-pr-body.outputs.body }}
branch: ci/icons
token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/pr-demo.yml
================================================
name: PR Demo CI
on:
pull_request:
permissions:
contents: write
pull-requests: write
statuses: write
checks: write
pages: write
concurrency:
group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
cancel-in-progress: true
jobs:
build:
name: Build demo on PR
environment: pull_request_unsafe
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
- name: Use Node.js
uses: ./.github/actions/setup-node
- name: Install
working-directory: ./
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: yarn install --frozen-lockfile
- name: Build Demo
run: yarn test:demo
- name: Checkout demo branch
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
with:
path: demo
ref: gh-pages
- name: Add demo and commit it
# symlink creation : workaround to be able to use service worker on storybook both in local and via github pages deployment
run: |
echo "Prepare demo folder"
cd demo && git rm -rf --ignore-unmatch ${{ github.event.number }} && cd ..
mkdir -p ./demo/${{ github.event.number }}
cp ./index.html ./demo/${{ github.event.number }}/
mkdir ./demo/${{ github.event.number }}/cmf
mkdir ./demo/${{ github.event.number }}/containers
mkdir ./demo/${{ github.event.number }}/design-system
mkdir ./demo/${{ github.event.number }}/faceted-search
mkdir ./demo/${{ github.event.number }}/theme
mkdir ./demo/${{ github.event.number }}/storybook-one
cp -R packages/containers/storybook-static/* ./demo/${{ github.event.number }}/containers
cp -R packages/design-docs/storybook-static/* ./demo/${{ github.event.number }}/design-system
cp -R packages/faceted-search/storybook-static/* ./demo/${{ github.event.number }}/faceted-search
cp -R packages/theme/dist/* ./demo/${{ github.event.number }}/theme
cp -R packages/storybook-one/storybook-static/* ./demo/${{ github.event.number }}/storybook-one
echo Size of demo:
du -d 1 -h ./demo/${{ github.event.number }}
cd demo && git add .
- name: Commit demo for gh-pages
uses: actions-js/push@5a7cbd780d82c0c937b5977586e641b2fd94acc5 #v1.5
with:
directory: "./demo"
github_token: ${{ secrets.GITHUB_TOKEN }}
message: "doc: update demo from ${{ github.event.number }}"
branch: gh-pages
- name: Find Comment
uses: peter-evans/find-comment@v4
id: fc
with:
issue-number: ${{ github.event.number }}
body-includes: Storybook for this PR deployed on this
- name: Create comment
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 #v5.0.0
if: steps.fc.outputs.comment-id == ''
with:
issue-number: ${{ github.event.number }}
body: |
Storybook for this PR deployed on this [github page](https://talend.github.io/ui/${{ github.event.number }})
================================================
FILE: .github/workflows/pr-lint.yml
================================================
name: PR lint
on:
pull_request:
permissions:
contents: write
deployments: read
pull-requests: write # needed to annotate code
statuses: write
checks: write
# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
environment: pull_request_unsafe
name: Lint
steps:
- name: Checkout sources
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
with:
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal token
fetch-depth: 0 # otherwise, you will failed to push refs to dest repo
- name: Use Node.js
uses: ./.github/actions/setup-node
- name: Install
run: yarn install --frozen-lockfile --ignore-scripts
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: eslint + stylelint
continue-on-error: true
id: eslint
run: yarn lint
- name: Merge lint
uses: ./.github/actions/lint-merge-report
with:
base-branch: master
head-branch: ${{ github.head_ref }}
- name: Annotate Code Linting Results
uses: ataylorme/eslint-annotate-action@d57a1193d4c59cbfbf3f86c271f42612f9dbd9e9 #v3.0.0
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
report-json: ./eslint-report.json
================================================
FILE: .github/workflows/pr-test.yml
================================================
name: PR tests
on:
pull_request:
# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
permissions:
contents: read
deployments: read
pull-requests: write # needed to write comment
statuses: write
jobs:
build:
runs-on: ubuntu-latest
environment: pull_request_unsafe
name: Build and test
steps:
- name: Checkout sources
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
- name: Use Node.js
uses: ./.github/actions/setup-node
- name: Install
run: yarn install --frozen-lockfile
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Test
run: yarn test:cov
- name: Jest Coverage Comment
uses: MishaKav/jest-coverage-comment@c480abe47ef4f7bcd87bd8b5e6043fdfb1c4d270 #1.0.32
with:
multiple-files: |
assets-api, ./packages/assets-api/coverage/coverage-summary.json
cmf, ./packages/cmf/coverage/coverage-summary.json
cmf-cqrs, ./packages/cmf-cqrs/coverage/coverage-summary.json
cmf-router, ./packages/cmf-router/coverage/coverage-summary.json
components, ./packages/components/coverage/coverage-summary.json
containers, ./packages/containers/coverage/coverage-summary.json
dataviz, ./packages/dataviz/coverage/coverage-summary.json
design-system, ./packages/design-system/coverage/coverage-summary.json
faceted-search, ./packages/faceted-search/coverage/coverage-summary.json
flow-designer, ./packages/flow-designer/coverage/coverage-summary.json
forms, ./packages/forms/coverage/coverage-summary.json
http, ./packages/http/coverage/coverage-summary.json
sagas, ./packages/sagas/coverage/coverage-summary.json
stepper, ./packages/stepper/coverage/coverage-summary.json
utils, ./packages/utils/coverage/coverage-summary.json
- name: Check design-tokens
run: |
cd packages/design-tokens
node ./scripts/compare.js src/light/_index.scss src/dark/_index.scss
================================================
FILE: .github/workflows/pre-release.yml
================================================
name: pre-release
on:
pull_request:
types:
- labeled
jobs:
integration-publish:
if: github.event.pull_request != null && contains(github.event.pull_request.labels.*.name, 'deploy-npm')
permissions:
contents: read
pull-requests: write
packages: write
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- name: checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Use Node.js
uses: ./.github/actions/setup-node
- name: Install
run: yarn install --frozen-lockfile
- name: Pre-release talend/ui
id: version
run: |
# FIXME: trigger changeset change without commit
# generate a random small version
POST_VERSION_RANDOM=$(node -e "console.log(Math.floor(Math.random() * 10000))")
yarn changeset pre enter next-${POST_VERSION_RANDOM}
yarn changeset version
# echo diff to see version changes and save it to reuse it after
{
echo "VERSION_DIFF<<EOF"
git diff | grep -E 'next|name'
echo "EOF"
} >> $GITHUB_OUTPUT
yarn changeset publish --no-git-checks
- name: Comment on the PR with the package version
uses: actions-ecosystem/action-create-comment@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
body: |
🤖 Your package integration package is ready: `${{ steps.version.outputs.VERSION_DIFF }}`
- name: Remove deploy-npm label
if: always()
uses: actions-ecosystem/action-remove-labels@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
labels: deploy-npm
================================================
FILE: .github/workflows/visual-testing.yml
================================================
name: Visual testing
on:
workflow_dispatch:
pull_request:
# By default, a workflow only runs when a pull_request event's activity type is opened, synchronize, or reopened
types: [labeled, synchronize, opened, reopened, ready_for_review]
branches:
- master
push:
branches:
- master
# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
permissions:
contents: read
deployments: read
pull-requests: write
statuses: write
jobs:
build:
runs-on: ubuntu-latest
environment: pull_request_unsafe
if: ( github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'need visual approval') )
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
with:
fetch-depth: 0
- name: Use Node.js
uses: ./.github/actions/setup-node
- name: Install dependencies
run: yarn --frozen-lock
- name: Publish PR to DS Chromatic
if: github.ref != 'refs/heads/master'
# https://github.com/chromaui/chromatic-cli/issues/739
uses: chromaui/action@f191a0224b10e1a38b2091cefb7b7a2337009116 #v16.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
workingDir: packages/storybook-one
exitZeroOnChanges: true # Option to prevent the workflow from failing in PR
# Handle monorepos https://www.chromatic.com/docs/monorepos
forceRebuild: true
- name: Publish Master to DS Chromatic
if: github.ref == 'refs/heads/master'
# https://github.com/chromaui/chromatic-cli/issues/739
uses: chromaui/action@f191a0224b10e1a38b2091cefb7b7a2337009116 #v16.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
workingDir: packages/storybook-one
autoAcceptChanges: true # Option to accept any change for this baseline refresh
forceRebuild: true
================================================
FILE: .github/workflows/yarn-deduplicate.yml
================================================
name: yarn-deduplicate
on:
pull_request:
paths:
- "yarn.lock"
# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
permissions:
contents: write
deployments: read
pull-requests: write # needed to write comment in PR
jobs:
dedupe:
runs-on: ubuntu-latest
name: Deduplicate
environment: pull_request_unsafe
steps:
- name: Checkout sources
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
with:
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal token
fetch-depth: 0 # otherwise, you will failed to push refs to dest repo
- name: Use Node.js
uses: ./.github/actions/setup-node
- name: yarn-deduplicate
id: deduplicate
run: |
yarn install --frozen-lockfile --ignore-scripts
yarn yarn-deduplicate
echo "::set-output name=diff::$(git status --short yarn.lock)"
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Commit dedupe
if: steps.deduplicate.outputs.diff
uses: actions-js/push@5a7cbd780d82c0c937b5977586e641b2fd94acc5 #1.5
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
message: "chore: yarn-deduplicate"
branch: ${{ github.head_ref }}
================================================
FILE: .gitignore
================================================
/.static
# Log files #
*.log
# Mac OS index files #
.DS_Store
# Eclipse project files #
.project
.settings
bin/
# Intellij project files #
.idea/
*.ipr
*.iml
*.iws
out/
# JavaScript/NodeJS files #
.npm/
npm-debug.log
node_modules/
.node-gyp
coverage/
# Compilation output #
target/
*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
# Talend web apps build directory
build/
/packages/*/i18n/
tmp/
lib/
lib-esm/
storybook-static/
dist/
eslint-report.json
stylelint-report.json
i18n-extract
.test-cache
================================================
FILE: .husky/pre-commit
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npm run lint-staged
================================================
FILE: .nojekyll
================================================
================================================
FILE: .npmignore
================================================
# Logs
logs
*.log
npm-debug.log*
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage
# (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules
jspm_packages
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
test
npm-audit
================================================
FILE: .npmrc
================================================
@talend:registry=https://npm.pkg.github.com/
================================================
FILE: .prettierignore
================================================
.changeset
.github
.husky
.idea
.surge
build
dist
node_modules
__fixtures__
tools/scripts-config-storybook-lib/.storybook-templates/main.js
================================================
FILE: .prettierrc.js
================================================
module.exports = {
...require('@talend/scripts-config-prettier'),
};
================================================
FILE: .sass-lint.yml
================================================
options:
merge-default-rules: false
# formatter: html
# output-file: 'linters/sass-lint.html'
# File Options
files:
include: 'src/**/*.s+(a|c)ss'
ignore:
- 'src/app/css/vendors/libs/**/*.*'
# Rule Configuration
rules:
border-zero:
- 2
-
convention: 'none'
brace-style:
- 1
-
style: 'stroustrup'
allow-single-line: false
class-name-format:
- 2
-
allow-leading-underscore: false
convention: 'hyphenatedlowercase'
clean-import-paths:
- 2
-
leading-underscore: false
filename-extension: false
empty-args:
- 2
-
include: false
extends-before-declarations: 2
extends-before-mixins: 2
final-newline:
- 1
-
include: true
force-attribute-nesting: 0
force-element-nesting: 0
force-pseudo-nesting: 0
function-name-format:
- 2
-
allow-leading-underscore: false
convention: 'hyphenatedlowercase'
hex-length:
- 2
-
style: 'short'
hex-notation:
- 0
id-name-format:
- 2
-
allow-leading-underscore: false
convention: 'hyphenatedlowercase'
indentation:
- 1
-
size: tab
leading-zero:
- 2
-
include: true
mixin-name-format:
- 2
-
allow-leading-underscore: true
convention: 'hyphenatedlowercase'
mixins-before-declarations: 2
nesting-depth:
- 2
-
max-depth: 3
no-color-keywords: 0
no-color-literals: 0
no-css-comments: 0
no-debug: 2
no-duplicate-properties: 2
no-empty-rulesets: 2
no-extends: 0
no-ids: 0
no-important: 2
no-invalid-hex: 2
no-mergeable-selectors: 0
no-misspelled-properties: 2
no-qualifying-elements:
- 2
-
allow-element-with-attribute: true
allow-element-with-class: false
allow-element-with-id: false
no-trailing-zero: 1
no-transition-all: 2
no-url-protocols: 2
no-vendor-prefixes: 1
no-warn: 2
one-declaration-per-line: 2
placeholder-in-extend: 2
placeholder-name-format:
- 2
-
allow-leading-underscore: false
convention: 'hyphenatedlowercase'
property-sort-order: 0
property-units: 0
quotes:
- 2
-
style: 'single'
shorthand-values:
- 1
-
allowed-shorthands:
- 1
- 2
single-line-per-selector: 1
space-after-bang:
- 1
-
include: false
space-after-colon:
- 1
-
include: true
space-after-comma:
- 1
-
include: true
space-around-operator:
- 1
-
include: true
space-before-bang:
- 1
-
include: true
space-before-brace:
- 1
-
include: true
space-before-colon:
- 1
-
include: false
space-between-parens:
- 1
-
include: false
trailing-semicolon:
- 2
-
include: true
url-quotes: 2
variable-for-property: 0
variable-name-format:
- 2
-
allow-leading-underscore: false
convention: 'hyphenatedlowercase'
zero-unit:
- 1
-
include: false
================================================
FILE: .semgrepignore
================================================
# Items added to this file will be ignored by Semgrep.
#
# This file uses .gitignore syntax:
#
# To ignore a file anywhere it occurs in your project, enter a
# glob pattern here. E.g. "*.min.js".
#
# To ignore a directory anywhere it occurs in your project, add
# a trailing slash to the file name. E.g. "dist/".
#
# To ignore a file or directory only relative to the project root,
# include a slash anywhere except the last character. E.g.
# "/dist/", or "src/generated".
#
# Some parts of .gitignore syntax are not supported, and patterns
# using this syntax will be dropped from the ignore list:
# - Explicit "include syntax", e.g. "!kept/".
# - Multi-character expansion syntax, e.g. "*.py[cod]"
#
# To include ignore patterns from another file, start a line
# with ':include', followed by the path of the file. E.g.
# ":include path/to/other/ignore/file".
#
# To ignore a file with a literal ':' character, escape it with
# a backslash, e.g. "\:foo".
# Ignore git items
.gitignore
.git/
:include .gitignore
semgrep-core/tests/
# submodule, generated code
semgrep-core/tree-sitter-lang/
pfff/
semgrep/tests/e2e/targets/
semgrep/tests/performance/targets/
semgrep/tests/e2e/snapshots/
# rules being tested for performance
perf/rules/
perf/r2c-rules/
# END OF DEFAULT SEMGREPIGNORE FILE
# TALEND SEMGREPIGNORE
*.test.js
*.test.tsx
*.stories.js
================================================
FILE: .tool-versions
================================================
nodejs 24.14.0
yarn 1.22.22
================================================
FILE: .vscode/settings.json
================================================
{
"prettier.prettierPath": "./node_modules/prettier/index.cjs",
"eslint.workingDirectories": [
{
"pattern": "packages/**"
},
{
"pattern": "tools/**"
},
{
"pattern": "fork/**"
}
],
"typescript.validate.enable": true,
"javascript.validate.enable": true
}
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to the project
[Contribution guide](https://github.com/Talend/tools/blob/master/tools-root-github/CONTRIBUTING.md)
## Code style
[HTML code style](https://github.com/Talend/ui/wiki/HTML-coding-style)
[Javascript code style](https://github.com/Talend/ui/wiki/Javascript-coding-style)
[CSS code style](https://github.com/Talend/ui/wiki/CSS-coding-style)
================================================
FILE: I18n.md
================================================
# I18n
UI uses [react-i18n](https://react.i18next.com/) to make the components internationalizable. This is based on [i18next](https://www.i18next.com/).
The application defines the strategy how to get the translations.
### Namespaces
Each packages has their own namespace:
| Package | Namespace |
| ---------- | :------------: |
| components | tui-components |
| forms | tui-forms |
### Creating a i18n components
Each components who has to be internationalizable are exported by default with translate from 'react-i18next' with its namespace.
**The component can be used within an internationalized application or not. We import a default i18n configuration that will be ignored if one is provided in the context by react-i18next provider.**
```javascript
import React from 'react';
import { withTranslation } from 'react-i18next';
import { I18N_DOMAIN } from '../constants';
import '../translate';
const HelloWorld = ({ t }) => <div>{`Hi ${t('HELLO', { defaultValue: 'Hello world' })}`}</div>;
export default withTranslation(I18N_DOMAIN)(HelloWorld);
```
### Translate
In the framework, at each time that the `t` method is called, it is a default value that is displayed, if not translated explicitly by the app.
```javascript
t('SUFFIX_COMPONENT_KEY', { defaultValue: 'translated' });
```
The key has to be prefixed by the main current component to translate.
e.g:
LIST_DISPLAY
HEADERBAR_GO_PORTAL
### Specific translation cases
In some cases, you want to add some html markup or style to your translations. For this case, you can use Trans component
https://react.i18next.com/components/trans-component.html
```jsx
import { Trans } from 'react-i18next';
<Trans i18nKey="DELETE_RESOURCE_MESSAGE" parent="div">
Are you sure you want to remove the {{ resourceLabel: resourceInfo.resourceTypeLabel }}
<strong> {{ resourceName: resourceInfo.label }} </strong> ?
</Trans>;
```
For this case, the translation json value is :
`Are you sure you want to remove the <1>{{ resourceLabel }}</1> <2><1>{{ resourceName }}</1></2>?`
More infos in the react-i18next's documentation
## Use i18n with UI in your App
### Create an instance of i18n
`yarn add i18next`
```javascript
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
i18n.use(initReactI18next).init({
debug: false,
wait: true, // globally set to wait for loaded translations in translate hoc
});
export default i18n;
```
The UI framework have to be nested into a Provider to allow to translate the labels. The provider is responsible to pass the i18next instance down to all the translate hocs using react context.
Next, you need to nest the application in the I18nextProvider with the previous i18n created in order to your environnement:
#### Angular Provider with ng-react
Each components 'ng-react' will load his provider with a i18n given by the props. The components creates his react Provider with the i18n given.
```javascript
import React from 'react';
import translate from 'react-i18next';
import i18n from 'i18next';
const TranslatedApp = translate(I18N_DOMAIN, { i18n })(App);
const AppComponent = props => <TranslatedApp />;
angular
.module('app', ['react'])
.value('AppComponent', AppComponent)
.controller('appController', () => {
this.props = {
i18n,
};
});
<react-component name="AppComponent" props="$ctrl.props" />;
```
## Extract a catalog of the key in the framework
```bash
yarn extract-i18n
```
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
# UI
That repository was created in an effort to simplify the development of Talend's front-end stack.
## Goals
- Single code repository / Multiple packages
- Global (cross package) test and review tools
- Easy cross packages development
- Share and love open source.
## The stack
- [react-cmf](https://github.com/Talend/ui/tree/master/packages/cmf)
- [react-talend-containers](https://github.com/Talend/ui/tree/master/packages/containers)
- [react-talend-components](https://github.com/Talend/ui/tree/master/packages/components)
- [react-talend-forms](https://github.com/Talend/ui/tree/master/packages/forms)
- [talend-icons](https://github.com/Talend/ui/tree/master/packages/icons)
- [bootstrap-talend-theme](https://github.com/Talend/ui/tree/master/packages/theme)
## Tools (dev environment)
We have quick access from the root to the following npm scripts:
- postinstall (trigger build of every package)
- pre-release (trigger build of UMD of supported package)
- start (start the playground)
- test
- lint
The CI will ensure on each PR that test and lint are OK before you can merge your pull request. It will also provide you a demo so reviewers can play with your change and try to find impact of your PR on other packages.
## Versions and breaking changes
The stack is stable and we do our best to not break APIs.
To handle versions we rely on [**changeset**](https://github.com/atlassian/changesets/). So on each PR you will be able to request a release intent along your changes. It will fill automatically the changelog at release time. Do not forget to commit the file outputed by the changeset CLI.
## More
If you want to know more (release, versions, etc ...) please take a look on [the wiki](https://github.com/Talend/ui/wiki)
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Supported Versions
We use `changeset` to provide versioning for our packages with fixes, features and major release in case of breaking changes. The latest package is always the better one.
We also provide [talend-scripts upgrade:deps](./tools/upgrade-deps) scripts to make it easier to keep our packages and apps aligned and updated.
The script comes with options about security use cases, so please read the documentation first.
Distance to latest from npm is added on a [dependencies.txt](./dependencies.txt) file on each upgrade PR.
## Reporting a Vulnerability
For information on how to report a new security problem please see [here](https://www.talend.com/security/vulnerability-disclosure/).
Our existing security advisories are published [here](https://www.talend.com/security/incident-response/).
================================================
FILE: babel.config.js
================================================
// this file is needed by vscode
module.exports = {
extends: '@talend/scripts-config-babel',
};
================================================
FILE: dependencies-latest.txt
================================================
yarn run v1.22.22
$ /home/runner/work/ui/ui/node_modules/.bin/talend-upgrade-deps --latest --dry
check versions of /home/runner/work/ui/ui/package.json using latest
"@types/react": "^18.3.28" => "^19.2.14"
"@types/react-dom": "^18.3.7" => "^19.2.3"
"tar": ">=7.5.4" => "^7.5.13"
"husky": "^8.0.3" => "^9.1.7"
"lint-staged": "^15.5.2" => "^16.4.0"
"typescript": "^5.9.3" => "^6.0.2"
check versions of packages/a11y/package.json using latest
"@testing-library/react": "^14.3.1" => "^16.3.2"
"@types/react": "^18.3.28" => "^19.2.14"
"@types/react-dom": "^18.3.7" => "^19.2.3"
"date-fns": "^3.6.0" => "^4.1.0"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
check versions of packages/assets-api/package.json using latest
"@types/node": "^6.14.13" => "^25.5.0"
"read-pkg-up": "^7.0.1" => "^11.0.0"
check versions of packages/cmf-cqrs/package.json using latest
"immutable": "^3.8.3" => "^5.1.5"
"@testing-library/react": "^14.3.1" => "^16.3.2"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
check versions of packages/cmf-router/package.json using latest
"lodash": "^4.18.0" => "^4.17.21"
"react-redux": "^7.2.9" => "^9.2.0"
"react-router": "~6.3.0" => "^7.13.2"
"react-router-dom": "~6.3.0" => "^7.13.2"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
check versions of packages/cmf/package.json using latest
"commander": "^6.2.1" => "^14.0.3"
"immutable": "^3.8.3" => "^5.1.5"
"lodash": "^4.18.0" => "^4.17.21"
"nested-combine-reducers": "^1.2.2" => "^2.0.0"
"react-redux": "^7.2.9" => "^9.2.0"
"redux": "^4.2.1" => "^5.0.1"
"redux-thunk": "^2.4.2" => "^3.1.0"
"@vitejs/plugin-react": "^5.2.0" => "^6.0.1"
"@testing-library/react": "^14.3.1" => "^16.3.2"
"node-fetch": "^2.7.0" => "^3.3.2"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
check versions of packages/components/package.json using latest
"date-fns": "^3.6.0" => "^4.1.0"
"dom-helpers": "^3.4.0" => "^6.0.1"
"immutable": "^3.8.3" => "^5.1.5"
"lodash": "^4.18.0" => "^4.17.21"
"react-autowhatever": "10.2.0" => "^10.2.1"
"react-grid-layout": "^1.5.3" => "^2.2.3"
"react-is": "^18.3.1" => "^19.2.4"
"react-transition-group": "^2.9.0" => "^4.4.5"
"recharts": "^2.15.4" => "^3.8.1"
"styled-components": "^5.3.11" => "^6.3.12"
"warning": "^3.0.0" => "^4.0.3"
"@vitejs/plugin-react": "^5.2.0" => "^6.0.1"
"@testing-library/react": "^14.3.1" => "^16.3.2"
"@types/react": "^18.3.28" => "^19.2.14"
"@types/react-dom": "^18.3.7" => "^19.2.3"
"i18next": "^23.16.8" => "^26.0.3"
"jsdom": "^26.1.0" => "^29.0.1"
"react": "^18.3.1" => "^19.2.4"
"react-a11y": "^0.3.4" => "^1.1.0"
"react-dom": "^18.3.1" => "^19.2.4"
"react-i18next": "^13.5.0" => "^17.0.2"
"react-router-dom": "~6.3.0" => "^7.13.2"
"react-test-renderer": "^18.3.1" => "^19.2.4"
check versions of packages/containers/package.json using latest
"immutable": "^3.8.3" => "^5.1.5"
"lodash": "^4.18.0" => "^4.17.21"
"reselect": "^2.5.4" => "^5.1.1"
"@vitejs/plugin-react": "^5.2.0" => "^6.0.1"
"@testing-library/react": "^14.3.1" => "^16.3.2"
"i18next": "^23.16.8" => "^26.0.3"
"msw": "2.12.7" => "^2.12.14"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-i18next": "^13.5.0" => "^17.0.2"
"react-test-renderer": "^18.3.1" => "^19.2.4"
check versions of packages/dataviz/package.json using latest
"date-fns": "^3.6.0" => "^4.1.0"
"lodash": "^4.18.0" => "^4.17.21"
"recharts": "^2.15.4" => "^3.8.1"
"@testing-library/react": "^14.3.1" => "^16.3.2"
"@types/node": "^6.14.13" => "^25.5.0"
"@types/react": "^18.3.28" => "^19.2.14"
"@vitejs/plugin-react": "^5.2.0" => "^6.0.1"
"i18next": "^23.16.8" => "^26.0.3"
"jsdom": "^28.1.0" => "^29.0.1"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-i18next": "^13.5.0" => "^17.0.2"
check versions of packages/design-docs/package.json using latest
"algoliasearch": "^4.27.0" => "^5.50.0"
"pkg-dir": "^7.0.0" => "^9.0.0"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"@types/react": "^18.3.28" => "^19.2.14"
"i18next": "^23.16.8" => "^26.0.3"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-router-dom": "~6.3.0" => "^7.13.2"
check versions of packages/design-system/package.json using latest
"@floating-ui/react": "^0.26.28" => "^0.27.19"
"react-is": "^18.3.1" => "^19.2.4"
"react-transition-group": "^2.9.0" => "^4.4.5"
"@types/react": "^18.3.28" => "^19.2.14"
"@types/react-dom": "^18.3.7" => "^19.2.3"
"@types/react-is": "^18.3.1" => "^19.2.0"
"@types/react-transition-group": "^2.9.2" => "^4.4.12"
"@vitejs/plugin-react": "^5.2.0" => "^6.0.1"
"concurrently": "^8.2.2" => "^9.2.1"
"i18next": "^23.16.8" => "^26.0.3"
"jest-axe": "^8.0.0" => "^10.0.0"
"jsdom": "^26.1.0" => "^29.0.1"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-i18next": "^13.5.0" => "^17.0.2"
"react-router-dom": "~6.3.0" => "^7.13.2"
check versions of packages/design-tokens/package.json using latest
check versions of packages/faceted-search-query-client/package.json using latest
"lodash": "^4.18.0" => "^4.17.21"
check versions of packages/faceted-search/package.json using latest
"date-fns": "^3.6.0" => "^4.1.0"
"lodash": "^4.18.0" => "^4.17.21"
"@vitejs/plugin-react": "^5.2.0" => "^6.0.1"
"@testing-library/react": "^14.3.1" => "^16.3.2"
"i18next": "^23.16.8" => "^26.0.3"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-i18next": "^13.5.0" => "^17.0.2"
check versions of packages/flow-designer/package.json using latest
"@vitejs/plugin-react": "^5.2.0" => "^6.0.1"
"@testing-library/react": "^14.3.1" => "^16.3.2"
"@types/node": "^6.14.13" => "^25.5.0"
"@types/react": "^18.3.28" => "^19.2.14"
"@types/react-test-renderer": "^18.3.1" => "^19.1.0"
"i18next": "^23.16.8" => "^26.0.3"
"immutable": "^3.8.3" => "^5.1.5"
"lodash": "^4.18.0" => "^4.17.21"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-i18next": "^13.5.0" => "^17.0.2"
"react-redux": "^7.2.9" => "^9.2.0"
"react-test-renderer": "^18.3.1" => "^19.2.4"
"redux": "^4.2.1" => "^5.0.1"
"redux-thunk": "^2.4.2" => "^3.1.0"
"reselect": "^4.1.8" => "^5.1.1"
check versions of packages/forms/package.json using latest
"ace-builds": "1.10.1" => "^1.43.6"
"ajv": "^6.14.0" => "^8.18.0"
"lodash": "^4.18.0" => "^4.17.21"
"react-autowhatever": "10.2.0" => "^10.2.1"
"react-ace": "10.1.0" => "^14.0.1"
"react-jsonschema-form": "0.51.0" => "^1.8.1"
"@vitejs/plugin-react": "^5.2.0" => "^6.0.1"
"@testing-library/react": "^14.3.1" => "^16.3.2"
"i18next": "^23.16.8" => "^26.0.3"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-i18next": "^13.5.0" => "^17.0.2"
"react-test-renderer": "^18.3.1" => "^19.2.4"
check versions of packages/http/package.json using latest
"node-fetch": "^2.7.0" => "^3.3.2"
"react-dom": "^18.3.1" => "^19.2.4"
"react": "^18.3.1" => "^19.2.4"
check versions of packages/icons/package.json using latest
"@types/node": "^20.19.37" => "^25.5.0"
"mkdirp": "^1.0.4" => "^3.0.1"
"react": "^18.3.1" => "^19.2.4"
"svgo": "^3.3.3" => "^4.0.1"
"typescript": "^5.9.3" => "^6.0.2"
"vite": "^7.3.1" => "^8.0.3"
check versions of packages/local-libs-webpack-plugin/package.json using latest
check versions of packages/playground-vite/package.json using latest
"i18next": "^23.16.8" => "^26.0.3"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-i18next": "^13.5.0" => "^17.0.2"
"@vitejs/plugin-react": "^4.7.0" => "^6.0.1"
"i18next-http-backend": "^1.4.5" => "^3.0.4"
"vite": "^7.3.1" => "^8.0.3"
check versions of packages/playground/package.json using latest
"i18next": "^23.16.8" => "^26.0.3"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-i18next": "^13.5.0" => "^17.0.2"
check versions of packages/router-bridge/package.json using latest
"react": "^18.3.1" => "^19.2.4"
"react-router-dom": "~6.3.0" => "^7.13.2"
check versions of packages/sagas/package.json using latest
"immutable": "^3.8.3" => "^5.1.5"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
check versions of packages/stepper/package.json using latest
"lodash": "^4.18.0" => "^4.17.21"
"@vitejs/plugin-react": "^5.2.0" => "^6.0.1"
"i18next": "^23.16.8" => "^26.0.3"
"immutable": "^3.8.3" => "^5.1.5"
"jsdom": "^26.1.0" => "^29.0.1"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-i18next": "^13.5.0" => "^17.0.2"
"react-redux": "^7.2.9" => "^9.2.0"
"react-transition-group": "^2.9.0" => "^4.4.5"
check versions of packages/storybook-cmf/package.json using latest
"@vitejs/plugin-react": "^5.2.0" => "^6.0.1"
"@testing-library/react": "^14.3.1" => "^16.3.2"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-redux": "^7.2.9" => "^9.2.0"
check versions of packages/storybook-docs/package.json using latest
"algoliasearch": "^4.27.0" => "^5.50.0"
"react": "^18.3.1" => "^19.2.4"
"@figma/rest-api-spec": "^0.36.0" => "^0.37.0"
"@types/node": "^6.14.13" => "^25.5.0"
"@types/react": "^18.3.28" => "^19.2.14"
"@types/react-dom": "^18.3.7" => "^19.2.3"
"sass-loader": "^14.2.1" => "^16.0.7"
"webpack-cli": "^6.0.1" => "^7.0.2"
check versions of packages/storybook-one/package.json using latest
"lodash": "^4.18.0" => "^4.17.21"
"pkg-dir": "^7.0.0" => "^9.0.0"
"@types/react": "^18.3.28" => "^19.2.14"
"i18next": "^23.16.8" => "^26.0.3"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-router-dom": "~6.3.0" => "^7.13.2"
check versions of packages/theme/package.json using latest
"postcss-preset-env": "^7.8.3" => "^11.2.0"
"sass-loader": "^14.2.1" => "^16.0.7"
"style-loader": "^3.3.4" => "^4.0.0"
"webpack-cli": "^6.0.1" => "^7.0.2"
check versions of packages/utils/package.json using latest
"date-fns": "^3.6.0" => "^4.1.0"
"lodash": "^4.18.0" => "^4.17.21"
check versions of tools/babel-plugin-assets-api/package.json using latest
"read-pkg-up": "^7.0.1" => "^11.0.0"
"babel-plugin-tester": "^10.1.0" => "^12.0.0"
"@eslint/js": "^9.39.4" => "^10.0.1"
"globals": "^15.15.0" => "^17.4.0"
"react": "^18.3.1" => "^19.2.4"
check versions of tools/babel-plugin-import-d3/package.json using latest
"babel-plugin-tester": "^10.1.0" => "^12.0.0"
check versions of tools/babel-plugin-import-from-index/package.json using latest
"babel-plugin-tester": "^10.1.0" => "^12.0.0"
"@eslint/js": "^9.39.4" => "^10.0.1"
"globals": "^15.15.0" => "^17.4.0"
check versions of tools/babel-plugin-import-from-lib/package.json using latest
"babel-plugin-tester": "^10.1.0" => "^12.0.0"
check versions of tools/cmf-webpack-plugin/package.json using latest
"lodash": "^4.18.0" => "^4.17.21"
check versions of tools/eslint-plugin/package.json using latest
check versions of tools/scripts-cmf/package.json using latest
"commander": "^6.2.1" => "^14.0.3"
"deepmerge": "^1.5.2" => "^4.3.1"
"i18next": "^23.16.8" => "^26.0.3"
"lodash": "^4.18.0" => "^4.17.21"
"mkdirp": "^1.0.4" => "^3.0.1"
check versions of tools/scripts-config-babel/package.json using latest
"babel-core": "^7.0.0-bridge.0" => "^6.26.3"
"@eslint/js": "^9.39.4" => "^10.0.1"
"globals": "^15.15.0" => "^17.4.0"
check versions of tools/scripts-config-cdn/package.json using latest
"read-pkg-up": "^7.0.1" => "^11.0.0"
"@eslint/js": "^9.39.4" => "^10.0.1"
"globals": "^15.15.0" => "^17.4.0"
check versions of tools/scripts-config-eslint/package.json using latest
"@eslint/js": "^9.39.4" => "^10.0.1"
"@testing-library/dom": "^9.3.4" => "^10.4.1"
"globals": "^15.15.0" => "^17.4.0"
check versions of tools/scripts-config-prettier/package.json using latest
"@trivago/prettier-plugin-sort-imports": "^4.3.0" => "^6.0.2"
check versions of tools/scripts-config-react-webpack/package.json using latest
"@sentry/webpack-plugin": "^1.21.0" => "^5.1.1"
"@welldone-software/why-did-you-render": "^7.0.1" => "^10.0.1"
"babel-loader": "^9.2.1" => "^10.1.1"
"postcss-safe-parser": "^6.0.0" => "^7.0.1"
"regenerator-runtime": "^0.13.11" => "^0.14.1"
"sass-loader": "^14.2.1" => "^16.0.7"
"source-map-loader": "^4.0.2" => "^5.0.0"
"style-loader": "^3.3.4" => "^4.0.0"
"webpack-bundle-analyzer": "^4.10.2" => "^5.3.0"
"webpack-cli": "^6.0.1" => "^7.0.2"
check versions of tools/scripts-config-storybook-lib/package.json using latest
"@vitejs/plugin-react": "^5.2.0" => "^6.0.1"
"i18next": "^23.16.8" => "^26.0.3"
"i18next-http-backend": "^1.4.5" => "^3.0.4"
"vite": "^7.3.1" => "^8.0.3"
"lodash": "^4.18.0" => "^4.17.21"
"msw": "2.12.7" => "^2.12.14"
"react-i18next": "^13.5.0" => "^17.0.2"
"@types/react": "^18.3.28" => "^19.2.14"
"typescript": "^5.9.3" => "^6.0.2"
check versions of tools/scripts-config-stylelint/package.json using latest
check versions of tools/scripts-config-typescript/package.json using latest
check versions of tools/scripts-core/package.json using latest
"babel-loader": "^9.2.1" => "^10.1.1"
"fs-extra": "^10.1.0" => "^11.3.4"
"lodash": "^4.18.0" => "^4.17.21"
"typescript": "^5.9.3" => "^6.0.2"
"webpack-merge": "^5.10.0" => "^6.0.1"
"yargs": "^15.4.1" => "^18.0.0"
check versions of tools/scripts-locales/package.json using latest
check versions of tools/scripts-publish-local/package.json using latest
check versions of tools/scripts-utils/package.json using latest
"fs-extra": "^10.1.0" => "^11.3.4"
"glob": "^11.1.0" => "^13.0.6"
"which": "^2.0.2" => "^6.0.1"
check versions of tools/scripts-yarn-workspace/package.json using latest
check versions of tools/upgrade-deps/package.json using latest
check versions of fork/bootstrap-sass/package.json using latest
check versions of fork/dynamic-cdn-webpack-plugin/package.json using latest
"read-pkg-up": "^7.0.1" => "^11.0.0"
"@eslint/js": "^9.39.4" => "^10.0.1"
"globals": "^15.15.0" => "^17.4.0"
"webpack-cli": "^6.0.1" => "^7.0.2"
"webpack-manifest-plugin": "^5.0.1" => "^6.0.1"
check versions of fork/json-schema-form-core/package.json using latest
"objectpath": "^1.2.2" => "^2.0.0"
"@types/chai": "^3.5.2" => "^5.2.3"
"@types/node": "^6.14.13" => "^25.5.0"
check versions of fork/module-to-cdn/package.json using latest
"mkdirp": "^1.0.4" => "^3.0.1"
"@eslint/js": "^9.39.4" => "^10.0.1"
"globals": "^15.15.0" => "^17.4.0"
check versions of fork/react-bootstrap/package.json using latest
"dom-helpers": "^3.4.0" => "^6.0.1"
"react-overlays": "^0.9.3" => "^5.2.1"
"react-transition-group": "^2.9.0" => "^4.4.5"
"uncontrollable": "^7.2.1" => "^9.0.0"
"warning": "^3.0.0" => "^4.0.3"
"@vitejs/plugin-react": "^5.2.0" => "^6.0.1"
"@testing-library/react": "^14.3.1" => "^16.3.2"
"chai": "^4.5.0" => "^6.2.2"
"chalk": "^2.4.2" => "^5.6.2"
"lodash": "^4.18.0" => "^4.17.21"
"react": "^18.3.1" => "^19.2.4"
"react-dom": "^18.3.1" => "^19.2.4"
"react-test-renderer": "^18.3.1" => "^19.2.4"
"sinon": "^11.1.2" => "^21.0.3"
Done in 122.82s.
================================================
FILE: docs/adr-2024-04-add-support-to-esm.md
================================================
# ADR: Add support to ECMAScript Modules (ESM)
## Context
Our build and bundling setup currently uses CommonJS modules along with webpack and the dynamic-cdn-webpack-plugin.
To streamline our development workflow and reduce complexity, we are transitioning from yarn to pnpm.
However, it has been identified that pnpm is not compatible with dynamic-cdn-webpack-plugin. This incompatibility, along with the decision to remove the plugin, has resulted in a degradation of the developer experience, primarily through increased build times.
At the same time, the entire frontend world is moving towards ECMAScript Modules (ESM).
Modern browsers that our customers use now support ESM natively.
All existing frameworks are now relying on Vite for the build process, which, under the hood, relies on ESM.
Therefore, having to configure a complex toolchain is becoming obsolete. Given this changing context, we can reevaluate our decisions around the "talend-scripts build\*" toolchain.
## Problem
The transition from yarn to pnpm has uncovered an incompatibility with dynamic-cdn-webpack-plugin, exacerbating the decision to discontinue using this plugin.
This has adversely impacted the developer experience by elongating the build times, a significant concern as it can hinder our overall productivity and agility.
## Decision
Our packages must export ESM to be futur proof and let us use modern tooling like vite or parcel.
## Alternatives Considered
- **Sticking with webpack and dynamic-cdn-webpack-plugin**: This was initially considered to maintain our current setup and avoid the complexities associated with migration. However, given the incompatibility with pnpm and the underlying issues related to complexity and inefficiency in build times, this option was deemed unsuitable.
- **Switching to another build tool without adopting ESM**: Several other build tools could potentially improve build times. However, without addressing the fundamental shift towards ESM in the JavaScript ecosystem, this would be a short-term fix rather than a long-term solution.
- **Migrating to Vite while keeping our packages in CommonJS**: This alternative involves moving to Vite for its development speed advantages but not converting our packages to ESM. While this approach could reduce the immediate workload and avoid potential issues with third-party CommonJS dependencies, it would limit our ability to fully leverage Vite’s capabilities. Vite is optimized for ESM, and using CommonJS may result in suboptimal build performance and hinder live module reloading, affecting developer experience and potentially leading to more complex configurations.
## Consequences
- **Positive**: Moving to ESM and adopting Vite is expected to reduce build times, enhancing developer experience and productivity. It aligns our development practices with the modern JavaScript ecosystem's move towards ESM.
- **Negative**: The migration from CommonJS to ESM syntax could require significant effort. It might also temporarily disrupt our development workflow and necessitate additional training for developers not yet familiar with ESM or Vite.
- **Risks**: There is a risk of encountering third-party libraries not yet compatible with ESM, which could complicate the migration process.
================================================
FILE: docs/adr-composition-vs-api.md
================================================
# CSS Modules
## Composition vs closed component APIs
## Problems and definitions
**Composition** is what we do when we assemble HTML or JSX elements to build a cohesive whole. For instance:
```tsx
<ul>
<li>This list</li>
<li>
Exemplifies <a href="https://talend.com">composition</a>
</li>
</ul>
```
The combination of `ul`, `li` and `a` gives us an unordered list with one of its items containing a hyperlink anchor. This is familiar, flexible and commonplace.
A **closed component API model** does not rely on consumers performing the composition, but on them using input / output parameters to achieve the same result. For instance:
```tsx
<ExampleList
entries=[
'This list',
<>Exemplifies <a href="https://talend.com">a closed API</a></>,
]
/>
---
// Where...
type entry = string | React.ReactElement;
type ListProps = {
entries: entry[];
};
```
This would achieve the same unordered list with a hyperlink anchor.
### Composition
**Pros**
Composition is familiar to anybody who's ever built raw HTML. It's the basic building methodology for layout.
It's flexible and agnostic. Given the right building blocks, one can compose nearly anything.
**Cons**
It's flexible and agnostic. You can do whatever you want with it.
```tsx
<ul>
<p>I really should not be here</p>
</ul>
```
This won't break your app.
```tsx
<a href="#" onClick={() => performSomePageAction()}>
I'm a button, LOL
</a>
```
This would also work, despite being semantically wrong and an accessibility faux-pas.
Now let's consider the composition of non-native HTML tags such as React components.
```tsx
<List>
<ListEntry>This list</ListEntry> // This is fine
<input type="text" name="name" /> // This is not
<InlineMessage>exemplifies compositionnal pitfalls</InlineMessage> // Neither is this
</List>
```
Sure, we can provide more opinionated components (`List` and `ListEntry` here would have specific styles and behaviours), but we cannot limit composition: `children` are notoriously untypeable in a way that would only allow some other subset of React components. What's composable isn't "a little bit composable", it's either fully open (`children: React.ReactElement;`) or very closed (`children: string | number | ...`).
It's a major risk to a product's homogeneity of patterns and behaviours.
### Closed component APIs
**Pros**
It removes the need for tedious composition. Developers no longer need to concern themselves with the proper HTML semantics and intricacies of which HTML tag can legally be a child of such and such parent.
It enforces homogeneity. Closed typed APIs put hard limits to what a component can display and how it can behave. They become easier to predict and less prone to diverging when different developers implement them.
Closed APIs are also strongly typed with TS, providing a better dev experience and overall more reliable components. TS's compiler will break before any poorly-fed component goes online.
**Cons**
It's rigid, it doesn't allow for "slightly different" use cases. The component will do what its API requires, nothing more, nothing "a few pixels more to the left on this one page". Closed API components are specialised.
This can lead to two props-related pitfalls:
First, props proliferation:
```tsx
<List
entries={[
[
'This list',
'Actually',
'is complex enough'
'that even one of its props',
'has multiple levels',
...
],
[
{
label: 'like two kinds of lists',
value: 20,
onClick: () => RandomCalbackWithValue(20),
},
{
label: 'with different interfaces',
value: 10,
onClick: () => RandomCalbackWithValue(10),
},
...
],
]}
actionLeft={() => void}
actionRight={() => void}
offsetXStart={20}
offsetXEnd={0}
offsetYStart={10}
offsetYEnd={0}
headerActions={[
{
icon: 'talend-pen',
label: t('TALEND-EDIT'),
onClick: () => void,
},
...
]}
footerActions={[
{
icon: 'talend-pen',
label: t('TALEND-EDIT'),
onClick: () => void,
},
...
]}
filters={[
{
value: 'size',
label: t('TALEND-SIZE'),
}
...
]}
/>
```
This is complex to use, to maintain, to document. Contributors run the risk of "piling in" more props on top of the props-layer-cake just to achieve "one more thing" on top of it all.
The other issue is props drilling. In the above component, many of those theoretical surface props wouldn't actually be used by first-level components, but be passed down deeper to their intended hosts.
Closed component APIs can lead to poor developer experience.
### What do we need
It boils down to one question: "what is the design system trying to achieve?". It's trying to achieve a _cohesive, homogenous experience across all our products_.
## Solutions
In order to meet those needs, we need to ship components without opening them up for customization. They must work out of the box and preserve Talend's identity!
Our best option to deliver this is to **rely on _exporting_ components with closed APIs** for most things (more on that later)**.** Internally, those components will of course rely on composition. Think of it this way: the design system uses the bricks to build the house, you only have to "import" the house and provide the furniture.
What do we mean when we say "most things" will be shipped with closed APIs? Let's dive in.
### Atoms
Atoms are often single-tag elements, direct equivalents to HTML's basic blocks. Very obvious ones are `Button` `Link` or `Input` elements.
These will offer props that are based on their HTML counterparts minus `className` and `style` since, again, we discourage customisation.
Additional props will be added only when it's necessary to ensure homogeneity. For instance, `Button` components may receive an `icon` prop: this enables the design system to enforce which icons can be used, how they are inserted in the button's layout and how they are displayed. Atoms must remain otherwise simple.
Composition _inside_ atoms is highly unlikely. Expect them to only accept `string` children (thanks, TS!).
### Molecules and organisms
This is often the meat and the core value of a shared component library: interactive components that display things in a rich, interesting way, while enabling contextually relevant actions.
The whole point is that they are repetitively used. It would make no sense to offer them as kits that must be assembled by consumers. The design system must provide them already assembled and ready to be hydrated through their closed APIs.
If the organisms grow too complicated in props, the first solution would be to create a dedicated component for that subset of needed props (for instance, though there may be a `ContextualMenu` component, a `ContextualMenuWithSearch` declination may be created if the prop specificity requires it.)
### Templates or pages
These are often referred to as "layout blocks". Their goal is to arrange "where" things go, what are the basic necessary blocks in there, and then to let users build freely within those boundaries.
The more generic those templates are (agnostic of their contents, for instance, a template called `PageWithSubheader`), the more they will rely on composition with very little props on the component itself.
The more specific they are (for instance a template called `FormPage`), the less composition will be expected from the end-user.
**Composition is a tool we use when we can't document a set pattern**. If we can document it, then we can describe an API for it.
## Why don't you do it like Material / Atlassian / Adobe or other public libraries (Reakit...) out there?
Because we don't have to. Public component libraries use composition as a necessity: they are agnostic, built to cater to many products with unpredictable patterns.
We're not a sprawling corporation with hundreds of designers spread across the globe with unmanageably different aspirations. A single, strongly documented design language is accessible to us.
Those libraries do not rely on consumers perpetually rebuilding the same components over and over again either: they do expect us to use their blocks to create opinionated components that are then shared with consumers.
This is what we do. We use our own components (and some of theirs, cc Reakit) internally to compose the ones that our products need. That need is defined collectively as a design decision by Product Designers, PMs and developers alike. The design system documents and caters to that need in the shape of components.
## TL;DR
Components will be coded with a "closed public API" approach, using composition privately within the design system. This ensures we can easily compose components on one end (the library) while keeping things homogenous on the other (in the products).
Exceptions are expected to happen but must meet two criteria:
- Composition, in this case, is a necessity (ex: layout element, unpredictable content)
- No consensus can be found for a component's API. In this case, chances are the discussed component specificity is too high for a shared library. It becomes in the design system's interest to provide at least homogenous building blocks for that element.
================================================
FILE: docs/adr-css-modules.md
================================================
# CSS Modules
[^1]: tl;dr.
## Context
[Styled Components](https://styled-components.com/) are great for managing a design system with several themes or modes.
They have been chosen because we needed multi-themes support and including IE11 support. So CSS custom properties were not an option.
We've since dropped the support of IE11. We can challenge that choice.
## Problems
They intertwine styles and components in a way that muddles the component's typings.
Its `as` property is too permissive for a design system, enabling users to break the intended patterns using any HTML element or React component.
There is no guarantee about the tokens you use (or not) in your styles.
You cannot quickly identify which DOM node will be generated because of the exported Styled Components.
You must precise the `displayName` for each component and their variations
### What do we need
- A styling solution that does not pollute the components' typing
- A styling solution that handles theming (white-labeling as much as a possible dark theme)
- A styling solution that easily exploits tokens and variables
- We must be able consume variables that represent tokens
### What would we like
- Exportable themes-as-variables: our customers (the front-end engineers) mostly use CSS modules with Sass variables in their projects. When the design system doesn't provide everything they need, we should still give them variables accessing the theme.
- Global stylesheets
- Something simple and familiar to use
- No need for displayName
## Solutions
By introducing [expertly crafted web design tokens](#3528), represented by CSS custom properties, we are now able to align the Design System with the rest of the Talend/UI packages.
By alignment, we are talking about [CSS Modules](https://github.com/css-modules/css-modules).
We will replace all current Styled Components usages, tracked by JIRA.
But, starting now[^1], any style update in the Design System package will use CSS modules.
================================================
FILE: docs/adr-data-test.md
================================================
# Use [data-testid] attributes for generic automated tests
## Context
Quality Assurance teams perform automated tests on Products for non-regression testing.
## Problems
QA teams lean on HTML ID attributes or XPath to automate tests on UI, and updates on the shared library can break these scenarios.
## Solutions
Systematically enforce [data-testid] attributes for QA purpose in the components or layout markup that require them.
They will be mandatory for each interactive element, at least.
We see two benefits to that pattern:
1 — Better documentation. The single data attribute acts as a contract with our QA team and it's easy to find which components are under that contract.
2 — Ease of use. Component testing becomes more straightforward as the same pattern can be expected on all design system components.
```css
[data-testid="<block_name>.<element_type>[?<element_index>].<?element_identifier>"]
```
| Identifier | Optional | Description |
| -------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `block_name` | | Component or layout identifier from our design language (ex: modal, search, password, inlineediting, etc.) |
| `element_type` | | Element or its type used (ex: button, link, input, textarea, radio, etc.) |
| `element_index` | yes | Element index if it's repeated (radio, menu items, etc.) |
| `element_identifier` | yes | A short and comprehensive identifier. In case of a form field, we can use its label value (reveal, cancel, edit, submit, etc.) for instance. |
Stick to this ruleset but keep in mind:
> This ruleset applies to all shared react components: we definitively have to be **context agnostic**.
> If we're testing a text input, it could for instance be used for a `first name` or an `API key name`.
> That's why we need to **keep it simple and stupid** when naming things.
Describe the pattern, not the specific one-shot use you will use it for.
The `[data-testid]` attributes here are an addition to what the product team can provide.
`[data-testid]` attributes are the default that we can agree on, enabling to write E2E tests without worrying about the HTML markup or the CSS.
### Examples
- For a "Close" button of a `Modal`
`[data-testid="modal.button.close"]`
- For a "Reveal" button of a `Password` form field
`[data-testid="password.button.reveal"]`
- For a textarea of the `Inline Editing` in edition mode
`[data-testid="inlineediting.textarea"]`
- For a filter of a list
`[data-testid="search.input"]`
- For a `Switch` with three options, which uses radio buttons under the hood
`[data-testid="switch.radio[1]"]` `[data-testid="switch.radio[2]"]` `[data-testid="switch.radio[3]"]`
All of this will be part of the documentation (see below) and each of them will be used in [Cypress component testing](https://docs.cypress.io/guides/component-testing/introduction) in our Design System codebase.
================================================
FILE: docs/adr-dependencies.md
================================================
# Usage of dependencies, peerDependencies, devDependencies in package.json
## Context
Dependencies are specified using the package.json file in the library's codebase.
We have more and more libraries written and used by projects.
We use different distribution formats for our libraries:
- UMD for some (react-components, react-cmf, etc ...)
- a mix of transpiled JS and SASS files which needs sharing config to make it work for others
## Problems
We see commits with a mix of libraries being added to `peerDependencies` and `dependencies` without real guidelines.
Each change in peerDependencies leads to [a major release](https://github.com/semver/semver/issues/502).
We do not know when to put a dependency in the `"peerDependencies"` or just in the `"dependencies"` of the package.json file.
With yarn, `peerDependencies` are hard to manage. Yarn only outputs a warning the first time it encounters the dependency, when it needs to really install it in your node_modules. It's easy to miss and to forget. We have also seen some false positive warnings.
With npm, peerDependencies management depends on the version used:
- npm 1,2,7,8 install peerDependencies
- npm 3,4,5,6 do not install peerDependencies
The documentation of npm only covers the behavior of npm, not the definition and actual usage of these peer dependencies.
We know our project can't use npm > 7.0 because we have some issues in our peerDependencies definitions!
npm > 7 requires all peer dependencies to be at the same level, the same version. That needs to be fixed on our end.
## Solutions
Define a clear guideline for dependency requirements in the package.json files of libraries.
### Guideline
**`"devDependencies"`**
Add **a-dependency** under `devDependencies` if **a-dependency** is used only to build, debug, or because A is also a peerDependencies.
Basically use `devDependencies` if this dependency has no impact on runtime.
examples:
- @talend/scripts-core
- @talend/scripts-preset-react-lib
- i18next-scanner
- cross-env
- react (if in peerDependencies)
Type dependencies (usually in the format `@types/some-js-library`) can be added to `devDependencies` only if the exported types for the library you're working on do not depend on it.
```javascript
import { LibType } from 'some-js-library';
// If this export is available in the bundle, then your bundle has an actual dependency to LibType
export myLibType = LibType & { isActive: boolean };
```
**`"dependencies"`**
Add **a-dependency** under `dependencies` only if it is used by the code and does not fall under peerDependencies.
examples:
- @talend/design-token
- @talend/router-bridge
- @talend/react-components
- @talend/react-containers
- @talend/react-dataviz
- classnames
- keycode
- lodash
- prop-types
- date-fns
- react-bootstrap
As we've discussed, add type files to dependencies if your exported types depends on it.
**`"peerDependencies"`**
Add **a-dependency** under peerDependencies only if the consumer will need to import or configure something out of that dependency, to make your library work (ex: i18next is used in my library, the host project will need to configure it for the library to run)
At the [begining in 2013](https://nodejs.org/en/blog/npm/peer-dependencies/) the peerDependencies as heen created to cover the Plugin needs.
So **a-dependency** can be added even if your library do not use it.
examples:
- @talend/design-system
- @talend/react-cmf
- react
- react-dom
- i18next
- react-i18next
================================================
FILE: docs/adr-rework-talend-scripts.md
================================================
# Rework Talend scripts
## Context
It would be nide to add a new preset for node applications.
While creating it, it would be nice to rework a bit how script are handled.
We could avoid to pull all the dependencies for all the scripts, for instance we don't need storybook for node apps etc.
## Proposal
The proposal would be to split the scripts in different packages that don't rely on each others.
The index.js of talend-scripts would check the package.json and require the right package.
if the command is now known, it would fallback to required the package and execute the command like this
```
talend-scripts upgrade:deps
-> require ("@talend/upgrade-deps")()
```
### app-react-ng
build (webpack)
start (webpack)
start-storybook (storybook)
build-storybook (storybook)
test (jest + karma)
lint (eslint + stylelint)
### app-react
build (webpack)
start (webpack)
start-storybook (storybook)
build-storybook (storybook)
test (jest)
lint (eslint + stylelint)
### lib
build (tsc || babel)
start (storybook)
build-storybook (storybook)
test (jest)
lint (eslint + stylelint)
### node
build (tsc || babel)
start (ts-node-dev)
test (jest)
lint (eslint)
## Other scripts
- upgrade:deps : could be moved to a dedicated package (available via npx for instance)
- publish:local : could be moved to a dedicated package (available via npx for instance)
- extends : is it used ?
- postinstall : is it used ?
================================================
FILE: eslint.config.mjs
================================================
import config from '@talend/eslint-config';
export default config;
================================================
FILE: fork/bootstrap-sass/.gitignore
================================================
*.gem
.sass-cache
bootstrap.css
bootstrap-responsive.css
Gemfile.lock
*.gemfile.lock
.rvmrc
.rbenv-version
# Ignore bundler config
/.bundle
/vendor/cache
/vendor/bundle
tmp/
test/screenshots/
test/dummy_rails/log/*.log
test/dummy_rails/public/assets/
.DS_Store
node_modules
/.idea
================================================
FILE: fork/bootstrap-sass/CHANGELOG.md
================================================
# Changelog
## 5.6.2
### Patch Changes
- 4408b98: chore: upgrade dependencies
## 5.6.1
### Patch Changes
- 6181519: chore: update eslint 10
## 5.6.0
### Minor Changes
- c1eae85: Update eslint to v9 + update config
## 5.5.0
### Minor Changes
- bb95e38: Fix CVE's by upgrading sq to v6.14.1, tar to 7.5.4 and eslint to 9.39.2
## 5.4.0
### Minor Changes
- ed37213: Update dependencies
## 5.3.2
### Patch Changes
- de6ae38: Bump dependencies
## 5.3.1
### Patch Changes
- 4f5cc5c: Bump security CVE
## 5.3.0
### Minor Changes
- c3750a1: chore: upgrade dependencies
Major upgrade for all packages that have a peerDependency on react or react-dom. Those packages now ask for react@18 and react-dom@18.
## 5.2.1
### Patch Changes
- 1abc22f: chore: upgrade dependencies
## 5.2.0
### Minor Changes
- 9568363: Use include instead of same-origin in the credentials option of fetch.
## 5.1.0
### Minor Changes
- 18c1d97: `rem` values have been updated to correspond to the new `rem` base (16px) define by the design system
## 5.0.0
### Major Changes
- 3dc3100: chore: remove font-size override (this should not impact the apps as it's done also on the design-system provider)
## 4.0.0
### Major Changes
- 9f9fc07: chore: remove font-size override (this should not impact the apps as it's done also on the design-system provider)
## 3.5.1
### Patch Changes
- f14ebbe23: Add missing deps
## 3.5.0
### Minor Changes
- 9d137cb98: \* 275e7da72 2023-08-03 feat(TDOPS-4875): use elevation tokens (#4821)
- bfc02c4fb 2023-07-24 feat(ARCH-720): use design-tokens for colors (#4779)
- c18aabb97 2023-01-12 feat(ARCH-662/scripts-core): move to ESM and remove presets (#4531)
- aa5223cf3 2021-12-20 chore(ARCH-404/CI): decrease time needed (#3564)
- 4842bffc2 2021-11-02 chore: wake up the playground to test UMDs (#3428)
- 667cd0a50 2021-10-05 chore: upgrade dependencies (#3459)
## 3.4.8
### Patch Changes
- 809c30848: fix(boostrap-sass): use calc instead of math.div
## 3.4.7
### Patch Changes
- ca60841df: revert usage of @use sass:math
## 3.4.6
### Patch Changes
- f1f4ec5bc: fix(workspace-run): package run order
## 3.4.5
### Patch Changes
- 3e9121287: chore(build): order packages on pre-release hook
## 3.4.0
- Bootstrap rubygem now depends on SassC instead of Sass.
- Compass no longer supported.
## 3.3.7
- Allows jQuery 3.x in bower.json. [#1048](https://github.com/twbs/bootstrap-sass/issues/1048)
- Adds the `style` and `sass` fields to package.json. [#1045](https://github.com/twbs/bootstrap-sass/issues/1045)
- Adds Eyeglass support. [#1007](https://github.com/twbs/bootstrap-sass/pull/1007)
## 3.3.6
- Bumps Sass dependency to 3.3.4+ to avoid compatibility issues with @at-root.
- Bumps node-sass dependency to ~3.4.2 for Node.js v5 compatibility. [#986](https://github.com/twbs/bootstrap-sass/issues/986)
- Fixes breadcrumb content issues on libsass. [#919](https://github.com/twbs/bootstrap-sass/issues/919)
- Fixes a Rails 5 compatibility issue. [#965](https://github.com/twbs/bootstrap-sass/pull/965)
Framework version: Bootstrap **v3.3.6**
## 3.3.5
Fix for standalone Compass extension compatibility. [#914](https://github.com/twbs/bootstrap-sass/issues/914)
Framework version: Bootstrap **v3.3.5**
## 3.3.4
No Sass-specific changes.
Framework version: Bootstrap **v3.3.4**
## 3.3.3
This is a re-packaged release of 3.3.2.1 (v3.3.2+1).
Versions are now strictly semver.
The PATCH version may be ahead of the upstream.
Framework version: Bootstrap **v3.3.2**.
## 3.3.2.1
- Fix glyphicons regression (revert 443d5b49eac84aec1cb2f8ea173554327bfc8c14)
## 3.3.2.0
- Autoprefixer is now required, and `autoprefixer-rails` is now a dependency for the ruby gem. [#824](https://github.com/twbs/bootstrap-sass/issues/824)
- Minimum precision reduced from 10 to 8 [#821](https://github.com/twbs/bootstrap-sass/issues/821)
- Requiring bootstrap JS from npm now works [#812](https://github.com/twbs/bootstrap-sass/issues/812)
- Fix Sass 3.4.x + IE10 compatibility issue [#803](https://github.com/twbs/bootstrap-sass/issues/803)
- Provide minified JS bundle [#777](https://github.com/twbs/bootstrap-sass/issues/777)
- Bower package is now at bootstrap-sass [#813](https://github.com/twbs/bootstrap-sass/issues/813)
## 3.3.1.0
- Variables override template at templates/project/\_bootstrap-variables.sass
- Readme: Bower + Rails configuration
## 3.3.0.1
- Fix loading issue with the ruby gem version
## 3.3.0
- Improve libsass compatibility
- Support using Bower package with Rails
## 3.2.0.2
Main bootstrap file is now a partial (\_bootstrap.scss), for compatibility with Compass 1+.
Fixed a number of bugs. [Issues closed in v3.2.0.2](https://github.com/twbs/bootstrap-sass/issues?q=is%3Aissue+is%3Aclosed+milestone%3Av3.2.0.2).
## 3.2.0.1
Fixed a number of bugs: [Issues closed in v3.2.0.1](https://github.com/twbs/bootstrap-sass/issues?q=is%3Aissue+is%3Aclosed+milestone%3Av3.2.0.1).
## 3.2.0.0
- Assets (Sass, JS, fonts) moved from `vendor/assets` to `assets`. `bootstrap.js` now contains concatenated JS.
- Compass generator now copies JS and fonts, and provides a better default `styles.sass`.
- Compass, Sprockets, and Mincer asset path helpers are now provided in pure Sass: `bootstrap-compass`, `bootstrap-sprockets`, and `bootstrap-mincer`.
Asset path helpers must be imported before `bootstrap`, more in Readme.
- Sprockets / Mincer JS manifest has been moved to `bootstrap-sprockets.js`.
It can be required without adding Bootstrap JS directory to load path, as it now uses relative paths.
- Sprockets: `depend_on_asset` (`glyphicons.scss`) has been changed to `depend_on` to work around an issue with `depend_on_asset`.
[More information](https://github.com/twbs/bootstrap-sass/issues/592#issuecomment-46570286).
## 3.1.1.0
- Updated Bower docs
## 3.1.0.2
- #523: Rails 3.2 compatibility
- Bugfixes from upstream up to 7eb532262fbd1112215b5a547b9285794b5360ab.
## 3.1.0.1
- #518: `scale` mixin Sass compatibility issue
## 3.1.0.0
- compiles with libsass master
## 3.0.2.1
- fix vendor paths for compass
## 3.0.0.0
- Fully automated (lots of string juggling) LESS -> Sass conversion. - _Gleb Mazovetskiy_
- Ported rake task from vwall/compass-twitter-bootstrap to convert Bootstrap upstream - _Peter Gumeson_
- Moved javascripts to us `bootstrap-component.js` to `bootstrap/component.js` - _Peter Gumeson_
## 2.3.2.2
- Allow sass-rails `>= 3.2` - _Thomas McDonald_
## 2.3.2.1
## 2.3.2.0
- Update to Bootstrap 2.3.2 - _Dan Allen_
## 2.3.1.3
- Find the correct Sprockets context for the `image_path` function - _Tristan Harward, Gleb Mazovetskiy_
## 2.3.1.2
- Fix changes to image url - _Gleb Mazovetskiy_
- Copy \_variables into project on Compass install - _Phil Thompson_
- Add `bootstrap-affix` to the Compass template file - _brief_
## 2.3.1.1 (yanked)
- Change how image*url is handled internally - \_Tristan Harward*
- Fix some font variables not having `!default` - _Thomas McDonald_
## 2.3.0.0
- [#290] Update to Bootstrap 2.3.0 - _Tristan Harward_
- Fix `rake:debug` with new file locations - _Thomas McDonald_
- Add draft contributing document - _Thomas McDonald_
- [#260] Add our load path to the global Sass load path - _Tristan Harward_
- [#275] Use GitHub notation in Sass head testing gemfile - _Timo Schilling_
- [#279, #283] Readme improvements - _theverything, Philip Arndt_
## 2.2.2.0
- [#270] Update to Bootstrap 2.2.2 - _Tristan Harward_
- [#266] Add license to gemspec - _Peter Marsh_
## 2.2.1.1
- [#258] Use `bootstrap` prefix for `@import`ing files in `bootstrap/bootstrap.scss` - _Umair Siddique_
## 2.2.1.0
- [#246] Update to Bootstrap 2.2.1 - _Tristan Harward_
- [#246] Pull Bootstrap updates from jlong/sass-twitter-bootstrap - _Tristan Harward_
## 2.1.1.0
- Update to Bootstrap 2.1.1
- [#222] Remove 100% multiplier in vertical-three-colours
- [#227] Fix IE component animation collapse
- [#228] Fix variables documentation link
- [#231] Made .input-block-level a class as well as mixin
## 2.1.0.1
- [#219] Fix expected a color. Got: transparent.
- [#207] Add missing warning style for table row highlighting
- [#208] Use grid-input-span for input spans
## 2.1.0.0
- Updated to Bootstrap 2.1
- Changed some mixin names to be more consistent. Nested mixins in Less are separated by a `-` when they are flattened in Sass.
## 2.0.4.1
- Fix `.row-fluid > spanX` nesting
- Small Javascript fixes for those staying on the 2.0.4 release
- Add `!default` to z-index variables.
## 2.0.4.0
- Updated to Bootstrap 2.0.4
- Switched to Bootstrap 2.0.3+'s method of separating responsive files
- [#149, #150] Fix off by one error introduced with manual revert of media query breakpoints
- `rake debug` and `rake test` both compile bootstrap & bootstrap-responsive
## 2.0.3.1
- [#145, #146] Fix button alignment in collapsing navbar as a result of an incorrect variable
## 2.0.3
- Updated to Bootstrap 2.0.3
- [#106] Support for Rails < 3.1 through Compass
- [#132] Add CI testing
- [#106] Support Rails w/Compass
- [#134] Fix support for Rails w/Compass
## 2.0.2
- [#86] Updated to Bootstrap 2.0.2
Things of note: static navbars now have full width. (to be fixed in 2.0.3) `.navbar-inner > .container { width:940px; }` seems to work in the meanwhile
- [#62] Fixed asset compilation taking a _very_ long time.
- [#69, #79, #80] \(Hopefully) clarified README. Now with less cat humour.
- [#91] Removed doubled up Sass extensions for Rails.
- [#63, #73] Allow for overriding of image-path
- [[SO](http://stackoverflow.com/a/9909626/241212)] Added makeFluidColumn mixin for defining fluid columns. Fluid rows must use `@extend .row-fluid`, and any column inside it can use `@include makeFluidColumn(num)`, where `num` is the number of columns. Unfortunately, there is a rather major limitation to this: margins on first-child elements must be overriden. See the attached Stack Overflow answer for more information.
## 2.0.1
- Updated to Bootstrap 2.0.1
- Modified `@mixin opacity()` to take an argument `0...1` rather than `0...100` to be consistent with Compass.
## 2.0.0
- Updated to Bootstrap 2.0.0
================================================
FILE: fork/bootstrap-sass/CONTRIBUTING.md
================================================
# Contributing to bootstrap-sass
## Asset Changes
Any changes to `bootstrap-sass` assets (scss, javascripts, fonts) should be checked against the `convert` rake task.
For usage instructions, see the [README](/README.md).
If something is broken in the converter, it's preferable to update the converter along with the asset itself.
## Bugs
A bug is a _demonstrable problem_ that is caused by the code in the
repository. Good bug reports are extremely helpful - thank you!
Guidelines for bug reports:
1. **Does it belong here?** — is this a problem with bootstrap-sass, or
it an issue with [twbs/bootstrap](https://github.com/twbs/bootstrap)?
We only distribute a direct port and will not modify files if they're not
changed upstream.
2. **Use the GitHub issue search** — check if the issue has already been
reported.
3. **Isolate the problem** — ideally create a [reduced test
case](http://css-tricks.com/6263-reduced-test-cases/) and a live example.
A good bug report shouldn't leave others needing to chase you up for more
information. Please try to be as detailed as possible in your report. What is
your environment? What steps will reproduce the issue? What browser(s) and OS
experience the problem? What would you expect to be the outcome? All these
details will help people to fix any potential bugs.
Example:
> Short and descriptive example bug report title
>
> A summary of the issue and the browser/OS environment in which it occurs. If
> suitable, include the steps required to reproduce the bug.
>
> 1. This is the first step
> 2. This is the second step
> 3. Further steps, etc.
>
> `<url>` (a link to the reduced test case)
>
> Any other information you want to share that is relevant to the issue being
> reported. This might include the lines of code that you have identified as
> causing the bug, and potential solutions (and your opinions on their
> merits).
**[File a bug report](https://github.com/twbs/bootstrap-sass/issues/)**
## Pull requests
**We will not accept pull requests that modify the SCSS beyond fixing bugs caused by *our* code!**
We use a [converter script][converter-readme] to automatically convert upstream bootstrap, written in LESS, to Sass.
Issues related to styles or javascript but unrelated to the conversion process should go to [twbs/bootstrap][upstream].
Pull requests that fix bugs caused by our code should not modify the SCSS directly, but should patch the converter instead.
Good pull requests - patches, improvements, new features - are a fantastic
help. They should remain focused in scope and avoid containing unrelated
commits. If your contribution involves a significant amount of work or substantial
changes to any part of the project, please open an issue to discuss it first.
Make sure to adhere to the coding conventions used throughout a project
(indentation, accurate comments, etc.). Please update any documentation that is
relevant to the change you're making.
## Do not…
Please **do not** use the issue tracker for personal support requests (use
[Stack Overflow](http://stackoverflow.com/)).
Please **do not** derail or troll issues. Keep the
discussion on topic and respect the opinions of others.
*props [html5-boilerplate](https://github.com/h5bp/html5-boilerplate/blob/master/CONTRIBUTING.md)*
[upstream]: https://github.com/twbs/bootstrap
[converter-readme]: https://github.com/twbs/bootstrap-sass/blob/master/README.md#upstream-converter
================================================
FILE: fork/bootstrap-sass/LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2011-2016 Twitter, Inc
Copyright (c) 2011-2016 The Bootstrap Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: fork/bootstrap-sass/README.md
================================================
# Bootstrap 3 for Sass
Note: this is a fork for [Talend/ui](https://github.com/Talend/ui) maintainance reasons. We fix security and sass compatibility only. For the override please look at `@talend/bootstrap-theme`.
[](https://www.npmjs.com/package/@talend/bootstrap-sass)
`bootstrap-sass` is a Sass-powered version of [Bootstrap](https://github.com/twbs/bootstrap) 3, ready to drop right into your Sass powered applications.
This is Bootstrap **3**. For Bootstrap **4** use the [Bootstrap rubygem](https://github.com/twbs/bootstrap-rubygem) if you use Ruby, and the [main repo](https://github.com/twbs/bootstrap) otherwise.
## Installation
Please see the appropriate guide for your environment of choice:
* [Ruby on Rails](#a-ruby-on-rails).
* [Bower](#b-bower).
* [npm / Node.js](#c-npm--nodejs).
### a. Ruby on Rails
`bootstrap-sass` is easy to drop into Rails with the asset pipeline.
In your Gemfile you need to add the `bootstrap-sass` gem, and ensure that the `sass-rails` gem is present - it is added to new Rails applications by default.
```ruby
gem 'bootstrap-sass', '~> 3.4.1'
gem 'sassc-rails', '>= 2.1.0'
```
`bundle install` and restart your server to make the files available through the pipeline.
Import Bootstrap styles in `app/assets/stylesheets/application.scss`:
```scss
// "bootstrap-sprockets" must be imported before "bootstrap" and "bootstrap/variables"
@import "bootstrap-sprockets";
@import "bootstrap";
```
`bootstrap-sprockets` must be imported before `bootstrap` for the icon fonts to work.
Make sure the file has `.scss` extension (or `.sass` for Sass syntax). If you have just generated a new Rails app,
it may come with a `.css` file instead. If this file exists, it will be served instead of Sass, so rename it:
```console
$ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss
```
Then, remove all the `*= require_self` and `*= require_tree .` statements from the sass file. Instead, use `@import` to import Sass files.
Do not use `*= require` in Sass or your other stylesheets will not be [able to access][antirequire] the Bootstrap mixins or variables.
Bootstrap JavaScript depends on jQuery.
If you're using Rails 5.1+, add the `jquery-rails` gem to your Gemfile:
```ruby
gem 'jquery-rails'
```
```console
$ bundle install
```
Require Bootstrap Javascripts in `app/assets/javascripts/application.js`:
```js
//= require jquery
//= require bootstrap-sprockets
```
`bootstrap-sprockets` and `bootstrap` [should not both be included](https://github.com/twbs/bootstrap-sass/issues/829#issuecomment-75153827) in `application.js`.
`bootstrap-sprockets` provides individual Bootstrap Javascript files (`alert.js` or `dropdown.js`, for example), while
`bootstrap` provides a concatenated file containing all Bootstrap Javascripts.
#### Bower with Rails
When using [bootstrap-sass Bower package](#c-bower) instead of the gem in Rails, configure assets in `config/application.rb`:
```ruby
# Bower asset paths
root.join('vendor', 'assets', 'bower_components').to_s.tap do |bower_path|
config.sass.load_paths << bower_path
config.assets.paths << bower_path
end
# Precompile Bootstrap fonts
config.assets.precompile << %r(bootstrap-sass/assets/fonts/bootstrap/[\w-]+\.(?:eot|svg|ttf|woff2?)$)
# Minimum Sass number precision required by bootstrap-sass
::Sass::Script::Value::Number.precision = [8, ::Sass::Script::Value::Number.precision].max
```
Replace Bootstrap `@import` statements in `application.scss` with:
```scss
$icon-font-path: "bootstrap-sass/assets/fonts/bootstrap/";
@import "bootstrap-sass/assets/stylesheets/bootstrap-sprockets";
@import "bootstrap-sass/assets/stylesheets/bootstrap";
```
Replace Bootstrap `require` directive in `application.js` with:
```js
//= require bootstrap-sass/assets/javascripts/bootstrap-sprockets
```
#### Rails 4.x
Please make sure `sprockets-rails` is at least v2.1.4.
#### Rails 3.2.x
bootstrap-sass is no longer compatible with Rails 3. The latest version of bootstrap-sass compatible with Rails 3.2 is v3.1.1.0.
### b. Bower
bootstrap-sass Bower package is compatible with node-sass 3.2.0+. You can install it with:
```console
$ bower install bootstrap-sass
```
Sass, JS, and all other assets are located at [assets](/assets).
By default, `bower.json` main field list only the main `_bootstrap.scss` and all the static assets (fonts and JS).
This is compatible by default with asset managers such as [wiredep](https://github.com/taptapship/wiredep).
#### Node.js Mincer
If you use [mincer][mincer] with node-sass, import Bootstrap like so:
In `application.css.ejs.scss` (NB **.css.ejs.scss**):
```scss
// Import mincer asset paths helper integration
@import "bootstrap-mincer";
@import "bootstrap";
```
In `application.js`:
```js
//= require bootstrap-sprockets
```
See also this [example manifest.js](/test/dummy_node_mincer/manifest.js) for mincer.
### c. npm / Node.js
```console
$ npm install bootstrap3-sass
```
## Configuration
### Sass
By default all of Bootstrap is imported.
You can also import components explicitly. To start with a full list of modules copy
[`_bootstrap.scss`](assets/stylesheets/_bootstrap.scss) file into your assets as `_bootstrap-custom.scss`.
Then comment out components you do not want from `_bootstrap-custom`.
In the application Sass file, replace `@import 'bootstrap'` with:
```scss
@import 'bootstrap-custom';
```
### Sass: Number Precision
bootstrap-sass [requires](https://github.com/twbs/bootstrap-sass/issues/409) minimum [Sass number precision][sass-precision] of 8 (default is 5).
Precision is set for Ruby automatically when using the `sassc-rails` gem.
When using the npm or Bower version with Ruby, you can set it with:
```ruby
::Sass::Script::Value::Number.precision = [8, ::Sass::Script::Value::Number.precision].max
```
### Sass: Autoprefixer
Bootstrap requires the use of [Autoprefixer][autoprefixer].
[Autoprefixer][autoprefixer] adds vendor prefixes to CSS rules using values from [Can I Use](https://caniuse.com/).
To match [upstream Bootstrap's level of browser compatibility](https://getbootstrap.com/getting-started/#support), set Autoprefixer's `browsers` option to:
```json
[
"Android 2.3",
"Android >= 4",
"Chrome >= 20",
"Firefox >= 24",
"Explorer >= 8",
"iOS >= 6",
"Opera >= 12",
"Safari >= 6"
]
```
### JavaScript
[`assets/javascripts/bootstrap.js`](/assets/javascripts/bootstrap.js) contains all of Bootstrap's JavaScript,
concatenated in the [correct order](/assets/javascripts/bootstrap-sprockets.js).
#### JavaScript with Sprockets or Mincer
If you use Sprockets or Mincer, you can require `bootstrap-sprockets` instead to load the individual modules:
```js
// Load all Bootstrap JavaScript
//= require bootstrap-sprockets
```
You can also load individual modules, provided you also require any dependencies.
You can check dependencies in the [Bootstrap JS documentation][jsdocs].
```js
//= require bootstrap/scrollspy
//= require bootstrap/modal
//= require bootstrap/dropdown
```
### Fonts
The fonts are referenced as:
```scss
"#{$icon-font-path}#{$icon-font-name}.eot"
```
`$icon-font-path` defaults to `bootstrap/` if asset path helpers are used, and `../fonts/bootstrap/` otherwise.
When using bootstrap-sass with Compass, Sprockets, or Mincer, you **must** import the relevant path helpers before Bootstrap itself, for example:
```scss
@import "bootstrap-compass";
@import "bootstrap";
```
## Usage
### Sass
Import Bootstrap into a Sass file (for example, `application.scss`) to get all of Bootstrap's styles, mixins and variables!
```scss
@import "bootstrap";
```
You can also include optional Bootstrap theme:
```scss
@import "bootstrap/theme";
```
The full list of Bootstrap variables can be found [here](https://getbootstrap.com/customize/#less-variables). You can override these by simply redefining the variable before the `@import` directive, e.g.:
```scss
$navbar-default-bg: #312312;
$light-orange: #ff8c00;
$navbar-default-color: $light-orange;
@import "bootstrap";
```
### Eyeglass
Bootstrap is available as an [Eyeglass](https://github.com/sass-eyeglass/eyeglass) module. After installing Bootstrap via NPM you can import the Bootstrap library via:
```scss
@import "bootstrap-sass/bootstrap"
```
or import only the parts of Bootstrap you need:
```scss
@import "bootstrap-sass/bootstrap/variables";
@import "bootstrap-sass/bootstrap/mixins";
@import "bootstrap-sass/bootstrap/carousel";
```
## Version
Bootstrap for Sass version may differ from the upstream version in the last number, known as
[PATCH](https://semver.org/spec/v2.0.0.html). The patch version may be ahead of the corresponding upstream minor.
This happens when we need to release Sass-specific changes.
Before v3.3.2, Bootstrap for Sass version used to reflect the upstream version, with an additional number for
Sass-specific changes. This was changed due to Bower and npm compatibility issues.
The upstream versions vs the Bootstrap for Sass versions are:
| Upstream | Sass |
|---------:|--------:|
| 3.3.4+ | same |
| 3.3.2 | 3.3.3 |
| <= 3.3.1 | 3.3.1.x |
Always refer to [CHANGELOG.md](/CHANGELOG.md) when upgrading.
---
## Development and Contributing
If you'd like to help with the development of bootstrap-sass itself, read this section.
### Upstream Converter
Keeping bootstrap-sass in sync with upstream changes from Bootstrap used to be an error prone and time consuming manual process. With Bootstrap 3 we have introduced a converter that automates this.
**Note: if you're just looking to *use* Bootstrap 3, see the [installation](#installation) section above.**
Upstream changes to the Bootstrap project can now be pulled in using the `convert` rake task.
Here's an example run that would pull down the master branch from the main [twbs/bootstrap](https://github.com/twbs/bootstrap) repo:
rake convert
This will convert the latest LESS to Sass and update to the latest JS.
To convert a specific branch or version, pass the branch name or the commit hash as the first task argument:
rake convert[e8a1df5f060bf7e6631554648e0abde150aedbe4]
The latest converter script is located [here][converter] and does the following:
* Converts upstream Bootstrap LESS files to its matching SCSS file.
* Copies all upstream JavaScript into `assets/javascripts/bootstrap`, a Sprockets manifest at `assets/javascripts/bootstrap-sprockets.js`, and a concatenation at `assets/javascripts/bootstrap.js`.
* Copies all upstream font files into `assets/fonts/bootstrap`.
* Sets `Bootstrap::BOOTSTRAP_SHA` in [version.rb][version] to the branch sha.
This converter fully converts original LESS to SCSS. Conversion is automatic but requires instructions for certain transformations (see converter output).
Please submit GitHub issues tagged with `conversion`.
## Credits
bootstrap-sass has a number of major contributors:
<!-- feel free to make these link wherever you wish -->
* [Thomas McDonald](https://twitter.com/thomasmcdonald_)
* [Tristan Harward](http://www.trisweb.com)
* Peter Gumeson
* [Gleb Mazovetskiy](https://github.com/glebm)
and a [significant number of other contributors][contrib].
## You're in good company
bootstrap-sass is used to build some awesome projects all over the web, including
[Diaspora](https://diasporafoundation.org/), [rails_admin](https://github.com/sferik/rails_admin),
Michael Hartl's [Rails Tutorial](https://www.railstutorial.org/), [gitlabhq](http://gitlabhq.com/) and
[kandan](http://getkandan.com/).
[converter]: https://github.com/twbs/bootstrap-sass/blob/master/tasks/converter/less_conversion.rb
[version]: https://github.com/twbs/bootstrap-sass/blob/master/lib/bootstrap-sass/version.rb
[contrib]: https://github.com/twbs/bootstrap-sass/graphs/contributors
[antirequire]: https://github.com/twbs/bootstrap-sass/issues/79#issuecomment-4428595
[jsdocs]: https://getbootstrap.com/javascript/#transitions
[sass-precision]: http://sass-lang.com/documentation/Sass/Script/Value/Number.html#precision%3D-class_method
[mincer]: https://github.com/nodeca/mincer
[autoprefixer]: https://github.com/postcss/autoprefixer
================================================
FILE: fork/bootstrap-sass/assets/images/.keep
================================================
================================================
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/affix.js
================================================
/* ========================================================================
* Bootstrap: affix.js v3.4.1
* https://getbootstrap.com/docs/3.4/javascript/#affix
* ========================================================================
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// AFFIX CLASS DEFINITION
// ======================
var Affix = function (element, options) {
this.options = $.extend({}, Affix.DEFAULTS, options)
var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)
this.$target = target
.on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
this.$element = $(element)
this.affixed = null
this.unpin = null
this.pinnedOffset = null
this.checkPosition()
}
Affix.VERSION = '3.4.1'
Affix.RESET = 'affix affix-top affix-bottom'
Affix.DEFAULTS = {
offset: 0,
target: window
}
Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
var scrollTop = this.$target.scrollTop()
var position = this.$element.offset()
var targetHeight = this.$target.height()
if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
if (this.affixed == 'bottom') {
if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
}
var initializing = this.affixed == null
var colliderTop = initializing ? scrollTop : position.top
var colliderHeight = initializing ? targetHeight : height
if (offsetTop != null && scrollTop <= offsetTop) return 'top'
if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
return false
}
Affix.prototype.getPinnedOffset = function () {
if (this.pinnedOffset) return this.pinnedOffset
this.$element.removeClass(Affix.RESET).addClass('affix')
var scrollTop = this.$target.scrollTop()
var position = this.$element.offset()
return (this.pinnedOffset = position.top - scrollTop)
}
Affix.prototype.checkPositionWithEventLoop = function () {
setTimeout($.proxy(this.checkPosition, this), 1)
}
Affix.prototype.checkPosition = function () {
if (!this.$element.is(':visible')) return
var height = this.$element.height()
var offset = this.options.offset
var offsetTop = offset.top
var offsetBottom = offset.bottom
var scrollHeight = Math.max($(document).height(), $(document.body).height())
if (typeof offset != 'object') offsetBottom = offsetTop = offset
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
if (this.affixed != affix) {
if (this.unpin != null) this.$element.css('top', '')
var affixType = 'affix' + (affix ? '-' + affix : '')
var e = $.Event(affixType + '.bs.affix')
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
this.affixed = affix
this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
this.$element
.removeClass(Affix.RESET)
.addClass(affixType)
.trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
}
if (affix == 'bottom') {
this.$element.offset({
top: scrollHeight - height - offsetBottom
})
}
}
// AFFIX PLUGIN DEFINITION
// =======================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.affix')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.affix
$.fn.affix = Plugin
$.fn.affix.Constructor = Affix
// AFFIX NO CONFLICT
// =================
$.fn.affix.noConflict = function () {
$.fn.affix = old
return this
}
// AFFIX DATA-API
// ==============
$(window).on('load', function () {
$('[data-spy="affix"]').each(function () {
var $spy = $(this)
var data = $spy.data()
data.offset = data.offset || {}
if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
if (data.offsetTop != null) data.offset.top = data.offsetTop
Plugin.call($spy, data)
})
})
}(jQuery);
================================================
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/alert.js
================================================
/* ========================================================================
* Bootstrap: alert.js v3.4.1
* https://getbootstrap.com/docs/3.4/javascript/#alerts
* ========================================================================
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// ALERT CLASS DEFINITION
// ======================
var dismiss = '[data-dismiss="alert"]'
var Alert = function (el) {
$(el).on('click', dismiss, this.close)
}
Alert.VERSION = '3.4.1'
Alert.TRANSITION_DURATION = 150
Alert.prototype.close = function (e) {
var $this = $(this)
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
selector = selector === '#' ? [] : selector
var $parent = $(document).find(selector)
if (e) e.preventDefault()
if (!$parent.length) {
$parent = $this.closest('.alert')
}
$parent.trigger(e = $.Event('close.bs.alert'))
if (e.isDefaultPrevented()) return
$parent.removeClass('in')
function removeElement() {
// detach from parent, fire event then clean up data
$parent.detach().trigger('closed.bs.alert').remove()
}
$.support.transition && $parent.hasClass('fade') ?
$parent
.one('bsTransitionEnd', removeElement)
.emulateTransitionEnd(Alert.TRANSITION_DURATION) :
removeElement()
}
// ALERT PLUGIN DEFINITION
// =======================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.alert')
if (!data) $this.data('bs.alert', (data = new Alert(this)))
if (typeof option == 'string') data[option].call($this)
})
}
var old = $.fn.alert
$.fn.alert = Plugin
$.fn.alert.Constructor = Alert
// ALERT NO CONFLICT
// =================
$.fn.alert.noConflict = function () {
$.fn.alert = old
return this
}
// ALERT DATA-API
// ==============
$(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
}(jQuery);
================================================
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/button.js
================================================
/* ========================================================================
* Bootstrap: button.js v3.4.1
* https://getbootstrap.com/docs/3.4/javascript/#buttons
* ========================================================================
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// BUTTON PUBLIC CLASS DEFINITION
// ==============================
var Button = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, Button.DEFAULTS, options)
this.isLoading = false
}
Button.VERSION = '3.4.1'
Button.DEFAULTS = {
loadingText: 'loading...'
}
Button.prototype.setState = function (state) {
var d = 'disabled'
var $el = this.$element
var val = $el.is('input') ? 'val' : 'html'
var data = $el.data()
state += 'Text'
if (data.resetText == null) $el.data('resetText', $el[val]())
// push to event loop to allow forms to submit
setTimeout($.proxy(function () {
$el[val](data[state] == null ? this.options[state] : data[state])
if (state == 'loadingText') {
this.isLoading = true
$el.addClass(d).attr(d, d).prop(d, true)
} else if (this.isLoading) {
this.isLoading = false
$el.removeClass(d).removeAttr(d).prop(d, false)
}
}, this), 0)
}
Button.prototype.toggle = function () {
var changed = true
var $parent = this.$element.closest('[data-toggle="buttons"]')
if ($parent.length) {
var $input = this.$element.find('input')
if ($input.prop('type') == 'radio') {
if ($input.prop('checked')) changed = false
$parent.find('.active').removeClass('active')
this.$element.addClass('active')
} else if ($input.prop('type') == 'checkbox') {
if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
this.$element.toggleClass('active')
}
$input.prop('checked', this.$element.hasClass('active'))
if (changed) $input.trigger('change')
} else {
this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
this.$element.toggleClass('active')
}
}
// BUTTON PLUGIN DEFINITION
// ========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.button')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.button', (data = new Button(this, options)))
if (option == 'toggle') data.toggle()
else if (option) data.setState(option)
})
}
var old = $.fn.button
$.fn.button = Plugin
$.fn.button.Constructor = Button
// BUTTON NO CONFLICT
// ==================
$.fn.button.noConflict = function () {
$.fn.button = old
return this
}
// BUTTON DATA-API
// ===============
$(document)
.on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
var $btn = $(e.target).closest('.btn')
Plugin.call($btn, 'toggle')
if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
// Prevent double click on radios, and the double selections (so cancellation) on checkboxes
e.preventDefault()
// The target component still receive the focus
if ($btn.is('input,button')) $btn.trigger('focus')
else $btn.find('input:visible,button:visible').first().trigger('focus')
}
})
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
})
}(jQuery);
================================================
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/carousel.js
================================================
/* ========================================================================
* Bootstrap: carousel.js v3.4.1
* https://getbootstrap.com/docs/3.4/javascript/#carousel
* ========================================================================
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// CAROUSEL CLASS DEFINITION
// =========================
var Carousel = function (element, options) {
this.$element = $(element)
this.$indicators = this.$element.find('.carousel-indicators')
this.options = options
this.paused = null
this.sliding = null
this.interval = null
this.$active = null
this.$items = null
this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
.on('mouseenter.bs.carousel', $.proxy(this.pause, this))
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
}
Carousel.VERSION = '3.4.1'
Carousel.TRANSITION_DURATION = 600
Carousel.DEFAULTS = {
interval: 5000,
pause: 'hover',
wrap: true,
keyboard: true
}
Carousel.prototype.keydown = function (e) {
if (/input|textarea/i.test(e.target.tagName)) return
switch (e.which) {
case 37: this.prev(); break
case 39: this.next(); break
default: return
}
e.preventDefault()
}
Carousel.prototype.cycle = function (e) {
e || (this.paused = false)
this.interval && clearInterval(this.interval)
this.options.interval
&& !this.paused
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
return this
}
Carousel.prototype.getItemIndex = function (item) {
this.$items = item.parent().children('.item')
return this.$items.index(item || this.$active)
}
Carousel.prototype.getItemForDirection = function (direction, active) {
var activeIndex = this.getItemIndex(active)
var willWrap = (direction == 'prev' && activeIndex === 0)
|| (direction == 'next' && activeIndex == (this.$items.length - 1))
if (willWrap && !this.options.wrap) return active
var delta = direction == 'prev' ? -1 : 1
var itemIndex = (activeIndex + delta) % this.$items.length
return this.$items.eq(itemIndex)
}
Carousel.prototype.to = function (pos) {
var that = this
var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
if (pos > (this.$items.length - 1) || pos < 0) return
if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
if (activeIndex == pos) return this.pause().cycle()
return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
}
Carousel.prototype.pause = function (e) {
e || (this.paused = true)
if (this.$element.find('.next, .prev').length && $.support.transition) {
this.$element.trigger($.support.transition.end)
this.cycle(true)
}
this.interval = clearInterval(this.interval)
return this
}
Carousel.prototype.next = function () {
if (this.sliding) return
return this.slide('next')
}
Carousel.prototype.prev = function () {
if (this.sliding) return
return this.slide('prev')
}
Carousel.prototype.slide = function (type, next) {
var $active = this.$element.find('.item.active')
var $next = next || this.getItemForDirection(type, $active)
var isCycling = this.interval
var direction = type == 'next' ? 'left' : 'right'
var that = this
if ($next.hasClass('active')) return (this.sliding = false)
var relatedTarget = $next[0]
var slideEvent = $.Event('slide.bs.carousel', {
relatedTarget: relatedTarget,
direction: direction
})
this.$element.trigger(slideEvent)
if (slideEvent.isDefaultPrevented()) return
this.sliding = true
isCycling && this.pause()
if (this.$indicators.length) {
this.$indicators.find('.active').removeClass('active')
var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
$nextIndicator && $nextIndicator.addClass('active')
}
var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
if ($.support.transition && this.$element.hasClass('slide')) {
$next.addClass(type)
if (typeof $next === 'object' && $next.length) {
$next[0].offsetWidth // force reflow
}
$active.addClass(direction)
$next.addClass(direction)
$active
.one('bsTransitionEnd', function () {
$next.removeClass([type, direction].join(' ')).addClass('active')
$active.removeClass(['active', direction].join(' '))
that.sliding = false
setTimeout(function () {
that.$element.trigger(slidEvent)
}, 0)
})
.emulateTransitionEnd(Carousel.TRANSITION_DURATION)
} else {
$active.removeClass('active')
$next.addClass('active')
this.sliding = false
this.$element.trigger(slidEvent)
}
isCycling && this.cycle()
return this
}
// CAROUSEL PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.carousel')
var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
var action = typeof option == 'string' ? option : options.slide
if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
if (typeof option == 'number') data.to(option)
else if (action) data[action]()
else if (options.interval) data.pause().cycle()
})
}
var old = $.fn.carousel
$.fn.carousel = Plugin
$.fn.carousel.Constructor = Carousel
// CAROUSEL NO CONFLICT
// ====================
$.fn.carousel.noConflict = function () {
$.fn.carousel = old
return this
}
// CAROUSEL DATA-API
// =================
var clickHandler = function (e) {
var $this = $(this)
var href = $this.attr('href')
if (href) {
href = href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
}
var target = $this.attr('data-target') || href
var $target = $(document).find(target)
if (!$target.hasClass('carousel')) return
var options = $.extend({}, $target.data(), $this.data())
var slideIndex = $this.attr('data-slide-to')
if (slideIndex) options.interval = false
Plugin.call($target, options)
if (slideIndex) {
$target.data('bs.carousel').to(slideIndex)
}
e.preventDefault()
}
$(document)
.on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
.on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
$(window).on('load', function () {
$('[data-ride="carousel"]').each(function () {
var $carousel = $(this)
Plugin.call($carousel, $carousel.data())
})
})
}(jQuery);
================================================
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/collapse.js
================================================
/* ========================================================================
* Bootstrap: collapse.js v3.4.1
* https://getbootstrap.com/docs/3.4/javascript/#collapse
* ========================================================================
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
/* jshint latedef: false */
+function ($) {
'use strict';
// COLLAPSE PUBLIC CLASS DEFINITION
// ================================
var Collapse = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, Collapse.DEFAULTS, options)
this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
'[data-toggle="collapse"][data-target="#' + element.id + '"]')
this.transitioning = null
if (this.options.parent) {
this.$parent = this.getParent()
} else {
this.addAriaAndCollapsedClass(this.$element, this.$trigger)
}
if (this.options.toggle) this.toggle()
}
Collapse.VERSION = '3.4.1'
Collapse.TRANSITION_DURATION = 350
Collapse.DEFAULTS = {
toggle: true
}
Collapse.prototype.dimension = function () {
var hasWidth = this.$element.hasClass('width')
return hasWidth ? 'width' : 'height'
}
Collapse.prototype.show = function () {
if (this.transitioning || this.$element.hasClass('in')) return
var activesData
var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
if (actives && actives.length) {
activesData = actives.data('bs.collapse')
if (activesData && activesData.transitioning) return
}
var startEvent = $.Event('show.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
if (actives && actives.length) {
Plugin.call(actives, 'hide')
activesData || actives.data('bs.collapse', null)
}
var dimension = this.dimension()
this.$element
.removeClass('collapse')
.addClass('collapsing')[dimension](0)
.attr('aria-expanded', true)
this.$trigger
.removeClass('collapsed')
.attr('aria-expanded', true)
this.transitioning = 1
var complete = function () {
this.$element
.removeClass('collapsing')
.addClass('collapse in')[dimension]('')
this.transitioning = 0
this.$element
.trigger('shown.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
var scrollSize = $.camelCase(['scroll', dimension].join('-'))
this.$element
.one('bsTransitionEnd', $.proxy(complete, this))
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
}
Collapse.prototype.hide = function () {
if (this.transitioning || !this.$element.hasClass('in')) return
var startEvent = $.Event('hide.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
var dimension = this.dimension()
this.$element[dimension](this.$element[dimension]())[0].offsetHeight
this.$element
.addClass('collapsing')
.removeClass('collapse in')
.attr('aria-expanded', false)
this.$trigger
.addClass('collapsed')
.attr('aria-expanded', false)
this.transitioning = 1
var complete = function () {
this.transitioning = 0
this.$element
.removeClass('collapsing')
.addClass('collapse')
.trigger('hidden.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
this.$element
[dimension](0)
.one('bsTransitionEnd', $.proxy(complete, this))
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)
}
Collapse.prototype.toggle = function () {
this[this.$element.hasClass('in') ? 'hide' : 'show']()
}
Collapse.prototype.getParent = function () {
return $(document).find(this.options.parent)
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
.each($.proxy(function (i, element) {
var $element = $(element)
this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
}, this))
.end()
}
Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
var isOpen = $element.hasClass('in')
$element.attr('aria-expanded', isOpen)
$trigger
.toggleClass('collapsed', !isOpen)
.attr('aria-expanded', isOpen)
}
function getTargetFromTrigger($trigger) {
var href
var target = $trigger.attr('data-target')
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
return $(document).find(target)
}
// COLLAPSE PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.collapse')
var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.collapse
$.fn.collapse = Plugin
$.fn.collapse.Constructor = Collapse
// COLLAPSE NO CONFLICT
// ====================
$.fn.collapse.noConflict = function () {
$.fn.collapse = old
return this
}
// COLLAPSE DATA-API
// =================
$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
var $this = $(this)
if (!$this.attr('data-target')) e.preventDefault()
var $target = getTargetFromTrigger($this)
var data = $target.data('bs.collapse')
var option = data ? 'toggle' : $this.data()
Plugin.call($target, option)
})
}(jQuery);
================================================
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js
================================================
/* ========================================================================
* Bootstrap: dropdown.js v3.4.1
* https://getbootstrap.com/docs/3.4/javascript/#dropdowns
* ========================================================================
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// DROPDOWN CLASS DEFINITION
// =========================
var backdrop = '.dropdown-backdrop'
var toggle = '[data-toggle="dropdown"]'
var Dropdown = function (element) {
$(element).on('click.bs.dropdown', this.toggle)
}
Dropdown.VERSION = '3.4.1'
function getParent($this) {
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector !== '#' ? $(document).find(selector) : null
return $parent && $parent.length ? $parent : $this.parent()
}
function clearMenus(e) {
if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
var $this = $(this)
var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
})
}
Dropdown.prototype.toggle = function (e) {
var $this = $(this)
if ($this.is('.disabled, :disabled')) return
var $parent = getParent($this)
var isActive = $parent.hasClass('open')
clearMenus()
if (!isActive) {
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
// if mobile we use a backdrop because click events don't delegate
$(document.createElement('div'))
.addClass('dropdown-backdrop')
.insertAfter($(this))
.on('click', clearMenus)
}
var relatedTarget = { relatedTarget: this }
$parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this
.trigger('focus')
.attr('aria-expanded', 'true')
$parent
.toggleClass('open')
.trigger($.Event('shown.bs.dropdown', relatedTarget))
}
return false
}
Dropdown.prototype.keydown = function (e) {
if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
var $this = $(this)
e.preventDefault()
e.stopPropagation()
if ($this.is('.disabled, :disabled')) return
var $parent = getParent($this)
var isActive = $parent.hasClass('open')
if (!isActive && e.which != 27 || isActive && e.which == 27) {
if (e.which == 27) $parent.find(toggle).trigger('focus')
return $this.trigger('click')
}
var desc = ' li:not(.disabled):visible a'
var $items = $parent.find('.dropdown-menu' + desc)
if (!$items.length) return
var index = $items.index(e.target)
if (e.which == 38 && index > 0) index-- // up
if (e.which == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0
$items.eq(index).trigger('focus')
}
// DROPDOWN PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.dropdown')
if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
if (typeof option == 'string') data[option].call($this)
})
}
var old = $.fn.dropdown
$.fn.dropdown = Plugin
$.fn.dropdown.Constructor = Dropdown
// DROPDOWN NO CONFLICT
// ====================
$.fn.dropdown.noConflict = function () {
$.fn.dropdown = old
return this
}
// APPLY TO STANDARD DROPDOWN ELEMENTS
// ===================================
$(document)
.on('click.bs.dropdown.data-api', clearMenus)
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
}(jQuery);
================================================
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/modal.js
================================================
/* ========================================================================
* Bootstrap: modal.js v3.4.1
* https://getbootstrap.com/docs/3.4/javascript/#modals
* ========================================================================
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// MODAL CLASS DEFINITION
// ======================
var Modal = function (element, options) {
this.options = options
this.$body = $(document.body)
this.$element = $(element)
this.$dialog = this.$element.find('.modal-dialog')
this.$backdrop = null
this.isShown = null
this.originalBodyPad = null
this.scrollbarWidth = 0
this.ignoreBackdropClick = false
this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'
if (this.options.remote) {
this.$element
.find('.modal-content')
.load(this.options.remote, $.proxy(function () {
this.$element.trigger('loaded.bs.modal')
}, this))
}
}
Modal.VERSION = '3.4.1'
Modal.TRANSITION_DURATION = 300
Modal.BACKDROP_TRANSITION_DURATION = 150
Modal.DEFAULTS = {
backdrop: true,
keyboard: true,
show: true
}
Modal.prototype.toggle = function (_relatedTarget) {
return this.isShown ? this.hide() : this.show(_relatedTarget)
}
Modal.prototype.show = function (_relatedTarget) {
var that = this
var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
this.$element.trigger(e)
if (this.isShown || e.isDefaultPrevented()) return
this.isShown = true
this.checkScrollbar()
this.setScrollbar()
this.$body.addClass('modal-open')
this.escape()
this.resize()
this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
this.$dialog.on('mousedown.dismiss.bs.modal', function () {
that.$element.one('mouseup.dismiss.bs.modal', function (e) {
if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
})
})
this.backdrop(function () {
var transition = $.support.transition && that.$element.hasClass('fade')
if (!that.$element.parent().length) {
that.$element.appendTo(that.$body) // don't move modals dom position
}
that.$element
.show()
.scrollTop(0)
that.adjustDialog()
if (transition) {
that.$element[0].offsetWidth // force reflow
}
that.$element.addClass('in')
that.enforceFocus()
var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
transition ?
that.$dialog // wait for modal to slide in
.one('bsTransitionEnd', function () {
that.$element.trigger('focus').trigger(e)
})
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
that.$element.trigger('focus').trigger(e)
})
}
Modal.prototype.hide = function (e) {
if (e) e.preventDefault()
e = $.Event('hide.bs.modal')
this.$element.trigger(e)
if (!this.isShown || e.isDefaultPrevented()) return
this.isShown = false
this.escape()
this.resize()
$(document).off('focusin.bs.modal')
this.$element
.removeClass('in')
.off('click.dismiss.bs.modal')
.off('mouseup.dismiss.bs.modal')
this.$dialog.off('mousedown.dismiss.bs.modal')
$.support.transition && this.$element.hasClass('fade') ?
this.$element
.one('bsTransitionEnd', $.proxy(this.hideModal, this))
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
this.hideModal()
}
Modal.prototype.enforceFocus = function () {
$(document)
.off('focusin.bs.modal') // guard against infinite focus loop
.on('focusin.bs.modal', $.proxy(function (e) {
if (document !== e.target &&
this.$element[0] !== e.target &&
!this.$element.has(e.target).length) {
this.$element.trigger('focus')
}
}, this))
}
Modal.prototype.escape = function () {
if (this.isShown && this.options.keyboard) {
this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
e.which == 27 && this.hide()
}, this))
} else if (!this.isShown) {
this.$element.off('keydown.dismiss.bs.modal')
}
}
Modal.prototype.resize = function () {
if (this.isShown) {
$(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
} else {
$(window).off('resize.bs.modal')
}
}
Modal.prototype.hideModal = function () {
var that = this
this.$element.hide()
this.backdrop(function () {
that.$body.removeClass('modal-open')
that.resetAdjustments()
that.resetScrollbar()
that.$element.trigger('hidden.bs.modal')
})
}
Modal.prototype.removeBackdrop = function () {
this.$backdrop && this.$backdrop.remove()
this.$backdrop = null
}
Modal.prototype.backdrop = function (callback) {
var that = this
var animate = this.$element.hasClass('fade') ? 'fade' : ''
if (this.isShown && this.options.backdrop) {
var doAnimate = $.support.transition && animate
this.$backdrop = $(document.createElement('div'))
.addClass('modal-backdrop ' + animate)
.appendTo(this.$body)
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
if (this.ignoreBackdropClick) {
this.ignoreBackdropClick = false
return
}
if (e.target !== e.currentTarget) return
this.options.backdrop == 'static'
? this.$element[0].focus()
: this.hide()
}, this))
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
this.$backdrop.addClass('in')
if (!callback) return
doAnimate ?
this.$backdrop
.one('bsTransitionEnd', callback)
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
callback()
} else if (!this.isShown && this.$backdrop) {
this.$backdrop.removeClass('in')
var callbackRemove = function () {
that.removeBackdrop()
callback && callback()
}
$.support.transition && this.$element.hasClass('fade') ?
this.$backdrop
.one('bsTransitionEnd', callbackRemove)
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
callbackRemove()
} else if (callback) {
callback()
}
}
// these following methods are used to handle overflowing modals
Modal.prototype.handleUpdate = function () {
this.adjustDialog()
}
Modal.prototype.adjustDialog = function () {
var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
this.$element.css({
paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
})
}
Modal.prototype.resetAdjustments = function () {
this.$element.css({
paddingLeft: '',
paddingRight: ''
})
}
Modal.prototype.checkScrollbar = function () {
var fullWindowWidth = window.innerWidth
if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
var documentElementRect = document.documentElement.getBoundingClientRect()
fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
}
this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
this.scrollbarWidth = this.measureScrollbar()
}
Modal.prototype.setScrollbar = function () {
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
this.originalBodyPad = document.body.style.paddingRight || ''
var scrollbarWidth = this.scrollbarWidth
if (this.bodyIsOverflowing) {
this.$body.css('padding-right', bodyPad + scrollbarWidth)
$(this.fixedContent).each(function (index, element) {
var actualPadding = element.style.paddingRight
var calculatedPadding = $(element).css('padding-right')
$(element)
.data('padding-right', actualPadding)
.css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')
})
}
}
Modal.prototype.resetScrollbar = function () {
this.$body.css('padding-right', this.originalBodyPad)
$(this.fixedContent).each(function (index, element) {
var padding = $(element).data('padding-right')
$(element).removeData('padding-right')
element.style.paddingRight = padding ? padding : ''
})
}
Modal.prototype.measureScrollbar = function () { // thx walsh
var scrollDiv = document.createElement('div')
scrollDiv.className = 'modal-scrollbar-measure'
this.$body.append(scrollDiv)
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
this.$body[0].removeChild(scrollDiv)
return scrollbarWidth
}
// MODAL PLUGIN DEFINITION
// =======================
function Plugin(option, _relatedTarget) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.modal')
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
if (typeof option == 'string') data[option](_relatedTarget)
else if (options.show) data.show(_relatedTarget)
})
}
var old = $.fn.modal
$.fn.modal = Plugin
$.fn.modal.Constructor = Modal
// MODAL NO CONFLICT
// =================
$.fn.modal.noConflict = function () {
$.fn.modal = old
return this
}
// MODAL DATA-API
// ==============
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
var $this = $(this)
var href = $this.attr('href')
var target = $this.attr('data-target') ||
(href && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
var $target = $(document).find(target)
var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
if ($this.is('a')) e.preventDefault()
$target.one('show.bs.modal', function (showEvent) {
if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
$target.one('hidden.bs.modal', function () {
$this.is(':visible') && $this.trigger('focus')
})
})
Plugin.call($target, option, this)
})
}(jQuery);
================================================
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/popover.js
================================================
/* ========================================================================
* Bootstrap: popover.js v3.4.1
* https://getbootstrap.com/docs/3.4/javascript/#popovers
* ========================================================================
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// POPOVER PUBLIC CLASS DEFINITION
// ===============================
var Popover = function (element, options) {
this.init('popover', element, options)
}
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
Popover.VERSION = '3.4.1'
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right',
trigger: 'click',
content: '',
template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
})
// NOTE: POPOVER EXTENDS tooltip.js
// ================================
Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
Popover.prototype.constructor = Popover
Popover.prototype.getDefaults = function () {
return Popover.DEFAULTS
}
Popover.prototype.setContent = function () {
var $tip = this.tip()
var title = this.getTitle()
var content = this.getContent()
if (this.options.html) {
var typeContent = typeof content
if (this.options.sanitize) {
title = this.sanitizeHtml(title)
if (typeContent === 'string') {
content = this.sanitizeHtml(content)
}
}
$tip.find('.popover-title').html(title)
$tip.find('.popover-content').children().detach().end()[
typeContent === 'string' ? 'html' : 'append'
](content)
} else {
$tip.find('.popover-title').text(title)
$tip.find('.popover-content').children().detach().end().text(content)
}
$tip.removeClass('fade top bottom left right in')
// IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
// this manually by checking the contents.
if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
}
Popover.prototype.hasContent = function () {
return this.getTitle() || this.getContent()
}
Popover.prototype.getContent = function () {
var $e = this.$element
var o = this.options
return $e.attr('data-content')
|| (typeof o.content == 'function' ?
o.content.call($e[0]) :
o.content)
}
Popover.prototype.arrow = function () {
return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
}
// POPOVER PLUGIN DEFINITION
// =========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.popover')
var options = typeof option == 'object' && option
if (!data && /destroy|hide/.test(option)) return
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.popover
$.fn.popover = Plugin
$.fn.popover.Constructor = Popover
// POPOVER NO CONFLICT
// ===================
$.fn.popover.noConflict = function () {
$.fn.popover = old
return this
}
}(jQuery);
================================================
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js
================================================
/* ========================================================================
* Bootstrap: scrollspy.js v3.4.1
* https://getbootstrap.com/docs/3.4/javascript/#scrollspy
* ========================================================================
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// SCROLLSPY CLASS DEFINITION
// ==========================
function ScrollSpy(element, options) {
this.$body = $(document.body)
this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
this.selector = (this.options.target || '') + ' .nav li > a'
this.offsets = []
this.targets = []
this.activeTarget = null
this.scrollHeight = 0
this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
this.refresh()
this.process()
}
ScrollSpy.VERSION = '3.4.1'
ScrollSpy.DEFAULTS = {
offset: 10
}
ScrollSpy.prototype.getScrollHeight = function () {
return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
}
ScrollSpy.prototype.refresh = function () {
var that = this
var offsetMethod = 'offset'
var offsetBase = 0
this.offsets = []
this.targets = []
this.scrollHeight = this.getScrollHeight()
if (!$.isWindow(this.$scrollElement[0])) {
offsetMethod = 'position'
offsetBase = this.$scrollElement.scrollTop()
}
this.$body
.find(this.selector)
.map(function () {
var $el = $(this)
var href = $el.data('target') || $el.attr('href')
var $href = /^#./.test(href) && $(href)
return ($href
&& $href.length
&& $href.is(':visible')
&& [[$href[offsetMethod]().top + offsetBase, href]]) || null
})
.sort(function (a, b) { return a[0] - b[0] })
.each(function () {
that.offsets.push(this[0])
that.targets.push(this[1])
})
}
ScrollSpy.prototype.process = function () {
var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
var scrollHeight = this.getScrollHeight()
var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
var offsets = this.offsets
var targets = this.targets
var activeTarget = this.activeTarget
var i
if (this.scrollHeight != scrollHeight) {
this.refresh()
}
if (scrollTop >= maxScroll) {
return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
}
if (activeTarget && scrollTop < offsets[0]) {
this.activeTarget = null
return this.clear()
}
for (i = offsets.length; i--;) {
activeTarget != targets[i]
&& scrollTop >= offsets[i]
&& (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
&& this.activate(targets[i])
}
}
ScrollSpy.prototype.activate = function (target) {
this.activeTarget = target
this.clear()
var selector = this.selector +
'[data-target="' + target + '"],' +
this.selector + '[href="' + target + '"]'
var active = $(selector)
.parents('li')
.addClass('active')
if (active.parent('.dropdown-menu').length) {
active = active
.closest('li.dropdown')
.addClass('active')
}
active.trigger('activate.bs.scrollspy')
}
ScrollSpy.prototype.clear = function () {
$(this.selector)
.parentsUntil(this.options.target, '.active')
.removeClass('active')
}
// SCROLLSPY PLUGIN DEFINITION
// ===========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.scrollspy')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.scrollspy
$.fn.scrollspy = Plugin
$.fn.scrollspy.Constructor = ScrollSpy
// SCROLLSPY NO CONFLICT
// =====================
$.fn.scrollspy.noConflict = function () {
$.fn.scrollspy = old
return this
}
// SCROLLSPY DATA-API
// ==================
$(window).on('load.bs.scrollspy.data-api', function () {
$('[data-spy="scroll"]').each(function () {
var $spy = $(this)
Plugin.call($spy, $spy.data())
})
})
}(jQuery);
================================================
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/tab.js
================================================
/* ========================================================================
* Bootstrap: tab.js v3.4.1
* https://getbootstrap.com/docs/3.4/javascript/#tabs
* ========================================================================
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// TAB CLASS DEFINITION
// ====================
var Tab = function (element) {
// jscs:disable requireDollarBeforejQueryAssignment
this.element = $(element)
// jscs:enable requireDollarBeforejQueryAssignment
}
Tab.VERSION = '3.4.1'
Tab.TRANSITION_DURATION = 150
Tab.prototype.show = function () {
var $this = this.element
var $ul = $this.closest('ul:not(.dropdown-menu)')
var selector = $this.data('target')
if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
if ($this.parent('li').hasClass('active')) return
var $previous = $ul.find('.active:last a')
var hideEvent = $.Event('hide.bs.tab', {
relatedTarget: $this[0]
})
var showEvent = $.Event('show.bs.tab', {
relatedTarget: $previous[0]
})
$previous.trigger(hideEvent)
$this.trigger(showEvent)
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
var $target = $(document).find(selector)
this.activate($this.closest('li'), $ul)
this.activate($target, $target.parent(), function () {
$previous.trigger({
type: 'hidden.bs.tab',
relatedTarget: $this[0]
})
$this.trigger({
type: 'shown.bs.tab',
relatedTarget: $previous[0]
})
})
}
Tab.prototype.activate = function (element, container, callback) {
var $active = container.find('> .active')
var transition = callback
&& $.support.transition
&& ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
function next() {
$active
.removeClass('active')
.find('> .dropdown-menu > .active')
.removeClass('active')
.end()
.find('[data-toggle="tab"]')
.attr('aria-expanded', false)
element
.addClass('active')
.find('[data-toggle="tab"]')
.attr('aria-expanded', true)
if (transition) {
element[0].offsetWidth // reflow for transition
element.addClass('in')
} else {
element.removeClass('fade')
}
if (element.parent('.dropdown-menu').length) {
element
.closest('li.dropdown')
.addClass('active')
.end()
.find('[data-toggle="tab"]')
.attr('aria-expanded', true)
}
callback && callback()
}
$active.length && transition ?
$active
.one('bsTransitionEnd', next)
.emulateTransitionEnd(Tab.TRANSITION_DURATION) :
next()
$active.removeClass('in')
}
// TAB PLUGIN DEFINITION
// =====================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.tab')
if (!data) $this.data('bs.tab', (data = new Tab(this)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.tab
$.fn.tab = Plugin
$.fn.tab.Constructor = Tab
// TAB NO CONFLICT
// ===============
$.fn.tab.noConflict = function () {
$.fn.tab = old
return this
}
// TAB DATA-API
// ============
var clickHandler = function (e) {
e.preventDefault()
Plugin.call($(this), 'show')
}
$(document)
.on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
.on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
}(jQuery);
================================================
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js
================================================
/* ========================================================================
* Bootstrap: tooltip.js v3.4.1
* https://getbootstrap.com/docs/3.4/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame
* ========================================================================
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']
var uriAttrs = [
'background',
'cite',
'href',
'itemtype',
'longdesc',
'poster',
'src',
'xlink:href'
]
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
var DefaultWhitelist = {
// Global attributes allowed on any supplied element below.
'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
a: ['target', 'href', 'title', 'rel'],
area: [],
b: [],
br: [],
col: [],
code: [],
div: [],
em: [],
hr: [],
h1: [],
h2: [],
h3: [],
h4: [],
h5: [],
h6: [],
i: [],
img: ['src', 'alt', 'title', 'width', 'height'],
li: [],
ol: [],
p: [],
pre: [],
s: [],
small: [],
span: [],
sub: [],
sup: [],
strong: [],
u: [],
ul: []
}
/**
* A pattern that recognizes a commonly useful subset of URLs that are safe.
*
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
*/
var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
/**
* A pattern that matches safe data URLs. Only matches image, video and audio types.
*
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
*/
var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i
function allowedAttribute(attr, allowedAttributeList) {
var attrName = attr.nodeName.toLowerCase()
if ($.inArray(attrName, allowedAttributeList) !== -1) {
if ($.inArray(attrName, uriAttrs) !== -1) {
return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
}
return true
}
var regExp = $(allowedAttributeList).filter(function (index, value) {
return value instanceof RegExp
})
// Check if a regular expression validates the attribute.
for (var i = 0, l = regExp.length; i < l; i++) {
if (attrName.match(regExp[i])) {
return true
}
}
return false
}
function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
if (unsafeHtml.length === 0) {
return unsafeHtml
}
if (sanitizeFn && typeof sanitizeFn === 'function') {
return sanitizeFn(unsafeHtml)
}
// IE 8 and below don't support createHTMLDocument
if (!document.implementation || !document.implementation.createHTMLDocument) {
return unsafeHtml
}
var createdDocument = document.implementation.createHTMLDocument('sanitization')
createdDocument.body.innerHTML = unsafeHtml
var whitelistKeys = $.map(whiteList, function (el, i) { return i })
var elements = $(createdDocument.body).find('*')
for (var i = 0, len = elements.length; i < len; i++) {
var el = elements[i]
var elName = el.nodeName.toLowerCase()
if ($.inArray(elName, whitelistKeys) === -1) {
el.parentNode.removeChild(el)
continue
}
var attributeList = $.map(el.attributes, function (el) { return el })
var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])
for (var j = 0, len2 = attributeList.length; j < len2; j++) {
if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
el.removeAttribute(attributeList[j].nodeName)
}
}
}
return createdDocument.body.innerHTML
}
// TOOLTIP PUBLIC CLASS DEFINITION
// ===============================
var Tooltip = function (element, options) {
this.type = null
this.options = null
this.enabled = null
this.timeout = null
this.hoverState = null
this.$element = null
this.inState = null
this.init('tooltip', element, options)
}
Tooltip.VERSION = '3.4.1'
Tooltip.TRANSITION_DURATION = 150
Tooltip.DEFAULTS = {
animation: true,
placement: 'top',
selector: false,
template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div cl
Showing preview only (310K chars total). Download the full file or copy to clipboard to get everything.
gitextract_g_x4juwx/ ├── .changeset/ │ ├── README.md │ └── config.json ├── .editorconfig ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── architecture_decision_record.md │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── actions/ │ │ ├── lint-merge-report/ │ │ │ ├── action.yml │ │ │ └── merge-lint-reports.mjs │ │ └── setup-node/ │ │ └── action.yml │ ├── copilot-instructions.md │ ├── dependabot.yml │ └── workflows/ │ ├── changeset.yml │ ├── clean-demo.yml │ ├── demo.yml │ ├── dependencies.yml │ ├── icons.yml │ ├── pr-demo.yml │ ├── pr-lint.yml │ ├── pr-test.yml │ ├── pre-release.yml │ ├── visual-testing.yml │ └── yarn-deduplicate.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .nojekyll ├── .npmignore ├── .npmrc ├── .prettierignore ├── .prettierrc.js ├── .sass-lint.yml ├── .semgrepignore ├── .tool-versions ├── .vscode/ │ └── settings.json ├── CONTRIBUTING.md ├── I18n.md ├── LICENSE ├── README.md ├── SECURITY.md ├── babel.config.js ├── dependencies-latest.txt ├── docs/ │ ├── adr-2024-04-add-support-to-esm.md │ ├── adr-composition-vs-api.md │ ├── adr-css-modules.md │ ├── adr-data-test.md │ ├── adr-dependencies.md │ └── adr-rework-talend-scripts.md ├── eslint.config.mjs ├── fork/ │ ├── bootstrap-sass/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── assets/ │ │ │ ├── images/ │ │ │ │ └── .keep │ │ │ ├── javascripts/ │ │ │ │ ├── bootstrap/ │ │ │ │ │ ├── affix.js │ │ │ │ │ ├── alert.js │ │ │ │ │ ├── button.js │ │ │ │ │ ├── carousel.js │ │ │ │ │ ├── collapse.js │ │ │ │ │ ├── dropdown.js │ │ │ │ │ ├── modal.js │ │ │ │ │ ├── popover.js │ │ │ │ │ ├── scrollspy.js │ │ │ │ │ ├── tab.js │ │ │ │ │ ├── tooltip.js │ │ │ │ │ └── transition.js │ │ │ │ ├── bootstrap-sprockets.js │ │ │ │ └── bootstrap.js │ │ │ └── stylesheets/ │ │ │ ├── _bootstrap-compass.scss │ │ │ ├── _bootstrap-mincer.scss │ │ │ ├── _bootstrap-sprockets.scss │ │ │ ├── _bootstrap.scss │ │ │ └── bootstrap/ │ │ │ ├── _alerts.scss │ │ │ ├── _badges.scss │ │ │ ├── _breadcrumbs.scss │ │ │ ├── _button-groups.scss │ │ │ ├── _buttons.scss │ │ │ ├── _carousel.scss │ │ │ ├── _close.scss │ │ │ ├── _code.scss │ │ │ ├── _component-animations.scss │ │ │ ├── _dropdowns.scss │ │ │ ├── _forms.scss │ │ │ ├── _glyphicons.scss │ │ │ ├── _grid.scss │ │ │ ├── _input-groups.scss │ │ │ ├── _jumbotron.scss │ │ │ ├── _labels.scss │ │ │ ├── _list-group.scss │ │ │ ├── _media.scss │ │ │ ├── _mixins.scss │ │ │ ├── _modals.scss │ │ │ ├── _navbar.scss │ │ │ ├── _navs.scss │ │ │ ├── _normalize.scss │ │ │ ├── _pager.scss │ │ │ ├── _pagination.scss │ │ │ ├── _panels.scss │ │ │ ├── _popovers.scss │ │ │ ├── _print.scss │ │ │ ├── _progress-bars.scss │ │ │ ├── _responsive-embed.scss │ │ │ ├── _responsive-utilities.scss │ │ │ ├── _scaffolding.scss │ │ │ ├── _tables.scss │ │ │ ├── _theme.scss │ │ │ ├── _thumbnails.scss │ │ │ ├── _tooltip.scss │ │ │ ├── _type.scss │ │ │ ├── _utilities.scss │ │ │ ├── _variables.scss │ │ │ ├── _wells.scss │ │ │ └── mixins/ │ │ │ ├── _alerts.scss │ │ │ ├── _background-variant.scss │ │ │ ├── _border-radius.scss │ │ │ ├── _buttons.scss │ │ │ ├── _center-block.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _forms.scss │ │ │ ├── _gradients.scss │ │ │ ├── _grid-framework.scss │ │ │ ├── _grid.scss │ │ │ ├── _hide-text.scss │ │ │ ├── _image.scss │ │ │ ├── _labels.scss │ │ │ ├── _list-group.scss │ │ │ ├── _nav-divider.scss │ │ │ ├── _nav-vertical-align.scss │ │ │ ├── _opacity.scss │ │ │ ├── _pagination.scss │ │ │ ├── _panels.scss │ │ │ ├── _progress-bar.scss │ │ │ ├── _reset-filter.scss │ │ │ ├── _reset-text.scss │ │ │ ├── _resize.scss │ │ │ ├── _responsive-visibility.scss │ │ │ ├── _size.scss │ │ │ ├── _tab-focus.scss │ │ │ ├── _table-row.scss │ │ │ ├── _text-emphasis.scss │ │ │ ├── _text-overflow.scss │ │ │ └── _vendor-prefixes.scss │ │ ├── composer.json │ │ ├── eslint.config.mjs │ │ └── package.json │ ├── dynamic-cdn-webpack-plugin/ │ │ ├── .all-contributorsrc │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── __mocks__/ │ │ │ └── fs.js │ │ ├── eslint.config.mjs │ │ ├── index.js │ │ ├── license │ │ ├── package.json │ │ ├── readme.md │ │ ├── src/ │ │ │ ├── find.js │ │ │ ├── find.test.js │ │ │ ├── get-resolver.js │ │ │ ├── index.js │ │ │ └── resolve-pkg.js │ │ ├── test/ │ │ │ ├── core.test.js │ │ │ ├── fixtures/ │ │ │ │ ├── app/ │ │ │ │ │ ├── async.js │ │ │ │ │ ├── dir/ │ │ │ │ │ │ └── single.js │ │ │ │ │ ├── mix.js │ │ │ │ │ ├── multiple.js │ │ │ │ │ ├── no-export.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── peer-dependencies.js │ │ │ │ │ ├── require-file.js │ │ │ │ │ ├── single.js │ │ │ │ │ └── submodule.js │ │ │ │ ├── duplicate-dependencies/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── nested-dependencies/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ └── optional-peer-deps/ │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── helpers/ │ │ │ │ ├── clean-dir.js │ │ │ │ └── run-webpack.js │ │ │ ├── html-webpack-plugin.test.js │ │ │ ├── optional-peer-dep.test.js │ │ │ └── webpack-manifest-plugin.test.js │ │ └── vitest.config.ts │ ├── json-schema-form-core/ │ │ ├── .gitignore │ │ ├── .jscsrc │ │ ├── .mocharc.json │ │ ├── .travis.yml │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── eslint.config.mjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── canonical-title-map.spec.js │ │ │ ├── canonical-title-map.ts │ │ │ ├── index.js │ │ │ ├── merge.js │ │ │ ├── merge.spec.js │ │ │ ├── module.spec.js │ │ │ ├── resolve.js │ │ │ ├── resolve.spec.js │ │ │ ├── schema-defaults.test.js │ │ │ ├── schema-defaults.ts │ │ │ ├── select.js │ │ │ ├── select.test.js │ │ │ ├── sf-path.test.js │ │ │ ├── sf-path.ts │ │ │ ├── traverse.test.js │ │ │ ├── traverse.ts │ │ │ ├── validate.js │ │ │ └── validate.test.js │ │ ├── talend-scripts.json │ │ ├── test.md │ │ ├── tsconfig.json │ │ ├── vitest.config.ts │ │ └── webpack.config.js │ ├── module-to-cdn/ │ │ ├── .editorconfig │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── .prettierrc.js │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── cache.js │ │ ├── eslint.config.mjs │ │ ├── index.js │ │ ├── index.test.js │ │ ├── jsonschema.json │ │ ├── license │ │ ├── meta/ │ │ │ ├── @angular/ │ │ │ │ ├── animations/ │ │ │ │ │ ├── browser/ │ │ │ │ │ │ └── meta.json │ │ │ │ │ └── meta.json │ │ │ │ ├── common/ │ │ │ │ │ ├── http/ │ │ │ │ │ │ └── meta.json │ │ │ │ │ └── meta.json │ │ │ │ ├── compiler/ │ │ │ │ │ └── meta.json │ │ │ │ ├── core/ │ │ │ │ │ └── meta.json │ │ │ │ ├── forms/ │ │ │ │ │ └── meta.json │ │ │ │ ├── http/ │ │ │ │ │ └── meta.json │ │ │ │ ├── platform-browser/ │ │ │ │ │ └── meta.json │ │ │ │ ├── platform-browser-dynamic/ │ │ │ │ │ └── meta.json │ │ │ │ ├── router/ │ │ │ │ │ └── meta.json │ │ │ │ └── upgrade/ │ │ │ │ ├── meta.json │ │ │ │ └── static/ │ │ │ │ └── meta.json │ │ │ ├── @babel/ │ │ │ │ └── polyfill/ │ │ │ │ └── meta.json │ │ │ ├── @popperjs/ │ │ │ │ └── core/ │ │ │ │ └── meta.json │ │ │ ├── @rooks/ │ │ │ │ └── use-mutation-observer/ │ │ │ │ └── meta.json │ │ │ ├── @sentry/ │ │ │ │ └── browser/ │ │ │ │ └── meta.json │ │ │ ├── aframe/ │ │ │ │ └── meta.json │ │ │ ├── ag-grid/ │ │ │ │ └── meta.json │ │ │ ├── ag-grid-community/ │ │ │ │ └── meta.json │ │ │ ├── ag-grid-enterprise/ │ │ │ │ └── meta.json │ │ │ ├── angular/ │ │ │ │ └── meta.json │ │ │ ├── auth0-lock/ │ │ │ │ └── meta.json │ │ │ ├── axios/ │ │ │ │ └── meta.json │ │ │ ├── babel-polyfill/ │ │ │ │ └── meta.json │ │ │ ├── bootstrap/ │ │ │ │ └── meta.json │ │ │ ├── classnames/ │ │ │ │ └── meta.json │ │ │ ├── core-js/ │ │ │ │ └── meta.json │ │ │ ├── d3/ │ │ │ │ └── meta.json │ │ │ ├── file-saver/ │ │ │ │ └── meta.json │ │ │ ├── focus-outline-manager/ │ │ │ │ └── meta.json │ │ │ ├── history/ │ │ │ │ └── meta.json │ │ │ ├── i18next/ │ │ │ │ └── meta.json │ │ │ ├── immutable/ │ │ │ │ └── meta.json │ │ │ ├── jquery/ │ │ │ │ └── meta.json │ │ │ ├── json-logic-js/ │ │ │ │ └── meta.json │ │ │ ├── jszip/ │ │ │ │ └── meta.json │ │ │ ├── jwt-decode/ │ │ │ │ └── meta.json │ │ │ ├── lodash/ │ │ │ │ └── meta.json │ │ │ ├── mobx/ │ │ │ │ └── meta.json │ │ │ ├── platform/ │ │ │ │ └── meta.json │ │ │ ├── popper.js/ │ │ │ │ └── meta.json │ │ │ ├── preact/ │ │ │ │ └── meta.json │ │ │ ├── preact-compat/ │ │ │ │ └── meta.json │ │ │ ├── prop-types/ │ │ │ │ └── meta.json │ │ │ ├── react/ │ │ │ │ └── meta.json │ │ │ ├── react-ace/ │ │ │ │ └── meta.json │ │ │ ├── react-autowhatever/ │ │ │ │ └── meta.json │ │ │ ├── react-bootstrap/ │ │ │ │ └── meta.json │ │ │ ├── react-css-transition/ │ │ │ │ └── meta.json │ │ │ ├── react-debounce-input/ │ │ │ │ └── meta.json │ │ │ ├── react-dnd/ │ │ │ │ └── meta.json │ │ │ ├── react-dnd-html5-backend/ │ │ │ │ └── meta.json │ │ │ ├── react-dom/ │ │ │ │ └── meta.json │ │ │ ├── react-draggable/ │ │ │ │ └── meta.json │ │ │ ├── react-hook-form/ │ │ │ │ └── meta.json │ │ │ ├── react-i18next/ │ │ │ │ └── meta.json │ │ │ ├── react-is/ │ │ │ │ └── meta.json │ │ │ ├── react-lifecycles-compat/ │ │ │ │ └── meta.json │ │ │ ├── react-popper/ │ │ │ │ └── meta.json │ │ │ ├── react-redux/ │ │ │ │ └── meta.json │ │ │ ├── react-resizable/ │ │ │ │ └── meta.json │ │ │ ├── react-router/ │ │ │ │ └── meta.json │ │ │ ├── react-router-dom/ │ │ │ │ └── meta.json │ │ │ ├── react-side-effect/ │ │ │ │ └── meta.json │ │ │ ├── react-transition-group/ │ │ │ │ └── meta.json │ │ │ ├── react-virtualized/ │ │ │ │ └── meta.json │ │ │ ├── recharts/ │ │ │ │ └── meta.json │ │ │ ├── redux/ │ │ │ │ └── meta.json │ │ │ ├── redux-act/ │ │ │ │ └── meta.json │ │ │ ├── redux-saga/ │ │ │ │ └── meta.json │ │ │ ├── redux-thunk/ │ │ │ │ └── meta.json │ │ │ ├── reflect-metadata/ │ │ │ │ └── meta.json │ │ │ ├── rx/ │ │ │ │ └── meta.json │ │ │ ├── rxjs/ │ │ │ │ └── meta.json │ │ │ ├── scroll-smooth/ │ │ │ │ └── meta.json │ │ │ ├── semantic-ui/ │ │ │ │ └── meta.json │ │ │ ├── simplebar/ │ │ │ │ └── meta.json │ │ │ ├── styled-components/ │ │ │ │ └── meta.json │ │ │ ├── tachyons/ │ │ │ │ └── meta.json │ │ │ ├── three/ │ │ │ │ └── meta.json │ │ │ ├── timezone-support/ │ │ │ │ └── meta.json │ │ │ ├── tooltip.js/ │ │ │ │ └── meta.json │ │ │ ├── uuid/ │ │ │ │ └── meta.json │ │ │ ├── vue/ │ │ │ │ └── meta.json │ │ │ └── zone.js/ │ │ │ └── meta.json │ │ ├── modules.json │ │ ├── modules.test.js │ │ ├── package.json │ │ ├── url.js │ │ ├── version.js │ │ └── vitest.config.ts │ └── react-bootstrap/ │ ├── .babelrc │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── MAINTAINING.md │ ├── README.md │ ├── eslint.config.mjs │ ├── package.json │ ├── server/ │ │ └── ModalSpec.js │ ├── src/ │ │ ├── Accordion.jsx │ │ ├── Alert.jsx │ │ ├── Alert.test.jsx │ │ ├── Badge.jsx │ │ ├── Badge.test.jsx │ │ ├── Breadcrumb.jsx │ │ ├── Breadcrumb.test.jsx │ │ ├── BreadcrumbItem.jsx │ │ ├── BreadcrumbItem.test.jsx │ │ ├── Button.jsx │ │ ├── Button.test.jsx │ │ ├── ButtonGroup.jsx │ │ ├── ButtonGroup.test.jsx │ │ ├── ButtonToolbar.jsx │ │ ├── ButtonToolbar.test.jsx │ │ ├── Carousel.jsx │ │ ├── Carousel.test.jsx │ │ ├── CarouselCaption.jsx │ │ ├── CarouselCaption.test.jsx │ │ ├── CarouselItem.jsx │ │ ├── Checkbox.jsx │ │ ├── Checkbox.test.jsx │ │ ├── Clearfix.jsx │ │ ├── Clearfix.test.jsx │ │ ├── CloseButton.jsx │ │ ├── CloseButton.test.jsx │ │ ├── Col.jsx │ │ ├── Col.test.jsx │ │ ├── Collapse.jsx │ │ ├── Collapse.test.jsx │ │ ├── ControlLabel.jsx │ │ ├── ControlLabel.test.jsx │ │ ├── Dropdown.jsx │ │ ├── Dropdown.test.jsx │ │ ├── DropdownButton.jsx │ │ ├── DropdownButton.test.jsx │ │ ├── DropdownMenu.jsx │ │ ├── DropdownMenu.test.jsx │ │ ├── DropdownToggle.jsx │ │ ├── DropdownToggle.test.jsx │ │ ├── Fade.jsx │ │ ├── Fade.test.jsx │ │ ├── Form.jsx │ │ ├── Form.test.jsx │ │ ├── FormControl.jsx │ │ ├── FormControl.test.jsx │ │ ├── FormControlFeedback.jsx │ │ ├── FormControlFeedback.test.jsx │ │ ├── FormControlStatic.jsx │ │ ├── FormControlStatic.test.jsx │ │ ├── FormGroup.jsx │ │ ├── FormGroup.test.jsx │ │ ├── Glyphicon.jsx │ │ ├── Glyphicon.test.jsx │ │ ├── Grid.jsx │ │ ├── Grid.test.jsx │ │ ├── HelpBlock.jsx │ │ ├── HelpBlock.test.jsx │ │ ├── Image.jsx │ │ ├── Image.test.jsx │ │ ├── InputGroup.jsx │ │ ├── InputGroup.test.jsx │ │ ├── InputGroupAddon.jsx │ │ ├── InputGroupButton.jsx │ │ ├── Jumbotron.jsx │ │ ├── Jumbotron.test.jsx │ │ ├── Label.jsx │ │ ├── Label.test.jsx │ │ ├── ListGroup.jsx │ │ ├── ListGroup.test.jsx │ │ ├── ListGroupItem.jsx │ │ ├── ListGroupItem.test.jsx │ │ ├── Media.jsx │ │ ├── Media.test.jsx │ │ ├── MediaBody.jsx │ │ ├── MediaBody.test.jsx │ │ ├── MediaHeading.jsx │ │ ├── MediaHeading.test.jsx │ │ ├── MediaLeft.jsx │ │ ├── MediaLeft.test.jsx │ │ ├── MediaList.jsx │ │ ├── MediaList.test.jsx │ │ ├── MediaListItem.jsx │ │ ├── MediaListItem.test.jsx │ │ ├── MediaRight.jsx │ │ ├── MediaRight.test.jsx │ │ ├── MenuItem.jsx │ │ ├── MenuItem.test.jsx │ │ ├── Modal.jsx │ │ ├── Modal.test.jsx │ │ ├── ModalBody.jsx │ │ ├── ModalBody.test.jsx │ │ ├── ModalDialog.jsx │ │ ├── ModalFooter.jsx │ │ ├── ModalFooter.test.jsx │ │ ├── ModalHeader.jsx │ │ ├── ModalHeader.test.jsx │ │ ├── ModalTitle.jsx │ │ ├── ModalTitle.test.jsx │ │ ├── Nav.jsx │ │ ├── Nav.test.jsx │ │ ├── NavDropdown.jsx │ │ ├── NavDropdown.test.jsx │ │ ├── NavItem.jsx │ │ ├── NavItem.test.jsx │ │ ├── Navbar.jsx │ │ ├── Navbar.test.jsx │ │ ├── NavbarBrand.jsx │ │ ├── NavbarBrand.test.jsx │ │ ├── NavbarCollapse.jsx │ │ ├── NavbarHeader.jsx │ │ ├── NavbarToggle.jsx │ │ ├── Overlay.jsx │ │ ├── OverlayTrigger.jsx │ │ ├── OverlayTrigger.test.jsx │ │ ├── PageHeader.jsx │ │ ├── PageHeader.test.jsx │ │ ├── PageItem.jsx │ │ ├── Pager.jsx │ │ ├── Pager.test.jsx │ │ ├── PagerItem.jsx │ │ ├── PagerItem.test.jsx │ │ ├── Pagination.jsx │ │ ├── Pagination.test.jsx │ │ ├── PaginationItem.jsx │ │ ├── Panel.jsx │ │ ├── Panel.test.jsx │ │ ├── PanelBody.jsx │ │ ├── PanelCollapse.jsx │ │ ├── PanelFooter.jsx │ │ ├── PanelGroup.jsx │ │ ├── PanelGroup.test.jsx │ │ ├── PanelHeading.jsx │ │ ├── PanelTitle.jsx │ │ ├── PanelToggle.jsx │ │ ├── Popover.jsx │ │ ├── Popover.test.jsx │ │ ├── ProgressBar.jsx │ │ ├── ProgressBar.test.jsx │ │ ├── Radio.jsx │ │ ├── Radio.test.jsx │ │ ├── ResponsiveEmbed.jsx │ │ ├── ResponsiveEmbed.test.jsx │ │ ├── Row.jsx │ │ ├── Row.test.jsx │ │ ├── SafeAnchor.jsx │ │ ├── SafeAnchor.test.jsx │ │ ├── SplitButton.jsx │ │ ├── SplitButton.test.jsx │ │ ├── SplitToggle.jsx │ │ ├── Tab.jsx │ │ ├── Tab.test.jsx │ │ ├── TabContainer.jsx │ │ ├── TabContainer.test.jsx │ │ ├── TabContent.jsx │ │ ├── TabPane.jsx │ │ ├── Table.jsx │ │ ├── Table.test.jsx │ │ ├── Tabs.jsx │ │ ├── Tabs.test.jsx │ │ ├── Thumbnail.jsx │ │ ├── Thumbnail.test.jsx │ │ ├── ToggleButton.jsx │ │ ├── ToggleButtonGroup.jsx │ │ ├── ToggleButtonGroup.test.jsx │ │ ├── Tooltip.jsx │ │ ├── Tooltip.test.jsx │ │ ├── Well.jsx │ │ ├── Well.test.jsx │ │ ├── helpers.jsx │ │ ├── index.jsx │ │ ├── test-setup.jsx │ │ └── utils/ │ │ ├── PropTypes.js │ │ ├── StyleConfig.js │ │ ├── ValidComponentChildren.js │ │ ├── bootstrapUtils.js │ │ ├── capitalize.js │ │ ├── createChainedFunction.js │ │ ├── deprecationWarning.js │ │ ├── index.js │ │ └── splitComponentProps.js │ ├── tsconfig.json │ └── vitest.config.ts ├── index.html ├── mocks/ │ └── dateMock.js ├── npm-audit/ │ └── audit.json ├── package.json ├── packages/ │ ├── a11y/ │ │ ├── .npmignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── eslint.config.mjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Gesture/ │ │ │ │ ├── constants.ts │ │ │ │ ├── focus.ts │ │ │ │ ├── index.ts │ │ │ │ ├── preventScroll.test.tsx │ │ │ │ ├── preventScroll.ts │ │ │ │ ├── propTypes.ts │ │ │ │ ├── withCalendarGesture.test.tsx │ │ │ │ ├── withCalendarGesture.tsx │ │ │ │ ├── withDynamicListGesture.test.jsx │ │ │ │ ├── withDynamicListGesture.tsx │ │ │ │ ├── withListGesture.test.jsx │ │ │ │ ├── withListGesture.tsx │ │ │ │ ├── withMonthCalendarGesture.test.tsx │ │ │ │ ├── withMonthCalendarGesture.tsx │ │ │ │ ├── withTreeGesture.test.jsx │ │ │ │ └── withTreeGesture.tsx │ │ │ ├── __mocks__/ │ │ │ │ ├── day-calendar.tsx │ │ │ │ ├── list.tsx │ │ │ │ ├── month-calendar.tsx │ │ │ │ └── tree.tsx │ │ │ ├── index.ts │ │ │ └── test-setup.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── assets-api/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── eslint.config.mjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── cmf/ │ │ ├── .babelrc.json │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── 6.0-BreakingChanges.md │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── App.test.jsx │ │ │ ├── Dispatcher.test.jsx │ │ │ ├── Inject.test.jsx │ │ │ ├── __snapshots__/ │ │ │ │ ├── cmfConnect.test.jsx.snap │ │ │ │ └── componentState.test.js.snap │ │ │ ├── action.test.js │ │ │ ├── actionCreator.test.js │ │ │ ├── actions/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── componentsActions.test.js.snap │ │ │ │ ├── collectionsActions.test.js │ │ │ │ ├── componentsActions.test.js │ │ │ │ ├── http.test.js │ │ │ │ ├── saga.test.js │ │ │ │ └── settingsAction.test.js │ │ │ ├── assert.test.js │ │ │ ├── bootstrap.test.jsx │ │ │ ├── cmfConnect.test.jsx │ │ │ ├── cmfModule.merge.test.jsx │ │ │ ├── cmfModule.test.js │ │ │ ├── component.test.js │ │ │ ├── componentState.test.js │ │ │ ├── constant.test.js │ │ │ ├── expression.test.jsx │ │ │ ├── expressions/ │ │ │ │ └── index.test.jsx │ │ │ ├── httpInterceptors.test.js │ │ │ ├── localStorage.test.js │ │ │ ├── matchPath.test.js │ │ │ ├── middlewares/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── http.test.js.snap │ │ │ │ ├── cmf.test.js │ │ │ │ ├── constants.test.js │ │ │ │ ├── csrfHandling.test.js │ │ │ │ ├── error.test.js │ │ │ │ └── http.test.js │ │ │ ├── omit.test.js │ │ │ ├── onError.test.jsx │ │ │ ├── onEvent.test.js │ │ │ ├── reducers/ │ │ │ │ ├── collectionsReducers.test.js │ │ │ │ ├── componentsReducers.test.js │ │ │ │ ├── index.test.js │ │ │ │ └── settingsReducers.test.js │ │ │ ├── register.test.js │ │ │ ├── registry.test.js │ │ │ ├── sagas/ │ │ │ │ ├── collection.test.js │ │ │ │ ├── component.test.js │ │ │ │ ├── http.test.js │ │ │ │ └── putActionCreator.test.js │ │ │ ├── selectors/ │ │ │ │ ├── collections.test.js │ │ │ │ ├── index.test.js │ │ │ │ └── toJS.test.js │ │ │ ├── settings.test.jsx │ │ │ └── store.test.js │ │ ├── assets/ │ │ │ ├── diagram-bootstrap.xml │ │ │ ├── diagram-cmfConnect.xml │ │ │ ├── diagram-code-orga.xml │ │ │ ├── diagram-onError-sequence.puml │ │ │ ├── diagram-react-redux-saga-rendering.xml │ │ │ └── diagram-rendering-cycle.xml │ │ ├── cmf.d.ts │ │ ├── docs/ │ │ │ ├── api.md │ │ │ ├── assets/ │ │ │ │ ├── CMF-action-diagram.txt │ │ │ │ └── CMF-bootstrap-diagram.txt │ │ │ ├── best-practices.md │ │ │ ├── core-expressions.md │ │ │ ├── core-onevent.md │ │ │ ├── core-registry.md │ │ │ ├── core-settings.md │ │ │ ├── examples.md │ │ │ ├── getting-started.md │ │ │ ├── how-to-add-a-new-page.md │ │ │ ├── how-to-connect.md │ │ │ ├── how-to-edit-doc.md │ │ │ ├── how-to-manage-collections.md │ │ │ ├── package-redux.md │ │ │ ├── package-router.md │ │ │ ├── package-saga.md │ │ │ └── what-is-cmf.md │ │ ├── eslint.config.mjs │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── cmf-settings.js │ │ ├── src/ │ │ │ ├── App.jsx │ │ │ ├── App.md │ │ │ ├── Dispatcher.jsx │ │ │ ├── Dispatcher.md │ │ │ ├── Inject.component.jsx │ │ │ ├── RegistryProvider.jsx │ │ │ ├── action.js │ │ │ ├── action.md │ │ │ ├── actionCreator.js │ │ │ ├── actionCreator.md │ │ │ ├── actions/ │ │ │ │ ├── collectionsActions.js │ │ │ │ ├── componentsActions.js │ │ │ │ ├── http.js │ │ │ │ ├── index.js │ │ │ │ ├── saga.js │ │ │ │ └── settingsActions.js │ │ │ ├── api.md │ │ │ ├── assert.js │ │ │ ├── bootstrap.jsx │ │ │ ├── bootstrap.md │ │ │ ├── cmfConnect.jsx │ │ │ ├── cmfConnect.md │ │ │ ├── cmfModule.js │ │ │ ├── cmfModule.merge.jsx │ │ │ ├── component.js │ │ │ ├── componentState.js │ │ │ ├── components/ │ │ │ │ ├── ErrorBoundary/ │ │ │ │ │ ├── ErrorBoundary.component.js │ │ │ │ │ └── ErrorBoundary.component.test.jsx │ │ │ │ ├── ErrorFeedBack/ │ │ │ │ │ ├── ErrorFeedBack.component.jsx │ │ │ │ │ ├── ErrorFeedBack.component.test.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── ErrorPanel/ │ │ │ │ │ ├── ErrorPanel.component.jsx │ │ │ │ │ ├── ErrorPanel.component.test.jsx │ │ │ │ │ └── index.js │ │ │ │ └── Saga/ │ │ │ │ ├── CmfRegisteredSaga.component.js │ │ │ │ ├── CmfRegisteredSaga.component.test.jsx │ │ │ │ ├── Saga.component.js │ │ │ │ ├── Saga.component.md │ │ │ │ ├── Saga.component.test.jsx │ │ │ │ ├── Saga.saga.js │ │ │ │ ├── Saga.saga.test.js │ │ │ │ └── index.js │ │ │ ├── constant.js │ │ │ ├── deprecated.js │ │ │ ├── expression.jsx │ │ │ ├── expression.md │ │ │ ├── expressions/ │ │ │ │ ├── allOf.js │ │ │ │ ├── getInState.js │ │ │ │ ├── includes.js │ │ │ │ ├── index.js │ │ │ │ ├── index.md │ │ │ │ └── oneOf.js │ │ │ ├── httpInterceptors.js │ │ │ ├── httpInterceptors.md │ │ │ ├── index.js │ │ │ ├── localStorage.js │ │ │ ├── matchPath.js │ │ │ ├── middlewares/ │ │ │ │ ├── cmf/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── index.md │ │ │ │ ├── error/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── index.md │ │ │ │ ├── http/ │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── csrfHandling.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.md │ │ │ │ │ └── middleware.js │ │ │ │ └── index.js │ │ │ ├── mock/ │ │ │ │ ├── collections.js │ │ │ │ ├── components.js │ │ │ │ ├── index.js │ │ │ │ ├── provider.jsx │ │ │ │ ├── rtl.jsx │ │ │ │ ├── settings.js │ │ │ │ └── store.jsx │ │ │ ├── omit.js │ │ │ ├── onError.js │ │ │ ├── onError.md │ │ │ ├── onEvent.js │ │ │ ├── onEvent.md │ │ │ ├── reducers/ │ │ │ │ ├── collectionsReducers.js │ │ │ │ ├── componentsReducers.js │ │ │ │ ├── index.js │ │ │ │ └── settingsReducers.js │ │ │ ├── register.js │ │ │ ├── registry.js │ │ │ ├── registry.md │ │ │ ├── sagas/ │ │ │ │ ├── collection.js │ │ │ │ ├── component.js │ │ │ │ ├── http.js │ │ │ │ ├── index.js │ │ │ │ ├── index.md │ │ │ │ └── putActionCreator.js │ │ │ ├── selectors/ │ │ │ │ ├── collections.js │ │ │ │ ├── collections.md │ │ │ │ ├── index.js │ │ │ │ ├── index.md │ │ │ │ ├── toJS.js │ │ │ │ └── toJS.md │ │ │ ├── settings.jsx │ │ │ ├── settings.md │ │ │ ├── store.js │ │ │ ├── store.md │ │ │ ├── test-setup.ts │ │ │ └── useContext.js │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── cmf-cqrs/ │ │ ├── .babelrc.json │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── docs.json │ │ ├── eslint.config.mjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── ack.test.js.snap │ │ │ │ ├── ack.js │ │ │ │ ├── ack.test.js │ │ │ │ └── index.js │ │ │ ├── components/ │ │ │ │ └── ACKDispatcher/ │ │ │ │ ├── ACKDispatcher.connect.js │ │ │ │ ├── ACKDispatcher.container.js │ │ │ │ ├── ACKDispatcher.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── ACKDispatcher.test.js.snap │ │ │ │ │ └── ACKDispatcher.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── constants/ │ │ │ │ ├── ack.js │ │ │ │ ├── index.js │ │ │ │ ├── socketMiddleware.js │ │ │ │ └── status.js │ │ │ ├── index.test.js │ │ │ ├── index.ts │ │ │ ├── middleware/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── socketMiddleware.test.js.snap │ │ │ │ ├── index.js │ │ │ │ ├── smartWebsocket.js │ │ │ │ ├── smartWebsocket.test.js │ │ │ │ ├── socketMiddleware.js │ │ │ │ └── socketMiddleware.test.js │ │ │ ├── reducers/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── ack.test.js.snap │ │ │ │ ├── ack.js │ │ │ │ ├── ack.test.js │ │ │ │ └── index.js │ │ │ ├── registry.js │ │ │ ├── sagas/ │ │ │ │ ├── ack.js │ │ │ │ ├── ack.test.js │ │ │ │ └── index.js │ │ │ ├── test-setup.ts │ │ │ ├── useWebSocket.hook.test.ts │ │ │ └── useWebSocket.hook.ts │ │ ├── tsconfig.build.json │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── cmf-router/ │ │ ├── .babelrc.json │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── eslint.config.mjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── UIRouter.jsx │ │ │ ├── constant.js │ │ │ ├── expressions.js │ │ │ ├── expressions.md │ │ │ ├── expressions.test.js │ │ │ ├── history.js │ │ │ ├── index.jsx │ │ │ ├── index.test.js │ │ │ ├── middleware.js │ │ │ ├── middleware.md │ │ │ ├── middleware.test.js │ │ │ ├── sagaRouter.js │ │ │ ├── sagaRouter.md │ │ │ ├── sagaRouter.test.js │ │ │ ├── sagas/ │ │ │ │ ├── documentTitle.js │ │ │ │ └── documentTitle.test.js │ │ │ ├── selectors.js │ │ │ └── selectors.test.js │ │ ├── talend-scripts.json │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── components/ │ │ ├── .babelrc.json │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── .sass-lint.yml │ │ ├── .storybook/ │ │ │ ├── main.ts │ │ │ ├── preview-head.html │ │ │ └── preview.ts │ │ ├── 6.0 - breaking changes.md │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __mocks__/ │ │ │ ├── day-calendar.jsx │ │ │ ├── list.jsx │ │ │ └── month-calendar.jsx │ │ ├── custom.d.ts │ │ ├── eslint.config.mjs │ │ ├── i18next-scanner.config.js │ │ ├── package.json │ │ ├── screenshots.config.json │ │ ├── src/ │ │ │ ├── AboutDialog/ │ │ │ │ ├── AboutDialog.component.jsx │ │ │ │ ├── AboutDialog.module.css │ │ │ │ ├── AboutDialog.test.jsx │ │ │ │ ├── AboutDialogTable.component.jsx │ │ │ │ ├── AboutModal.stories.jsx │ │ │ │ └── index.js │ │ │ ├── ActionBar/ │ │ │ │ ├── ActionBar.component.jsx │ │ │ │ ├── ActionBar.module.css │ │ │ │ ├── ActionBar.stories.jsx │ │ │ │ ├── ActionBar.test.jsx │ │ │ │ └── index.js │ │ │ ├── ActionIntercom/ │ │ │ │ ├── Intercom.component.jsx │ │ │ │ ├── Intercom.component.test.jsx │ │ │ │ ├── Intercom.module.css │ │ │ │ ├── Intercom.service.jsx │ │ │ │ ├── Intercom.service.test.jsx │ │ │ │ ├── Intercom.stories.jsx │ │ │ │ └── index.js │ │ │ ├── ActionList/ │ │ │ │ ├── ActionList.component.jsx │ │ │ │ ├── ActionList.module.css │ │ │ │ ├── ActionList.stories.jsx │ │ │ │ ├── ActionList.test.jsx │ │ │ │ └── index.js │ │ │ ├── Actions/ │ │ │ │ ├── Action/ │ │ │ │ │ ├── Action.component.jsx │ │ │ │ │ ├── Action.test.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── ActionButton/ │ │ │ │ │ ├── ActionButton.component.jsx │ │ │ │ │ ├── ActionButton.module.css │ │ │ │ │ ├── ActionButton.test.jsx │ │ │ │ │ ├── Button.stories.jsx │ │ │ │ │ ├── Button.stories.module.css │ │ │ │ │ └── index.js │ │ │ │ ├── ActionDropdown/ │ │ │ │ │ ├── ActionDropdown.component.jsx │ │ │ │ │ ├── ActionDropdown.component.md │ │ │ │ │ ├── ActionDropdown.module.css │ │ │ │ │ ├── ActionDropdown.snapshot.test.jsx │ │ │ │ │ ├── ActionDropdown.test.jsx │ │ │ │ │ ├── Dropdown.stories.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── ActionFile/ │ │ │ │ │ ├── ActionFile.component.jsx │ │ │ │ │ ├── ActionFile.module.css │ │ │ │ │ ├── ActionFile.test.jsx │ │ │ │ │ ├── File.stories.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── ActionIconToggle/ │ │ │ │ │ ├── ActionIconToggle.component.jsx │ │ │ │ │ ├── ActionIconToggle.component.test.jsx │ │ │ │ │ ├── ActionIconToggle.module.css │ │ │ │ │ ├── IconToggle.stories.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── ActionSplitDropdown/ │ │ │ │ │ ├── ActionSplitDropdown.component.jsx │ │ │ │ │ ├── ActionSplitDropdown.module.css │ │ │ │ │ ├── ActionSplitDropdown.test.jsx │ │ │ │ │ ├── SplitDropdown.stories.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── Actions.component.jsx │ │ │ │ ├── Actions.test.jsx │ │ │ │ ├── ButtonGroup.stories.jsx │ │ │ │ ├── index.js │ │ │ │ ├── wrapOnClick.js │ │ │ │ └── wrapOnClick.test.js │ │ │ ├── AppGuidedTour/ │ │ │ │ ├── AppGuidedTour.component.jsx │ │ │ │ ├── AppGuidedTour.stories.jsx │ │ │ │ ├── AppGuidedTour.test.jsx │ │ │ │ ├── DemoContentStep.component.jsx │ │ │ │ ├── DemoContentStep.component.test.jsx │ │ │ │ ├── DemoContentStep.module.css │ │ │ │ └── index.js │ │ │ ├── AppLoader/ │ │ │ │ ├── AppLoader.component.jsx │ │ │ │ ├── AppLoader.md │ │ │ │ ├── AppLoader.stories.jsx │ │ │ │ ├── AppLoader.test.jsx │ │ │ │ ├── constant.js │ │ │ │ └── index.js │ │ │ ├── AppSwitcher/ │ │ │ │ ├── AppSwitcher.component.jsx │ │ │ │ ├── AppSwitcher.component.test.jsx │ │ │ │ ├── AppSwitcher.module.css │ │ │ │ └── index.js │ │ │ ├── Badge/ │ │ │ │ ├── Badge.component.jsx │ │ │ │ ├── Badge.component.test.jsx │ │ │ │ ├── Badge.module.css │ │ │ │ ├── Badge.stories.jsx │ │ │ │ ├── BadgeComposition/ │ │ │ │ │ ├── BadgeCategory/ │ │ │ │ │ │ ├── BadgeCategory.component.jsx │ │ │ │ │ │ ├── BadgeCategory.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── BadgeDelete/ │ │ │ │ │ │ ├── BadgeDelete.component.jsx │ │ │ │ │ │ ├── BadgeDelete.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── BadgeDropdown/ │ │ │ │ │ │ ├── BadgeDropdown.component.jsx │ │ │ │ │ │ ├── BadgeDropdown.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── BadgeIcon/ │ │ │ │ │ │ ├── BadgeIcon.component.jsx │ │ │ │ │ │ ├── BadgeIcon.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── BadgeIcon.component.test.js.snap │ │ │ │ │ │ │ └── BadgeIcon.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── BadgeLabel/ │ │ │ │ │ │ ├── BadgeLabel.component.jsx │ │ │ │ │ │ ├── BadgeLabel.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── BadgeSeparator/ │ │ │ │ │ │ ├── BadgeSeparator.component.jsx │ │ │ │ │ │ ├── BadgeSeparator.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── BadgeSeparator.component.test.js.snap │ │ │ │ │ │ │ └── BadgeSeparator.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ └── index.js │ │ │ ├── Breadcrumbs/ │ │ │ │ ├── Breadcrumbs.component.jsx │ │ │ │ ├── Breadcrumbs.module.css │ │ │ │ ├── Breadcrumbs.snapshot.test.jsx │ │ │ │ ├── Breadcrumbs.stories.jsx │ │ │ │ ├── Breadcrumbs.test.jsx │ │ │ │ └── index.js │ │ │ ├── Checkbox/ │ │ │ │ ├── Checkbox.jsx │ │ │ │ ├── Checkbox.stories.jsx │ │ │ │ └── index.js │ │ │ ├── CircularProgress/ │ │ │ │ ├── CircularProgress.component.jsx │ │ │ │ ├── CircularProgress.module.css │ │ │ │ ├── CircularProgress.test.jsx │ │ │ │ ├── Spinner.stories.jsx │ │ │ │ └── index.js │ │ │ ├── CollapsiblePanel/ │ │ │ │ ├── CollapsiblePanel.component.jsx │ │ │ │ ├── CollapsiblePanel.module.css │ │ │ │ ├── CollapsiblePanel.snapshot.test.jsx │ │ │ │ ├── CollapsiblePanel.stories.jsx │ │ │ │ ├── CollapsiblePanel.test.jsx │ │ │ │ └── index.js │ │ │ ├── ConfirmDialog/ │ │ │ │ ├── ConfirmDialog.component.jsx │ │ │ │ ├── ConfirmDialog.stories.jsx │ │ │ │ ├── ConfirmDialog.test.jsx │ │ │ │ └── index.js │ │ │ ├── DataViewer/ │ │ │ │ ├── Badges/ │ │ │ │ │ ├── LengthBadge/ │ │ │ │ │ │ ├── LengthBadge.component.jsx │ │ │ │ │ │ ├── LengthBadge.module.css │ │ │ │ │ │ ├── LengthBadge.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── LengthBadge.test.js.snap │ │ │ │ │ │ │ └── LengthBadge.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── Core/ │ │ │ │ │ ├── Tree/ │ │ │ │ │ │ ├── Tree.component.jsx │ │ │ │ │ │ ├── Tree.module.css │ │ │ │ │ │ ├── Tree.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── TreeNode/ │ │ │ │ │ │ ├── TreeNode.component.js │ │ │ │ │ │ ├── TreeNode.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── TreeNodeList/ │ │ │ │ │ │ ├── TreeNodeList.component.jsx │ │ │ │ │ │ ├── TreeNodeList.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── DataViewer.stories.jsx │ │ │ │ ├── Headers/ │ │ │ │ │ ├── TreeHeader/ │ │ │ │ │ │ ├── TreeHeader.component.jsx │ │ │ │ │ │ ├── TreeHeader.module.css │ │ │ │ │ │ ├── TreeHeader.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── TreeHeader.test.js.snap │ │ │ │ │ │ │ └── TreeHeader.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── Icons/ │ │ │ │ │ ├── TreeBranchIcon/ │ │ │ │ │ │ ├── TreeBranchIcon.component.jsx │ │ │ │ │ │ ├── TreeBranchIcon.module.css │ │ │ │ │ │ ├── TreeBranchIcon.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── Managers/ │ │ │ │ │ ├── TreeManager/ │ │ │ │ │ │ ├── TreeManager.container.js │ │ │ │ │ │ ├── TreeManager.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── ModelViewer/ │ │ │ │ │ ├── Branch/ │ │ │ │ │ │ ├── ModelViewerBranch.component.jsx │ │ │ │ │ │ ├── ModelViewerBranch.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Leaf/ │ │ │ │ │ │ ├── ModelViewerLeaf.component.jsx │ │ │ │ │ │ ├── ModelViewerLeaf.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── ModelViewerLeaf.test.js.snap │ │ │ │ │ │ │ └── ModelViewerLeaf.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ModelViewer.component.jsx │ │ │ │ │ ├── ModelViewer.component.test.jsx │ │ │ │ │ ├── ModelViewer.container.jsx │ │ │ │ │ ├── ModelViewer.container.test.jsx │ │ │ │ │ ├── ModelViewer.module.css │ │ │ │ │ ├── ModelViewer.parser.test.js │ │ │ │ │ ├── README.md │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── ModelViewer.component.test.js.snap │ │ │ │ │ │ ├── ModelViewer.component.test.jsx.snap │ │ │ │ │ │ ├── ModelViewer.container.test.js.snap │ │ │ │ │ │ └── ModelViewer.container.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── RecordsViewer/ │ │ │ │ │ ├── Branch/ │ │ │ │ │ │ ├── RecordsViewerBranch.component.jsx │ │ │ │ │ │ ├── RecordsViewerBranch.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── RecordsViewerBranch.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── CellRenderer/ │ │ │ │ │ │ ├── RecordsCellRenderer.component.jsx │ │ │ │ │ │ ├── RecordsCellRenderer.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── RecordsCellRenderer.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Leaf/ │ │ │ │ │ │ ├── RecordsViewerLeaf.component.jsx │ │ │ │ │ │ ├── RecordsViewerLeaf.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── RecordsViewerLeaf.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── README.md │ │ │ │ │ ├── RecordsViewer.component.jsx │ │ │ │ │ ├── RecordsViewer.component.test.jsx │ │ │ │ │ ├── RecordsViewer.container.jsx │ │ │ │ │ ├── RecordsViewer.container.test.jsx │ │ │ │ │ ├── RecordsViewer.module.css │ │ │ │ │ ├── RecordsViewer.parser.js │ │ │ │ │ ├── RecordsViewer.parser.test.js │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── RecordsViewer.component.test.jsx.snap │ │ │ │ │ │ ├── RecordsViewer.container.test.js.snap │ │ │ │ │ │ └── RecordsViewer.container.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── Text/ │ │ │ │ │ ├── SimpleTextKeyValue/ │ │ │ │ │ │ ├── DefaultValueRenderer.component.jsx │ │ │ │ │ │ ├── DefaultValueRenderer.module.css │ │ │ │ │ │ ├── DefaultValueRenderer.test.jsx │ │ │ │ │ │ ├── SimpleTextKeyValue.component.jsx │ │ │ │ │ │ ├── SimpleTextKeyValue.module.css │ │ │ │ │ │ ├── SimpleTextKeyValue.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── SimpleTextKeyValue.test.js.snap │ │ │ │ │ │ │ └── SimpleTextKeyValue.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── Virtualized/ │ │ │ │ │ ├── TreeCellMeasurer/ │ │ │ │ │ │ ├── TreeCellMeasurer.component.jsx │ │ │ │ │ │ ├── TreeCellMeasurer.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── TreeCellMeasurer.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── VirtualizedTree/ │ │ │ │ │ │ ├── VirtualizedTree.component.jsx │ │ │ │ │ │ ├── VirtualizedTree.module.css │ │ │ │ │ │ ├── VirtualizedTree.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── VirtualizedTree.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── index.js │ │ │ │ ├── jsonPath.js │ │ │ │ ├── jsonPath.test.js │ │ │ │ ├── sample.raw.json │ │ │ │ └── theme.module.css │ │ │ ├── Datalist/ │ │ │ │ ├── Datalist.component.jsx │ │ │ │ ├── Datalist.component.test.jsx │ │ │ │ ├── Datalist.module.css │ │ │ │ ├── Datalist.stories.jsx │ │ │ │ └── index.js │ │ │ ├── DateTimePickers/ │ │ │ │ ├── Date/ │ │ │ │ │ ├── Context.js │ │ │ │ │ ├── Input/ │ │ │ │ │ │ ├── Input.component.jsx │ │ │ │ │ │ ├── Input.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Manager/ │ │ │ │ │ │ ├── Manager.component.jsx │ │ │ │ │ │ ├── Manager.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Picker/ │ │ │ │ │ │ ├── Picker.component.jsx │ │ │ │ │ │ ├── Picker.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── date-extraction.js │ │ │ │ │ ├── date-extraction.test.js │ │ │ │ │ └── index.js │ │ │ │ ├── DateRange/ │ │ │ │ │ ├── Context.js │ │ │ │ │ ├── Input/ │ │ │ │ │ │ ├── Input.component.jsx │ │ │ │ │ │ ├── Input.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Manager/ │ │ │ │ │ │ ├── Manager.component.jsx │ │ │ │ │ │ ├── Manager.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Picker/ │ │ │ │ │ │ ├── Picker.component.jsx │ │ │ │ │ │ ├── Picker.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Picker.component.test.js.snap │ │ │ │ │ │ │ └── Picker.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── constants.js │ │ │ │ │ └── index.js │ │ │ │ ├── DateTime/ │ │ │ │ │ ├── Context.js │ │ │ │ │ ├── Manager/ │ │ │ │ │ │ ├── Manager.component.jsx │ │ │ │ │ │ ├── Manager.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── datetime-extraction.js │ │ │ │ │ ├── datetime-extraction.test.js │ │ │ │ │ └── index.js │ │ │ │ ├── DateTimeRange/ │ │ │ │ │ ├── Context.js │ │ │ │ │ ├── Manager/ │ │ │ │ │ │ ├── Manager.component.jsx │ │ │ │ │ │ ├── Manager.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── InputDatePicker/ │ │ │ │ │ ├── DatePicker.stories.jsx │ │ │ │ │ ├── InputDatePicker.component.jsx │ │ │ │ │ ├── InputDatePicker.module.css │ │ │ │ │ └── index.js │ │ │ │ ├── InputDateRangePicker/ │ │ │ │ │ ├── DateRangePicker.stories.jsx │ │ │ │ │ ├── InputDateRangePicker.component.jsx │ │ │ │ │ ├── InputDateRangePicker.module.css │ │ │ │ │ ├── README.md │ │ │ │ │ └── index.js │ │ │ │ ├── InputDateTimePicker/ │ │ │ │ │ ├── DateTimePicker.stories.jsx │ │ │ │ │ ├── InputDateTimePicker.component.jsx │ │ │ │ │ ├── InputDateTimePicker.component.test.jsx │ │ │ │ │ ├── InputDateTimePicker.module.css │ │ │ │ │ ├── README.md │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── InputDateTimePicker.component.test.js.snap │ │ │ │ │ │ └── InputDateTimePicker.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── InputDateTimeRangePicker/ │ │ │ │ │ ├── DateTimeRangePicker.stories.jsx │ │ │ │ │ ├── InputDateTimeRangePicker.component.jsx │ │ │ │ │ ├── InputDateTimeRangePicker.component.test.jsx │ │ │ │ │ ├── InputDateTimeRangePicker.module.css │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── InputDateTimeRangePicker.component.test.js.snap │ │ │ │ │ │ └── InputDateTimeRangePicker.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── InputTimePicker/ │ │ │ │ │ ├── InputTimePicker.component.jsx │ │ │ │ │ ├── InputTimePicker.component.test.jsx │ │ │ │ │ ├── InputTimePicker.module.css │ │ │ │ │ ├── TimePicker.stories.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── LegacyDateTimePickers/ │ │ │ │ │ ├── DateTime/ │ │ │ │ │ │ ├── Context.js │ │ │ │ │ │ ├── Input/ │ │ │ │ │ │ │ ├── Input.component.jsx │ │ │ │ │ │ │ ├── Input.component.test.jsx │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── Manager/ │ │ │ │ │ │ │ ├── Manager.component.jsx │ │ │ │ │ │ │ ├── Manager.component.test.jsx │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── Picker/ │ │ │ │ │ │ │ ├── Picker.component.jsx │ │ │ │ │ │ │ ├── Picker.component.test.jsx │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── Validation/ │ │ │ │ │ │ │ ├── Error.component.test.tsx │ │ │ │ │ │ │ ├── Error.component.tsx │ │ │ │ │ │ │ ├── Validation.component.jsx │ │ │ │ │ │ │ ├── Validation.component.test.jsx │ │ │ │ │ │ │ ├── Validation.module.css │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── constants.js │ │ │ │ │ │ ├── date-extraction.js │ │ │ │ │ │ ├── date-extraction.test.js │ │ │ │ │ │ ├── error-messages.js │ │ │ │ │ │ ├── error-messages.test.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── InputDateTimePicker/ │ │ │ │ │ │ ├── InputDateTimePicker.component.jsx │ │ │ │ │ │ ├── InputDateTimePicker.component.test.jsx │ │ │ │ │ │ ├── InputDateTimePicker.module.css │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── LegacyDateTimePicker.stories.jsx │ │ │ │ │ ├── README.md │ │ │ │ │ ├── generator.js │ │ │ │ │ ├── generator.test.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── pickers/ │ │ │ │ │ │ ├── DatePicker/ │ │ │ │ │ │ │ ├── DatePicker.component.jsx │ │ │ │ │ │ │ ├── DatePicker.module.css │ │ │ │ │ │ │ ├── DatePicker.test.jsx │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ ├── DatePicker.test.js.snap │ │ │ │ │ │ │ │ └── DatePicker.test.jsx.snap │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── DateTimePicker/ │ │ │ │ │ │ │ ├── DateTimePicker.component.jsx │ │ │ │ │ │ │ ├── DateTimePicker.module.css │ │ │ │ │ │ │ ├── DateTimePicker.test.jsx │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── MonthPicker/ │ │ │ │ │ │ │ ├── MonthPicker.component.jsx │ │ │ │ │ │ │ ├── MonthPicker.module.css │ │ │ │ │ │ │ ├── MonthPicker.test.jsx │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ ├── MonthPicker.test.js.snap │ │ │ │ │ │ │ │ └── MonthPicker.test.jsx.snap │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── TimePicker/ │ │ │ │ │ │ │ ├── TimePicker.component.jsx │ │ │ │ │ │ │ ├── TimePicker.md │ │ │ │ │ │ │ ├── TimePicker.module.css │ │ │ │ │ │ │ ├── TimePicker.test.jsx │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ ├── TimePicker.test.js.snap │ │ │ │ │ │ │ │ └── TimePicker.test.jsx.snap │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── YearPicker/ │ │ │ │ │ │ ├── YearPicker.component.jsx │ │ │ │ │ │ ├── YearPicker.md │ │ │ │ │ │ ├── YearPicker.module.css │ │ │ │ │ │ ├── YearPicker.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── YearPicker.test.js.snap │ │ │ │ │ │ │ └── YearPicker.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── shared/ │ │ │ │ │ │ └── styles/ │ │ │ │ │ │ ├── mixins.scss │ │ │ │ │ │ └── variables.scss │ │ │ │ │ └── views/ │ │ │ │ │ ├── DateTimeView/ │ │ │ │ │ │ ├── DateTimeView.component.jsx │ │ │ │ │ │ ├── DateTimeView.module.css │ │ │ │ │ │ ├── DateTimeView.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── DateTimeView.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── HeaderTitle/ │ │ │ │ │ │ ├── HeaderTitle.component.jsx │ │ │ │ │ │ ├── HeaderTitle.module.css │ │ │ │ │ │ ├── HeaderTitle.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── HeaderTitle.test.js.snap │ │ │ │ │ │ │ └── HeaderTitle.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── MonthYearView/ │ │ │ │ │ │ ├── MonthYearView.component.jsx │ │ │ │ │ │ ├── MonthYearView.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── MonthYearView.test.js.snap │ │ │ │ │ │ │ └── MonthYearView.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ └── ViewLayout/ │ │ │ │ │ ├── ViewLayout.component.jsx │ │ │ │ │ ├── ViewLayout.module.css │ │ │ │ │ ├── ViewLayout.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── ViewLayout.test.js.snap │ │ │ │ │ │ └── ViewLayout.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── README.md │ │ │ │ ├── Time/ │ │ │ │ │ ├── Context.js │ │ │ │ │ ├── Input/ │ │ │ │ │ │ ├── Input.component.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Manager/ │ │ │ │ │ │ ├── Manager.component.jsx │ │ │ │ │ │ ├── Manager.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── Manager.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Picker/ │ │ │ │ │ │ ├── Picker.component.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── time-extraction.js │ │ │ │ │ └── time-extraction.test.js │ │ │ │ ├── TimeZone/ │ │ │ │ │ ├── TimeZone.component.jsx │ │ │ │ │ ├── TimeZone.component.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── TimeZone.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── generator.js │ │ │ │ ├── generator.test.js │ │ │ │ ├── gesture/ │ │ │ │ │ └── timePickerGesture.js │ │ │ │ ├── hooks/ │ │ │ │ │ └── useInputPickerHandlers.js │ │ │ │ ├── index.js │ │ │ │ ├── pickers/ │ │ │ │ │ ├── CalendarPicker/ │ │ │ │ │ │ ├── CalendarPicker.component.jsx │ │ │ │ │ │ ├── CalendarPicker.module.css │ │ │ │ │ │ ├── CalendarPicker.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── DatePicker/ │ │ │ │ │ │ ├── DatePicker.component.jsx │ │ │ │ │ │ ├── DatePicker.module.css │ │ │ │ │ │ ├── DatePicker.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── DatePicker.test.js.snap │ │ │ │ │ │ │ └── DatePicker.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── MonthPicker/ │ │ │ │ │ │ ├── MonthPicker.component.jsx │ │ │ │ │ │ ├── MonthPicker.module.css │ │ │ │ │ │ ├── MonthPicker.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── MonthPicker.test.js.snap │ │ │ │ │ │ │ └── MonthPicker.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── TimePicker/ │ │ │ │ │ │ ├── TimePicker.component.jsx │ │ │ │ │ │ ├── TimePicker.component.test.jsx │ │ │ │ │ │ ├── TimePicker.module.css │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── TimePicker.component.test.js.snap │ │ │ │ │ │ │ └── TimePicker.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ └── YearPicker/ │ │ │ │ │ ├── YearPicker.component.jsx │ │ │ │ │ ├── YearPicker.md │ │ │ │ │ ├── YearPicker.module.css │ │ │ │ │ ├── YearPicker.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── YearPicker.test.js.snap │ │ │ │ │ │ └── YearPicker.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── shared/ │ │ │ │ │ ├── InputSizer/ │ │ │ │ │ │ ├── InputSizer.component.test.jsx │ │ │ │ │ │ ├── InputSizer.component.tsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── error-messages.js │ │ │ │ │ └── styles/ │ │ │ │ │ ├── mixins.scss │ │ │ │ │ └── variables.scss │ │ │ │ └── views/ │ │ │ │ ├── DateView/ │ │ │ │ │ ├── DateView.component.jsx │ │ │ │ │ ├── DateView.module.css │ │ │ │ │ ├── DateView.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── DateView.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── HeaderTitle/ │ │ │ │ │ ├── HeaderTitle.component.jsx │ │ │ │ │ ├── HeaderTitle.module.css │ │ │ │ │ ├── HeaderTitle.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── HeaderTitle.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── MonthYearView/ │ │ │ │ │ ├── MonthYearView.component.jsx │ │ │ │ │ ├── MonthYearView.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── MonthYearView.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ └── ViewLayout/ │ │ │ │ ├── ViewLayout.component.tsx │ │ │ │ ├── ViewLayout.module.css │ │ │ │ ├── ViewLayout.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── ViewLayout.test.js.snap │ │ │ │ │ └── ViewLayout.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Dialog/ │ │ │ │ ├── Dialog.component.jsx │ │ │ │ ├── Dialog.css │ │ │ │ ├── Dialog.stories.jsx │ │ │ │ ├── Dialog.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── Dialog.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Drawer/ │ │ │ │ ├── Drawer.component.jsx │ │ │ │ ├── Drawer.module.css │ │ │ │ ├── Drawer.stories.jsx │ │ │ │ ├── Drawer.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Drawer.test.js.snap │ │ │ │ │ └── Drawer.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── EditableText/ │ │ │ │ ├── EditableText.component.jsx │ │ │ │ ├── EditableText.module.css │ │ │ │ ├── EditableText.stories.jsx │ │ │ │ ├── EditableText.test.jsx │ │ │ │ ├── InlineForm.component.jsx │ │ │ │ ├── InlineForm.component.test.jsx │ │ │ │ ├── InlineForm.module.css │ │ │ │ ├── PlainTextTitle.component.test.jsx │ │ │ │ ├── PlainTextTitle.component.tsx │ │ │ │ ├── PlainTextTitle.module.css │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── EditableText.test.js.snap │ │ │ │ │ ├── EditableText.test.jsx.snap │ │ │ │ │ ├── InlineForm.component.test.js.snap │ │ │ │ │ ├── InlineForm.component.test.jsx.snap │ │ │ │ │ ├── PlainTextTitle.component.test.js.snap │ │ │ │ │ └── PlainTextTitle.component.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Emphasis/ │ │ │ │ ├── Emphasis.component.jsx │ │ │ │ ├── Emphasis.module.css │ │ │ │ ├── Emphasis.stories.jsx │ │ │ │ ├── Emphasis.test.jsx │ │ │ │ └── index.js │ │ │ ├── Enumeration/ │ │ │ │ ├── Enumeration.component.jsx │ │ │ │ ├── Enumeration.module.css │ │ │ │ ├── Enumeration.propTypes.js │ │ │ │ ├── Enumeration.stories.jsx │ │ │ │ ├── Enumeration.stories.module.css │ │ │ │ ├── Enumeration.test.jsx │ │ │ │ ├── Header/ │ │ │ │ │ ├── Header.component.jsx │ │ │ │ │ ├── Header.module.css │ │ │ │ │ ├── Header.propTypes.js │ │ │ │ │ ├── Header.test.jsx │ │ │ │ │ ├── HeaderEnumeration.component.jsx │ │ │ │ │ ├── HeaderInput.component.jsx │ │ │ │ │ ├── HeaderInput.test.jsx │ │ │ │ │ ├── HeaderSelected.component.jsx │ │ │ │ │ └── headerSelected.test.jsx │ │ │ │ ├── Items/ │ │ │ │ │ ├── EmptyListPlaceholder.component.jsx │ │ │ │ │ ├── EmptyListPlaceholder.module.css │ │ │ │ │ ├── Item/ │ │ │ │ │ │ ├── Item.component.jsx │ │ │ │ │ │ ├── Item.module.css │ │ │ │ │ │ ├── Item.propTypes.js │ │ │ │ │ │ ├── Item.test.jsx │ │ │ │ │ │ ├── ItemEdit.component.jsx │ │ │ │ │ │ ├── ItemEdit.propTypes.js │ │ │ │ │ │ ├── ItemEdit.test.jsx │ │ │ │ │ │ ├── utils.js │ │ │ │ │ │ └── utils.test.js │ │ │ │ │ ├── Items.component.jsx │ │ │ │ │ ├── Items.module.css │ │ │ │ │ └── ItemsEnumeration.component.jsx │ │ │ │ ├── displayModes.js │ │ │ │ └── index.js │ │ │ ├── FilterBar/ │ │ │ │ ├── Filter.stories.jsx │ │ │ │ ├── FilterBar.component.jsx │ │ │ │ ├── FilterBar.module.css │ │ │ │ ├── FilterBar.test.jsx │ │ │ │ └── index.js │ │ │ ├── FocusManager/ │ │ │ │ ├── FocusManager.component.jsx │ │ │ │ ├── FocusManager.test.jsx │ │ │ │ └── index.js │ │ │ ├── FormatValue/ │ │ │ │ ├── FormatValue.component.jsx │ │ │ │ ├── FormatValue.module.css │ │ │ │ ├── FormatValue.stories.jsx │ │ │ │ ├── FormatValue.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── FormatValue.test.js.snap │ │ │ │ │ └── FormatValue.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Gesture/ │ │ │ │ └── index.ts │ │ │ ├── GridLayout/ │ │ │ │ ├── Dashboard.stories.jsx │ │ │ │ ├── Grid.component.jsx │ │ │ │ ├── Grid.component.test.jsx │ │ │ │ ├── Grid.module.css │ │ │ │ ├── Tile/ │ │ │ │ │ ├── Body/ │ │ │ │ │ │ ├── TileBody.component.test.tsx │ │ │ │ │ │ ├── TileBody.component.tsx │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ └── TileBody.component.test.tsx.snap │ │ │ │ │ ├── Footer/ │ │ │ │ │ │ ├── TileFooter.component.test.tsx │ │ │ │ │ │ ├── TileFooter.component.tsx │ │ │ │ │ │ ├── TileFooter.module.css │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ └── TileFooter.component.test.tsx.snap │ │ │ │ │ ├── Header/ │ │ │ │ │ │ ├── TileHeader.component.test.tsx │ │ │ │ │ │ ├── TileHeader.component.tsx │ │ │ │ │ │ ├── TileHeader.module.css │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ └── TileHeader.component.test.tsx.snap │ │ │ │ │ ├── Skeleton/ │ │ │ │ │ │ ├── SkeletonTile.component.test.tsx │ │ │ │ │ │ ├── SkeletonTile.component.tsx │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ └── SkeletonTile.component.test.tsx.snap │ │ │ │ │ ├── Tile.component.test.tsx │ │ │ │ │ ├── Tile.component.tsx │ │ │ │ │ ├── Tile.module.css │ │ │ │ │ ├── context.ts │ │ │ │ │ └── index.ts │ │ │ │ └── index.js │ │ │ ├── GuidedTour/ │ │ │ │ ├── GuidedTour.component.jsx │ │ │ │ ├── GuidedTour.module.css │ │ │ │ ├── GuidedTour.stories.jsx │ │ │ │ ├── GuidedTour.test.jsx │ │ │ │ ├── README.md │ │ │ │ └── index.js │ │ │ ├── HeaderBar/ │ │ │ │ ├── HeaderBar.component.jsx │ │ │ │ ├── HeaderBar.module.css │ │ │ │ ├── HeaderBar.stories.jsx │ │ │ │ ├── HeaderBar.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── HeaderBar.test.js.snap │ │ │ │ │ └── HeaderBar.test.jsx.snap │ │ │ │ ├── index.js │ │ │ │ └── primitives/ │ │ │ │ ├── AppNotification.component.jsx │ │ │ │ ├── CallToAction.component.jsx │ │ │ │ ├── Environment.component.jsx │ │ │ │ ├── GenericAction.component.jsx │ │ │ │ ├── Help.component.jsx │ │ │ │ ├── Information.component.jsx │ │ │ │ ├── Intercom.component.jsx │ │ │ │ ├── Logo.component.jsx │ │ │ │ ├── Search.component.jsx │ │ │ │ └── User.component.jsx │ │ │ ├── HttpError/ │ │ │ │ ├── HttpError.component.jsx │ │ │ │ ├── HttpError.module.css │ │ │ │ ├── HttpError.snapshot.test.jsx │ │ │ │ ├── HttpError.stories.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── HttpError.snapshot.test.js.snap │ │ │ │ │ └── HttpError.snapshot.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Icon/ │ │ │ │ └── index.ts │ │ │ ├── IconsProvider/ │ │ │ │ ├── README.md │ │ │ │ └── index.ts │ │ │ ├── Inject/ │ │ │ │ ├── Inject.component.tsx │ │ │ │ ├── Inject.md │ │ │ │ ├── Inject.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── Inject.test.jsx.snap │ │ │ │ └── index.ts │ │ │ ├── JSONSchemaRenderer/ │ │ │ │ ├── JSONSchemaRenderer.component.jsx │ │ │ │ ├── JSONSchemaRenderer.module.css │ │ │ │ ├── JSONSchemaRenderer.stories.jsx │ │ │ │ ├── JSONSchemaRenderer.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── JSONSchemaRenderer.test.js.snap │ │ │ │ │ └── JSONSchemaRenderer.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Layout/ │ │ │ │ ├── AppLayout.stories.jsx │ │ │ │ ├── Layout.component.jsx │ │ │ │ ├── Layout.md │ │ │ │ ├── Layout.module.css │ │ │ │ ├── Layout.test.jsx │ │ │ │ ├── OneColumn/ │ │ │ │ │ ├── OneColumn.component.jsx │ │ │ │ │ ├── OneColumn.module.css │ │ │ │ │ ├── OneColumn.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── OneColumn.test.js.snap │ │ │ │ │ │ └── OneColumn.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── SkipLinks/ │ │ │ │ │ ├── SkipLinks.component.tsx │ │ │ │ │ ├── SkipLinks.module.css │ │ │ │ │ ├── SkipLinks.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── SkipLinks.test.js.snap │ │ │ │ │ │ └── SkipLinks.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── TwoColumns/ │ │ │ │ │ ├── TwoColumns.component.jsx │ │ │ │ │ ├── TwoColumns.module.css │ │ │ │ │ ├── TwoColumns.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── TwoColumns.test.js.snap │ │ │ │ │ │ └── TwoColumns.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ └── index.js │ │ │ ├── Link/ │ │ │ │ └── index.ts │ │ │ ├── List/ │ │ │ │ ├── List.component.jsx │ │ │ │ ├── List.md │ │ │ │ ├── List.module.css │ │ │ │ ├── List.stories.jsx │ │ │ │ ├── List.test.jsx │ │ │ │ ├── ListComposition/ │ │ │ │ │ ├── ColumnChooser/ │ │ │ │ │ │ ├── ColumnChooser.component.jsx │ │ │ │ │ │ ├── ColumnChooser.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── DisplayMode/ │ │ │ │ │ │ ├── DisplayModeToggle.scss │ │ │ │ │ │ ├── ListDisplayMode.component.jsx │ │ │ │ │ │ ├── ListDisplayMode.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── ListDisplayMode.component.test.js.snap │ │ │ │ │ │ │ └── ListDisplayMode.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ItemsNumber/ │ │ │ │ │ │ ├── ItemsNumber.component.jsx │ │ │ │ │ │ ├── ItemsNumber.component.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── LazyLoadingList/ │ │ │ │ │ │ ├── LazyLoadingList.component.jsx │ │ │ │ │ │ ├── LazyLoadingList.component.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── LazyLoadingList.component.test.js.snap │ │ │ │ │ │ │ └── LazyLoadingList.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── List.module.css │ │ │ │ │ ├── Manager/ │ │ │ │ │ │ ├── ListManager.component.jsx │ │ │ │ │ │ ├── ListManager.component.test.jsx │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ ├── useCollectionActions.hook.js │ │ │ │ │ │ │ ├── useCollectionActions.hook.test.jsx │ │ │ │ │ │ │ ├── useCollectionFilter.hook.js │ │ │ │ │ │ │ ├── useCollectionFilter.hook.test.jsx │ │ │ │ │ │ │ ├── useCollectionSelection.hook.js │ │ │ │ │ │ │ ├── useCollectionSelection.hook.test.jsx │ │ │ │ │ │ │ ├── useCollectionSort.hook.js │ │ │ │ │ │ │ ├── useCollectionSort.hook.test.jsx │ │ │ │ │ │ │ ├── useColumnsVisibility.hook.js │ │ │ │ │ │ │ └── useColumnsVisibility.hook.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── README.md │ │ │ │ │ ├── SortBy/ │ │ │ │ │ │ ├── SortBy.component.jsx │ │ │ │ │ │ ├── SortBy.component.test.jsx │ │ │ │ │ │ ├── SortBy.md │ │ │ │ │ │ ├── SortBy.module.css │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── SortBy.component.test.js.snap │ │ │ │ │ │ │ └── SortBy.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── TextFilter/ │ │ │ │ │ │ ├── TextFilter.component.jsx │ │ │ │ │ │ ├── TextFilter.component.md │ │ │ │ │ │ ├── TextFilter.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── TextFilter.component.test.js.snap │ │ │ │ │ │ │ └── TextFilter.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Toolbar/ │ │ │ │ │ │ ├── ListToolbar.component.jsx │ │ │ │ │ │ ├── ListToolbar.component.test.jsx │ │ │ │ │ │ ├── ListToolbar.module.css │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── ListToolbar.component.test.js.snap │ │ │ │ │ │ │ └── ListToolbar.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── VList/ │ │ │ │ │ │ ├── VList.component.jsx │ │ │ │ │ │ ├── VList.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── collection.js │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── context.js │ │ │ │ │ ├── context.test.jsx │ │ │ │ │ ├── doc/ │ │ │ │ │ │ ├── developer-guide.md │ │ │ │ │ │ └── principle.md │ │ │ │ │ └── index.js │ │ │ │ ├── ListComposition.stories.jsx │ │ │ │ ├── ListToVirtualizedList/ │ │ │ │ │ ├── ListToVirtualizedList.component.jsx │ │ │ │ │ ├── ListToVirtualizedList.test.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── Toolbar/ │ │ │ │ │ ├── ColumnChooserButton/ │ │ │ │ │ │ ├── ColumnChooser/ │ │ │ │ │ │ │ ├── ColumnChooser.component.jsx │ │ │ │ │ │ │ ├── ColumnChooser.component.test.jsx │ │ │ │ │ │ │ ├── ColumnChooser.module.css │ │ │ │ │ │ │ ├── ColumnChooser.stories.jsx │ │ │ │ │ │ │ ├── ColumnChooserBody/ │ │ │ │ │ │ │ │ ├── ColumnChooserBody.component.jsx │ │ │ │ │ │ │ │ ├── ColumnChooserBody.component.test.jsx │ │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ │ ├── ColumnChooserBody.component.test.js.snap │ │ │ │ │ │ │ │ │ └── ColumnChooserBody.component.test.jsx.snap │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── ColumnChooserFooter/ │ │ │ │ │ │ │ │ ├── ColumnChooserFooter.component.jsx │ │ │ │ │ │ │ │ ├── ColumnChooserFooter.component.test.jsx │ │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ │ ├── ColumnChooserFooter.component.test.js.snap │ │ │ │ │ │ │ │ │ └── ColumnChooserFooter.component.test.jsx.snap │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── ColumnChooserHeader/ │ │ │ │ │ │ │ │ ├── ColumnChooserHeader.component.jsx │ │ │ │ │ │ │ │ ├── ColumnChooserHeader.component.test.jsx │ │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ │ ├── ColumnChooserHeader.component.test.js.snap │ │ │ │ │ │ │ │ │ └── ColumnChooserHeader.component.test.jsx.snap │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── ColumnChooserRow/ │ │ │ │ │ │ │ │ ├── ColumnChooserRow.component.jsx │ │ │ │ │ │ │ │ ├── ColumnChooserRow.component.test.jsx │ │ │ │ │ │ │ │ ├── RowCheckbox/ │ │ │ │ │ │ │ │ │ ├── RowCheckbox.component.jsx │ │ │ │ │ │ │ │ │ ├── RowCheckbox.component.test.jsx │ │ │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ │ │ ├── RowCheckbox.component.test.js.snap │ │ │ │ │ │ │ │ │ │ └── RowCheckbox.component.test.jsx.snap │ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ │ ├── RowLabel/ │ │ │ │ │ │ │ │ │ ├── RowLabel.component.jsx │ │ │ │ │ │ │ │ │ ├── RowLabel.component.test.jsx │ │ │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ │ │ ├── RowLabel.component.test.js.snap │ │ │ │ │ │ │ │ │ │ └── RowLabel.component.test.jsx.snap │ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ │ ├── ColumnChooserRow.component.test.js.snap │ │ │ │ │ │ │ │ │ └── ColumnChooserRow.component.test.jsx.snap │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── ColumnChooserTable/ │ │ │ │ │ │ │ │ ├── ColumnChooserTable.component.jsx │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── SelectAllColumnsCheckbox/ │ │ │ │ │ │ │ │ ├── SelectAllColumnsCheckbox.component.jsx │ │ │ │ │ │ │ │ ├── SelectAllColumnsCheckbox.component.test.jsx │ │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ │ ├── SelectAllColumnsCheckbox.component.test.js.snap │ │ │ │ │ │ │ │ │ └── SelectAllColumnsCheckbox.component.test.jsx.snap │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ ├── ColumnChooser.component.test.js.snap │ │ │ │ │ │ │ │ └── ColumnChooser.component.test.jsx.snap │ │ │ │ │ │ │ ├── columnChooser.context.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── ColumnChooserButton.component.jsx │ │ │ │ │ │ ├── ColumnChooserButton.component.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── columnChooser.propTypes.js │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ ├── columnChooserManager.hook.js │ │ │ │ │ │ │ ├── columnChooserManager.hook.test.jsx │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── columnChooser.utils.js │ │ │ │ │ │ ├── columnChooser.utils.test.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── DisplayModeToggle/ │ │ │ │ │ │ ├── DisplayModeToggle.component.jsx │ │ │ │ │ │ ├── DisplayModeToggle.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── DisplayModeToggle.test.js.snap │ │ │ │ │ │ │ └── DisplayModeToggle.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ItemsNumber/ │ │ │ │ │ │ ├── ItemsNumber.component.jsx │ │ │ │ │ │ ├── ItemsNumber.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Label/ │ │ │ │ │ │ ├── Label.component.jsx │ │ │ │ │ │ ├── Label.snapshot.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Label.snapshot.test.js.snap │ │ │ │ │ │ │ └── Label.snapshot.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Pagination/ │ │ │ │ │ │ ├── Pagination.component.jsx │ │ │ │ │ │ ├── Pagination.module.css │ │ │ │ │ │ ├── Pagination.snapshot.test.jsx │ │ │ │ │ │ ├── Pagination.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Pagination.snapshot.test.js.snap │ │ │ │ │ │ │ └── Pagination.snapshot.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── SelectAll/ │ │ │ │ │ │ ├── SelectAll.component.jsx │ │ │ │ │ │ ├── SelectAll.component.test.jsx │ │ │ │ │ │ ├── SelectAll.module.css │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── SelectSortBy/ │ │ │ │ │ │ ├── SelectSortBy.component.jsx │ │ │ │ │ │ ├── SelectSortBy.module.css │ │ │ │ │ │ ├── SelectSortBy.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── SelectSortBy.test.js.snap │ │ │ │ │ │ │ └── SelectSortBy.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Toolbar.component.jsx │ │ │ │ │ ├── Toolbar.module.css │ │ │ │ │ ├── Toolbar.snapshot.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── Toolbar.snapshot.test.js.snap │ │ │ │ │ │ └── Toolbar.snapshot.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── List.test.js.snap │ │ │ │ │ └── List.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── ListView/ │ │ │ │ ├── Header/ │ │ │ │ │ ├── Header.component.jsx │ │ │ │ │ ├── Header.module.css │ │ │ │ │ ├── Header.test.jsx │ │ │ │ │ ├── HeaderInput.component.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── Header.test.js.snap │ │ │ │ │ │ └── Header.test.jsx.snap │ │ │ │ │ └── headerInput.test.jsx │ │ │ │ ├── Items/ │ │ │ │ │ ├── Item/ │ │ │ │ │ │ ├── Item.component.jsx │ │ │ │ │ │ ├── Item.propTypes.js │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── item.snapshot.test.js.snap │ │ │ │ │ │ │ └── item.snapshot.test.jsx.snap │ │ │ │ │ │ └── item.snapshot.test.jsx │ │ │ │ │ ├── Items.component.jsx │ │ │ │ │ ├── Items.module.css │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── items.test.js.snap │ │ │ │ │ │ └── items.test.jsx.snap │ │ │ │ │ └── items.test.jsx │ │ │ │ ├── ListView.component.jsx │ │ │ │ ├── ListView.module.css │ │ │ │ ├── ListView.stories.jsx │ │ │ │ └── index.js │ │ │ ├── Loader/ │ │ │ │ ├── Loader.component.jsx │ │ │ │ ├── Loader.md │ │ │ │ ├── Loader.module.css │ │ │ │ ├── Loader.stories.jsx │ │ │ │ ├── Loader.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Loader.test.js.snap │ │ │ │ │ └── Loader.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── MultiSelect/ │ │ │ │ ├── Dropdown.container.jsx │ │ │ │ ├── Dropdown.module.css │ │ │ │ ├── ItemOption.component.jsx │ │ │ │ ├── ItemOption.module.css │ │ │ │ ├── ItemView.component.jsx │ │ │ │ ├── MultiSelect.container.jsx │ │ │ │ ├── MultiSelect.module.css │ │ │ │ ├── MultiSelect.stories.jsx │ │ │ │ ├── README.md │ │ │ │ ├── constants.js │ │ │ │ └── index.js │ │ │ ├── Notification/ │ │ │ │ ├── Notification.component.jsx │ │ │ │ ├── Notification.module.css │ │ │ │ ├── Notification.stories.jsx │ │ │ │ ├── Notification.test.jsx │ │ │ │ └── index.js │ │ │ ├── ObjectViewer/ │ │ │ │ ├── DataTreeViewer.stories.jsx │ │ │ │ ├── JSONLike/ │ │ │ │ │ ├── JSONLike.component.jsx │ │ │ │ │ ├── JSONLike.module.css │ │ │ │ │ ├── JSONLike.test.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── List/ │ │ │ │ │ ├── List.component.jsx │ │ │ │ │ ├── List.module.css │ │ │ │ │ ├── List.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── List.test.js.snap │ │ │ │ │ │ └── List.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── ObjectViewer.component.jsx │ │ │ │ ├── ObjectViewer.test.jsx │ │ │ │ ├── Table/ │ │ │ │ │ ├── Table.component.jsx │ │ │ │ │ ├── Table.module.css │ │ │ │ │ ├── Table.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── Table.test.js.snap │ │ │ │ │ │ └── Table.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── convertDate.js │ │ │ │ ├── index.js │ │ │ │ ├── toflat.js │ │ │ │ └── toflat.test.js │ │ │ ├── OverlayTrigger/ │ │ │ │ ├── OverlayTrigger.component.jsx │ │ │ │ ├── OverlayTrigger.forked.jsx │ │ │ │ ├── OverlayTrigger.module.css │ │ │ │ ├── OverlayTrigger.test.jsx │ │ │ │ ├── index.js │ │ │ │ ├── overlay.js │ │ │ │ └── overlay.test.js │ │ │ ├── PieChart/ │ │ │ │ ├── PieChart.component.jsx │ │ │ │ ├── PieChart.module.css │ │ │ │ ├── PieChart.stories.jsx │ │ │ │ ├── PieChart.test.jsx │ │ │ │ ├── PieChartButton.component.jsx │ │ │ │ ├── PieChartButton.test.jsx │ │ │ │ ├── PieChartIcon.component.jsx │ │ │ │ ├── PieChartIcon.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── PieChart.test.jsx.snap │ │ │ │ │ ├── PieChartButton.test.jsx.snap │ │ │ │ │ ├── PieChartIcon.test.js.snap │ │ │ │ │ └── PieChartIcon.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Progress/ │ │ │ │ ├── Progress.component.jsx │ │ │ │ ├── Progress.module.css │ │ │ │ ├── Progress.test.jsx │ │ │ │ ├── ProgressBar.stories.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Progress.test.js.snap │ │ │ │ │ └── Progress.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── QualityBar/ │ │ │ │ ├── QualityBar.component.tsx │ │ │ │ ├── QualityBar.stories.jsx │ │ │ │ └── index.ts │ │ │ ├── RadarChart/ │ │ │ │ ├── RadarChart.component.jsx │ │ │ │ ├── RadarChart.module.css │ │ │ │ ├── RadarChart.stories.jsx │ │ │ │ ├── RadarChart.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── RadarChart.test.js.snap │ │ │ │ │ └── RadarChart.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── RatioBar/ │ │ │ │ ├── RatioBar.component.tsx │ │ │ │ ├── RatioBar.stories.jsx │ │ │ │ └── index.ts │ │ │ ├── ResourceList/ │ │ │ │ ├── Resource/ │ │ │ │ │ ├── Resource.component.jsx │ │ │ │ │ ├── Resource.module.css │ │ │ │ │ ├── Resource.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── Resource.test.js.snap │ │ │ │ │ │ └── Resource.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── ResourceList.component.jsx │ │ │ │ ├── ResourceList.module.css │ │ │ │ ├── ResourceList.propTypes.js │ │ │ │ ├── ResourceList.stories.jsx │ │ │ │ ├── ResourceList.test.jsx │ │ │ │ ├── Toolbar/ │ │ │ │ │ ├── NameFilter/ │ │ │ │ │ │ ├── NameFilter.component.jsx │ │ │ │ │ │ ├── NameFilter.module.css │ │ │ │ │ │ ├── NameFilter.snap.test.jsx │ │ │ │ │ │ ├── NameFilter.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── NameFilter.snap.test.js.snap │ │ │ │ │ │ │ └── NameFilter.snap.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── SortOptions/ │ │ │ │ │ │ ├── OrderChooser/ │ │ │ │ │ │ │ ├── OrderChooser.component.jsx │ │ │ │ │ │ │ ├── OrderChooser.module.css │ │ │ │ │ │ │ ├── OrderChooser.test.jsx │ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ │ ├── OrderChooser.test.js.snap │ │ │ │ │ │ │ │ └── OrderChooser.test.jsx.snap │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── SortOptions.component.jsx │ │ │ │ │ │ ├── SortOptions.module.css │ │ │ │ │ │ ├── SortOptions.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── SortOptions.test.js.snap │ │ │ │ │ │ │ └── SortOptions.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── StateFilter/ │ │ │ │ │ │ ├── StateFilter.component.jsx │ │ │ │ │ │ ├── StateFilter.module.css │ │ │ │ │ │ ├── StateFilter.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── StateFilter.test.js.snap │ │ │ │ │ │ │ └── StateFilter.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Toolbar.component.jsx │ │ │ │ │ ├── Toolbar.module.css │ │ │ │ │ ├── Toolbar.snap.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── Toolbar.snap.test.js.snap │ │ │ │ │ │ └── Toolbar.snap.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ └── index.js │ │ │ ├── ResourcePicker/ │ │ │ │ ├── ResourcePicker.component.jsx │ │ │ │ ├── ResourcePicker.module.css │ │ │ │ ├── ResourcePicker.stories.jsx │ │ │ │ ├── ResourcePicker.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── ResourcePicker.test.js.snap │ │ │ │ │ └── ResourcePicker.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Rich/ │ │ │ │ ├── Error/ │ │ │ │ │ ├── RichError.component.jsx │ │ │ │ │ ├── RichError.component.test.jsx │ │ │ │ │ ├── RichError.module.css │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── RichError.component.test.js.snap │ │ │ │ │ │ └── RichError.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── HeaderTitle/ │ │ │ │ │ ├── HeaderTitle.component.jsx │ │ │ │ │ ├── HeaderTitle.component.test.jsx │ │ │ │ │ ├── HeaderTitle.module.css │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── HeaderTitle.component.test.js.snap │ │ │ │ │ │ └── HeaderTitle.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── Layout/ │ │ │ │ │ ├── RichLayout.component.jsx │ │ │ │ │ ├── RichLayout.module.css │ │ │ │ │ ├── RichLayout.stories.jsx │ │ │ │ │ ├── RichLayout.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── RichLayout.test.js.snap │ │ │ │ │ │ └── RichLayout.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ └── index.js │ │ │ ├── SidePanel/ │ │ │ │ ├── SidePanel.component.jsx │ │ │ │ ├── SidePanel.module.css │ │ │ │ ├── SidePanel.stories.jsx │ │ │ │ ├── SidePanel.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── SidePanel.test.js.snap │ │ │ │ │ └── SidePanel.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Skeleton/ │ │ │ │ ├── Skeleton.component.tsx │ │ │ │ ├── Skeleton.md │ │ │ │ ├── Skeleton.module.css │ │ │ │ ├── Skeleton.stories.jsx │ │ │ │ ├── Skeleton.test.jsx │ │ │ │ └── index.ts │ │ │ ├── Slider/ │ │ │ │ ├── Slider.component.tsx │ │ │ │ ├── Slider.module.css │ │ │ │ ├── Slider.stories.jsx │ │ │ │ ├── Slider.test.tsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── Slider.test.tsx.snap │ │ │ │ └── index.ts │ │ │ ├── Status/ │ │ │ │ ├── Status.component.jsx │ │ │ │ ├── Status.module.css │ │ │ │ ├── Status.stories.jsx │ │ │ │ ├── Status.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Status.test.js.snap │ │ │ │ │ └── Status.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Stepper/ │ │ │ │ ├── Stepper.component.jsx │ │ │ │ ├── Stepper.component.module.css │ │ │ │ ├── Stepper.component.test.jsx │ │ │ │ ├── Stepper.stories.jsx │ │ │ │ ├── StepperTransition.component.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Stepper.component.test.js.snap │ │ │ │ │ └── Stepper.component.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── SubHeaderBar/ │ │ │ │ ├── SubHeader.stories.jsx │ │ │ │ ├── SubHeaderBar.component.jsx │ │ │ │ ├── SubHeaderBar.md │ │ │ │ ├── SubHeaderBar.module.css │ │ │ │ ├── SubHeaderBar.test.jsx │ │ │ │ ├── TitleSubHeader/ │ │ │ │ │ ├── SubTitle.component.jsx │ │ │ │ │ ├── SubTitle.test.jsx │ │ │ │ │ ├── TitleSubHeader.component.jsx │ │ │ │ │ ├── TitleSubHeader.module.css │ │ │ │ │ ├── TitleSubHeader.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── SubTitle.test.js.snap │ │ │ │ │ │ ├── SubTitle.test.jsx.snap │ │ │ │ │ │ ├── TitleSubHeader.test.js.snap │ │ │ │ │ │ └── TitleSubHeader.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── SubHeaderBar.test.js.snap │ │ │ │ │ └── SubHeaderBar.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── TabBar/ │ │ │ │ ├── TabBar.component.jsx │ │ │ │ ├── TabBar.module.css │ │ │ │ ├── TabBar.test.jsx │ │ │ │ ├── Tabs.stories.jsx │ │ │ │ └── index.js │ │ │ ├── Tag/ │ │ │ │ ├── Tag.component.jsx │ │ │ │ ├── Tag.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Tag.test.js.snap │ │ │ │ │ └── Tag.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Toggle/ │ │ │ │ ├── LabelToggle/ │ │ │ │ │ ├── LabelToggle.component.jsx │ │ │ │ │ ├── LabelToggle.module.css │ │ │ │ │ ├── LabelToggleComponent.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── LabelToggleComponent.test.js.snap │ │ │ │ │ │ └── LabelToggleComponent.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── Toggle.component.jsx │ │ │ │ ├── Toggle.stories.jsx │ │ │ │ ├── Toggle.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Toggle.test.js.snap │ │ │ │ │ └── Toggle.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── TooltipTrigger/ │ │ │ │ ├── Tooltip.stories.jsx │ │ │ │ ├── TooltipTrigger.component.jsx │ │ │ │ ├── TooltipTrigger.hook.js │ │ │ │ ├── TooltipTrigger.module.css │ │ │ │ ├── TooltipTrigger.test.jsx │ │ │ │ └── index.js │ │ │ ├── TreeView/ │ │ │ │ ├── FolderTreeView.stories.jsx │ │ │ │ ├── TreeView.component.jsx │ │ │ │ ├── TreeView.module.css │ │ │ │ ├── TreeView.test.jsx │ │ │ │ ├── TreeViewItem/ │ │ │ │ │ ├── TreeViewItem.component.jsx │ │ │ │ │ ├── TreeViewItem.module.css │ │ │ │ │ ├── TreeViewItem.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── TreeViewItem.test.js.snap │ │ │ │ │ │ └── TreeViewItem.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── TreeView.test.js.snap │ │ │ │ │ └── TreeView.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Typeahead/ │ │ │ │ ├── Typeahead.component.jsx │ │ │ │ ├── Typeahead.component.renderers.jsx │ │ │ │ ├── Typeahead.module.css │ │ │ │ ├── Typeahead.snapshot.test.jsx │ │ │ │ ├── Typeahead.stories.jsx │ │ │ │ ├── Typeahead.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── Typeahead.snapshot.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── VirtualizedList/ │ │ │ │ ├── CellActions/ │ │ │ │ │ ├── ActionsColumn.component.jsx │ │ │ │ │ ├── CellActions.component.jsx │ │ │ │ │ ├── CellActions.test.jsx │ │ │ │ │ ├── RowLargeCellActions.module.css │ │ │ │ │ ├── RowTableCellActions.module.css │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── CellActions.test.js.snap │ │ │ │ │ │ └── CellActions.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── CellBadge/ │ │ │ │ │ ├── BadgeColumn.component.jsx │ │ │ │ │ ├── CellBadge.component.jsx │ │ │ │ │ ├── CellBadge.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── CellBadge.test.js.snap │ │ │ │ │ │ └── CellBadge.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── CellBoolean/ │ │ │ │ │ ├── BooleanColumn.component.jsx │ │ │ │ │ ├── CellBoolean.component.jsx │ │ │ │ │ ├── CellBoolean.module.css │ │ │ │ │ ├── CellBoolean.test.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── CellCheckbox/ │ │ │ │ │ ├── CellCheckbox.component.jsx │ │ │ │ │ ├── CellCheckbox.module.css │ │ │ │ │ ├── CellCheckbox.test.jsx │ │ │ │ │ ├── CheckboxColumn.component.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── CellCheckbox.test.js.snap │ │ │ │ │ │ └── CellCheckbox.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── CellDatetime/ │ │ │ │ │ ├── CellDatetime.component.jsx │ │ │ │ │ ├── CellDatetime.module.css │ │ │ │ │ ├── CellDatetime.test.jsx │ │ │ │ │ ├── DatetimeColumn.component.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── CellDatetime.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── CellIconText/ │ │ │ │ │ ├── CellIconText.component.jsx │ │ │ │ │ ├── CellIconText.module.css │ │ │ │ │ ├── CellIconText.test.jsx │ │ │ │ │ ├── IconTextColumn.component.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── CellIconText.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── CellLabel/ │ │ │ │ │ ├── CellLabel.component.jsx │ │ │ │ │ ├── CellLabel.test.jsx │ │ │ │ │ ├── LabelColumn.component.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── CellLabel.test.js.snap │ │ │ │ │ │ └── CellLabel.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── CellLink/ │ │ │ │ │ ├── CellLink.component.jsx │ │ │ │ │ ├── CellLink.module.css │ │ │ │ │ ├── CellLink.test.jsx │ │ │ │ │ ├── LinkColumn.component.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── CellMappedData/ │ │ │ │ │ ├── CellMappedData.component.jsx │ │ │ │ │ ├── CellMappedData.component.test.jsx │ │ │ │ │ ├── MappedDataColumn.component.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── CellMappedData.component.test.js.snap │ │ │ │ │ │ └── CellMappedData.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── CellQualityBar/ │ │ │ │ │ ├── CellQualityBar.component.jsx │ │ │ │ │ ├── CellQualityBar.test.jsx │ │ │ │ │ ├── QualityBarColumn.component.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── CellQualityBar.test.js.snap │ │ │ │ │ │ └── CellQualityBar.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── CellTextIcon/ │ │ │ │ │ ├── CellWithIcon.component.jsx │ │ │ │ │ ├── CellWithIcon.module.css │ │ │ │ │ ├── CellWithIcon.test.jsx │ │ │ │ │ ├── TextIconColumn.component.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── CellWithIcon.test.js.snap │ │ │ │ │ │ └── CellWithIcon.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── CellTitle/ │ │ │ │ │ ├── CellTitle.component.jsx │ │ │ │ │ ├── CellTitle.module.css │ │ │ │ │ ├── CellTitle.test.jsx │ │ │ │ │ ├── CellTitleActions.component.jsx │ │ │ │ │ ├── CellTitleActions.module.css │ │ │ │ │ ├── CellTitleActions.test.jsx │ │ │ │ │ ├── CellTitleInput.component.jsx │ │ │ │ │ ├── CellTitleInput.test.jsx │ │ │ │ │ ├── CellTitleSelector.component.jsx │ │ │ │ │ ├── CellTitleSelector.test.jsx │ │ │ │ │ ├── TitleColumn.component.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── CellTitle.test.jsx.snap │ │ │ │ │ │ ├── CellTitleInput.test.js.snap │ │ │ │ │ │ ├── CellTitleInput.test.jsx.snap │ │ │ │ │ │ ├── CellTitleSelector.test.js.snap │ │ │ │ │ │ └── CellTitleSelector.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── Content.component.jsx │ │ │ │ ├── Content.component.test.jsx │ │ │ │ ├── HeaderCheckbox/ │ │ │ │ │ ├── HeaderCheckbox.component.jsx │ │ │ │ │ ├── HeaderCheckbox.module.css │ │ │ │ │ ├── HeaderCheckbox.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── HeaderCheckbox.test.js.snap │ │ │ │ │ │ └── HeaderCheckbox.test.jsx.snap │ │ │ │ │ └── index.jsx │ │ │ │ ├── HeaderIcon/ │ │ │ │ │ ├── HeaderIcon.component.jsx │ │ │ │ │ ├── HeaderIcon.component.test.jsx │ │ │ │ │ ├── HeaderIcon.module.css │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── HeaderIcon.component.test.js.snap │ │ │ │ │ │ └── HeaderIcon.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── HeaderResizable/ │ │ │ │ │ ├── HeaderResizable.component.jsx │ │ │ │ │ ├── HeaderResizable.component.test.jsx │ │ │ │ │ ├── HeaderResizable.module.css │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── HeaderResizable.component.test.js.snap │ │ │ │ │ │ └── HeaderResizable.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── ListGrid/ │ │ │ │ │ ├── ListGrid.component.jsx │ │ │ │ │ ├── ListGrid.module.css │ │ │ │ │ ├── ListGrid.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── ListGrid.test.js.snap │ │ │ │ │ │ └── ListGrid.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── ListTable/ │ │ │ │ │ ├── ListTable.component.jsx │ │ │ │ │ ├── ListTable.module.css │ │ │ │ │ ├── ListTable.test.jsx │ │ │ │ │ ├── RowThemes.js │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── ListTable.test.js.snap │ │ │ │ │ │ └── ListTable.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── NoRows/ │ │ │ │ │ ├── NoRows.component.jsx │ │ │ │ │ ├── NoRows.module.css │ │ │ │ │ ├── NoRows.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── NoRows.test.js.snap │ │ │ │ │ │ └── NoRows.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── PropTypes.js │ │ │ │ ├── README.md │ │ │ │ ├── RendererSelector.component.jsx │ │ │ │ ├── RendererSelector.test.jsx │ │ │ │ ├── RowCollapsiblePanel/ │ │ │ │ │ ├── RowCollapsiblePanel.component.jsx │ │ │ │ │ ├── RowCollapsiblePanel.module.css │ │ │ │ │ ├── RowCollapsiblePanel.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── RowCollapsiblePanel.test.js.snap │ │ │ │ │ │ └── RowCollapsiblePanel.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── RowLarge/ │ │ │ │ │ ├── RowLarge.component.jsx │ │ │ │ │ ├── RowLarge.module.css │ │ │ │ │ ├── RowLarge.test.jsx │ │ │ │ │ ├── RowThemes.js │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── RowLarge.test.js.snap │ │ │ │ │ │ └── RowLarge.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── RowSelection/ │ │ │ │ │ ├── RowSelection.component.jsx │ │ │ │ │ ├── RowSelection.module.css │ │ │ │ │ ├── RowSelection.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── RowSelection.test.js.snap │ │ │ │ │ │ └── RowSelection.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── VirtualizedList.component.jsx │ │ │ │ ├── VirtualizedList.module.css │ │ │ │ ├── VirtualizedList.stories.jsx │ │ │ │ ├── VirtualizedList.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Content.component.test.js.snap │ │ │ │ │ ├── Content.component.test.jsx.snap │ │ │ │ │ ├── RendererSelector.test.js.snap │ │ │ │ │ ├── RendererSelector.test.jsx.snap │ │ │ │ │ └── VirtualizedList.test.jsx.snap │ │ │ │ ├── collection.js │ │ │ │ ├── event/ │ │ │ │ │ ├── rowclick.js │ │ │ │ │ └── rowclick.test.js │ │ │ │ ├── index.js │ │ │ │ ├── utils/ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── gridrow.test.jsx.snap │ │ │ │ │ │ ├── tablerow.test.js.snap │ │ │ │ │ │ └── tablerow.test.jsx.snap │ │ │ │ │ ├── constants.js │ │ │ │ │ ├── dictionary.js │ │ │ │ │ ├── gridrow.js │ │ │ │ │ ├── gridrow.test.jsx │ │ │ │ │ ├── resizable.js │ │ │ │ │ ├── resizable.test.js │ │ │ │ │ ├── tablerow.jsx │ │ │ │ │ └── tablerow.test.jsx │ │ │ │ └── virtualizedListContext.jsx │ │ │ ├── WithDrawer/ │ │ │ │ ├── WithDrawer.component.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── withDrawer.test.js.snap │ │ │ │ │ └── withDrawer.test.jsx.snap │ │ │ │ ├── index.js │ │ │ │ ├── withDrawer.module.css │ │ │ │ └── withDrawer.test.jsx │ │ │ ├── constants.js │ │ │ ├── i18n/ │ │ │ │ ├── DateFnsLocale/ │ │ │ │ │ ├── formatters.js │ │ │ │ │ ├── locale.js │ │ │ │ │ └── locale.test.js │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ ├── polyfills/ │ │ │ │ └── element-closest.js │ │ │ ├── test-setup.js │ │ │ ├── theme.test.ts │ │ │ ├── theme.ts │ │ │ ├── translate.js │ │ │ ├── translate.test.js │ │ │ ├── utils/ │ │ │ │ ├── getPropsFrom.js │ │ │ │ ├── getPropsFrom.test.js │ │ │ │ ├── getTabBarBadgeLabel.js │ │ │ │ └── getTabBarBadgeLabel.test.js │ │ │ ├── wrap.test.tsx │ │ │ └── wrap.tsx │ │ ├── stylelint.config.mjs │ │ ├── talend-i18n.json │ │ ├── talend-scripts.json │ │ ├── test/ │ │ │ └── storageMock.js │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── containers/ │ │ ├── .babelrc.json │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── .storybook/ │ │ │ ├── cmf.jsx │ │ │ ├── cmfModule/ │ │ │ │ ├── actionCreators.js │ │ │ │ ├── components.js │ │ │ │ ├── expressions.js │ │ │ │ ├── index.js │ │ │ │ ├── reducers.js │ │ │ │ ├── registry.js │ │ │ │ ├── sagas.js │ │ │ │ └── settings.js │ │ │ ├── main.mjs │ │ │ ├── preview-head.html │ │ │ └── preview.jsx │ │ ├── 6.0 - breaking changes.md │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── docs.json │ │ ├── eslint.config.mjs │ │ ├── i18next-scanner.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── AboutDialog/ │ │ │ │ ├── AboutDialog.connect.js │ │ │ │ ├── AboutDialog.constant.js │ │ │ │ ├── AboutDialog.container.jsx │ │ │ │ ├── AboutDialog.sagas.js │ │ │ │ ├── AboutDialog.sagas.test.jsx │ │ │ │ ├── AboutDialog.stories.jsx │ │ │ │ ├── AboutDialog.test.jsx │ │ │ │ └── index.js │ │ │ ├── Action/ │ │ │ │ ├── Action.connect.js │ │ │ │ ├── Action.stories.jsx │ │ │ │ ├── Action.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Action.test.js.snap │ │ │ │ │ └── Action.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── ActionBar/ │ │ │ │ ├── ActionBar.connect.js │ │ │ │ ├── ActionBar.stories.jsx │ │ │ │ ├── ActionBar.test.jsx │ │ │ │ └── index.js │ │ │ ├── ActionButton/ │ │ │ │ ├── ActionButton.connect.jsx │ │ │ │ ├── ActionButton.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── ActionButton.test.js.snap │ │ │ │ │ └── ActionButton.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── ActionDropdown/ │ │ │ │ ├── ActionDropdown.connect.jsx │ │ │ │ ├── ActionDropdown.connect.md │ │ │ │ ├── ActionDropdown.stories.jsx │ │ │ │ ├── ActionDropdown.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── ActionDropdown.test.js.snap │ │ │ │ │ └── ActionDropdown.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── ActionFile/ │ │ │ │ ├── ActionFile.connect.jsx │ │ │ │ ├── ActionFile.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── ActionFile.test.js.snap │ │ │ │ │ └── ActionFile.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── ActionIconToggle/ │ │ │ │ ├── ActionIconToggle.connect.jsx │ │ │ │ ├── ActionIconToggle.connect.md │ │ │ │ ├── ActionIconToggle.stories.jsx │ │ │ │ ├── ActionIconToggle.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── ActionIconToggle.test.js.snap │ │ │ │ │ └── ActionIconToggle.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── ActionSplitDropdown/ │ │ │ │ ├── ActionSplitDropdown.connect.jsx │ │ │ │ ├── ActionSplitDropdown.stories.jsx │ │ │ │ ├── ActionSplitDropdown.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── ActionSplitDropdown.test.js.snap │ │ │ │ │ └── ActionSplitDropdown.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Actions/ │ │ │ │ ├── Actions.connect.js │ │ │ │ ├── Actions.stories.jsx │ │ │ │ ├── Actions.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Actions.test.js.snap │ │ │ │ │ └── Actions.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── AppLoader/ │ │ │ │ ├── AppLoader.connect.jsx │ │ │ │ ├── AppLoader.connect.test.jsx │ │ │ │ ├── AppLoader.md │ │ │ │ ├── AppLoader.saga.js │ │ │ │ ├── AppLoader.saga.test.jsx │ │ │ │ ├── AppLoader.stories.jsx │ │ │ │ └── index.js │ │ │ ├── Badge/ │ │ │ │ ├── Badge.component.js │ │ │ │ ├── Badge.test.jsx │ │ │ │ └── index.js │ │ │ ├── Breadcrumbs/ │ │ │ │ ├── Breadcrumbs.connect.jsx │ │ │ │ ├── Breadcrumbs.stories.jsx │ │ │ │ ├── Breadcrumbs.test.jsx │ │ │ │ └── index.js │ │ │ ├── ComponentForm/ │ │ │ │ ├── ComponentForm.actions.js │ │ │ │ ├── ComponentForm.actions.test.jsx │ │ │ │ ├── ComponentForm.component.jsx │ │ │ │ ├── ComponentForm.md │ │ │ │ ├── ComponentForm.puml │ │ │ │ ├── ComponentForm.saga.test.jsx │ │ │ │ ├── ComponentForm.sagas.js │ │ │ │ ├── ComponentForm.selectors.js │ │ │ │ ├── ComponentForm.selectors.test.jsx │ │ │ │ ├── ComponentForm.test.jsx │ │ │ │ ├── ComponentForm.test.schema.json │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── ComponentForm.test.js.snap │ │ │ │ │ └── ComponentForm.test.jsx.snap │ │ │ │ ├── fields/ │ │ │ │ │ ├── MultiSelect/ │ │ │ │ │ │ ├── MultiSelect.component.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── displayMode/ │ │ │ │ │ │ │ └── TextMode.component.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── NameResolver/ │ │ │ │ │ │ ├── NameResolver.component.jsx │ │ │ │ │ │ ├── NameResolver.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── index.js │ │ │ │ └── kit/ │ │ │ │ ├── createTriggers.js │ │ │ │ ├── createTriggers.test.jsx │ │ │ │ ├── defaultRegistry.js │ │ │ │ ├── defaultRegistry.md │ │ │ │ ├── defaultRegistry.test.jsx │ │ │ │ ├── flatten.js │ │ │ │ ├── flatten.test.jsx │ │ │ │ └── index.js │ │ │ ├── ConfirmDialog/ │ │ │ │ ├── ConfirmDialog.connect.js │ │ │ │ ├── ConfirmDialog.container.jsx │ │ │ │ ├── ConfirmDialog.stories.jsx │ │ │ │ ├── ConfirmDialog.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── ConfirmDialog.test.jsx.snap │ │ │ │ ├── index.js │ │ │ │ └── showHideConfirmDialog.js │ │ │ ├── DeleteResource/ │ │ │ │ ├── DeleteResource.connect.js │ │ │ │ ├── DeleteResource.container.jsx │ │ │ │ ├── DeleteResource.stories.jsx │ │ │ │ ├── DeleteResource.test.jsx │ │ │ │ ├── README.md │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── DeleteResource.test.js.snap │ │ │ │ │ └── DeleteResource.test.jsx.snap │ │ │ │ ├── actions.js │ │ │ │ ├── actions.test.jsx │ │ │ │ ├── constants.js │ │ │ │ ├── index.js │ │ │ │ ├── sagas.js │ │ │ │ └── sagas.test.jsx │ │ │ ├── EditableText/ │ │ │ │ ├── EditableText.connect.js │ │ │ │ ├── EditableText.container.jsx │ │ │ │ ├── EditableText.selectors.js │ │ │ │ ├── EditableText.stories.jsx │ │ │ │ ├── EditableText.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── EditableText.test.js.snap │ │ │ │ │ └── EditableText.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── FilterBar/ │ │ │ │ ├── FilterBar.connect.js │ │ │ │ ├── FilterBar.container.jsx │ │ │ │ ├── FilterBar.selectors.js │ │ │ │ ├── FilterBar.stories.jsx │ │ │ │ ├── FilterBar.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── FilterBar.test.js.snap │ │ │ │ │ └── FilterBar.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Form/ │ │ │ │ ├── Form.connect.js │ │ │ │ ├── Form.container.jsx │ │ │ │ ├── Form.md │ │ │ │ ├── Form.stories.jsx │ │ │ │ ├── Form.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Form.test.js.snap │ │ │ │ │ └── Form.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── GuidedTour/ │ │ │ │ ├── GuidedTour.connect.js │ │ │ │ ├── GuidedTour.constants.js │ │ │ │ ├── GuidedTour.container.jsx │ │ │ │ ├── GuidedTour.sagas.js │ │ │ │ ├── GuidedTour.sagas.test.jsx │ │ │ │ ├── GuidedTour.stories.jsx │ │ │ │ ├── GuidedTour.test.jsx │ │ │ │ ├── README.md │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── GuidedTour.test.js.snap │ │ │ │ │ └── GuidedTour.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── HeaderBar/ │ │ │ │ ├── HeaderBar.actions.js │ │ │ │ ├── HeaderBar.connect.js │ │ │ │ ├── HeaderBar.constant.js │ │ │ │ ├── HeaderBar.container.jsx │ │ │ │ ├── HeaderBar.md │ │ │ │ ├── HeaderBar.sagas.js │ │ │ │ ├── HeaderBar.sagas.test.jsx │ │ │ │ ├── HeaderBar.test.jsx │ │ │ │ └── index.js │ │ │ ├── HomeListView/ │ │ │ │ ├── HomeListView.component.jsx │ │ │ │ ├── HomeListView.component.test.jsx │ │ │ │ ├── HomeListView.connect.js │ │ │ │ ├── HomeListView.connect.test.jsx │ │ │ │ ├── HomeListView.stories.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── HomeListView.connect.test.js.snap │ │ │ │ │ └── HomeListView.connect.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── List/ │ │ │ │ ├── List.connect.js │ │ │ │ ├── List.constant.js │ │ │ │ ├── List.container.jsx │ │ │ │ ├── List.md │ │ │ │ ├── List.sagas.js │ │ │ │ ├── List.sagas.test.jsx │ │ │ │ ├── List.stories.jsx │ │ │ │ ├── List.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── List.test.jsx.snap │ │ │ │ ├── index.js │ │ │ │ ├── selector.js │ │ │ │ └── selector.test.jsx │ │ │ ├── Notification/ │ │ │ │ ├── Notification.actions.js │ │ │ │ ├── Notification.connect.js │ │ │ │ ├── Notification.constants.js │ │ │ │ ├── Notification.container.jsx │ │ │ │ ├── Notification.sagas.js │ │ │ │ ├── Notification.sagas.test.jsx │ │ │ │ ├── Notification.stories.jsx │ │ │ │ ├── Notification.test.jsx │ │ │ │ ├── README.md │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── Notification.test.jsx.snap │ │ │ │ ├── clearNotifications.js │ │ │ │ ├── index.js │ │ │ │ └── pushNotification.js │ │ │ ├── ObjectViewer/ │ │ │ │ ├── ObjectViewer.connect.js │ │ │ │ ├── ObjectViewer.container.jsx │ │ │ │ ├── ObjectViewer.stories.jsx │ │ │ │ ├── ObjectViewer.test.jsx │ │ │ │ └── index.js │ │ │ ├── PieChartButton/ │ │ │ │ ├── PieChartButton.connect.jsx │ │ │ │ ├── PieChartButton.stories.jsx │ │ │ │ ├── PieChartButton.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── PieChartButton.test.js.snap │ │ │ │ │ └── PieChartButton.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── Redirect/ │ │ │ │ ├── Redirect.container.jsx │ │ │ │ ├── Redirect.test.jsx │ │ │ │ └── index.js │ │ │ ├── SelectObject/ │ │ │ │ ├── SelectObject.component.jsx │ │ │ │ ├── SelectObject.component.test.jsx │ │ │ │ ├── SelectObject.connect.js │ │ │ │ ├── SelectObject.connect.test.jsx │ │ │ │ ├── SelectObject.container.jsx │ │ │ │ ├── SelectObject.container.test.jsx │ │ │ │ ├── SelectObject.module.css │ │ │ │ ├── SelectObject.stories.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── SelectObject.component.test.js.snap │ │ │ │ │ ├── SelectObject.component.test.jsx.snap │ │ │ │ │ └── SelectObject.container.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── ShortcutManager/ │ │ │ │ ├── ShortcutManager.connect.js │ │ │ │ ├── ShortcutManager.container.js │ │ │ │ ├── ShortcutManager.test.jsx │ │ │ │ └── index.js │ │ │ ├── SidePanel/ │ │ │ │ ├── SidePanel.connect.js │ │ │ │ ├── SidePanel.container.jsx │ │ │ │ ├── SidePanel.md │ │ │ │ ├── SidePanel.stories.jsx │ │ │ │ ├── SidePanel.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── SidePanel.test.js.snap │ │ │ │ │ └── SidePanel.test.jsx.snap │ │ │ │ ├── constants.js │ │ │ │ └── index.js │ │ │ ├── Slider/ │ │ │ │ ├── Slider.connect.js │ │ │ │ ├── Slider.container.jsx │ │ │ │ ├── Slider.selectors.js │ │ │ │ ├── Slider.stories.jsx │ │ │ │ ├── Slider.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Slider.test.js.snap │ │ │ │ │ └── Slider.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── SubHeaderBar/ │ │ │ │ ├── SubHeaderBar.connect.js │ │ │ │ ├── SubHeaderBar.container.jsx │ │ │ │ ├── SubHeaderBar.md │ │ │ │ ├── SubHeaderBar.selectors.js │ │ │ │ ├── SubHeaderBar.stories.jsx │ │ │ │ ├── SubHeaderBar.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── SubHeaderBar.test.js.snap │ │ │ │ │ └── SubHeaderBar.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── TabBar/ │ │ │ │ ├── TabBar.connect.js │ │ │ │ ├── TabBar.selectors.js │ │ │ │ ├── TabBar.stories.jsx │ │ │ │ ├── TabBar.test.jsx │ │ │ │ └── index.js │ │ │ ├── TreeView/ │ │ │ │ ├── TreeView.container.jsx │ │ │ │ ├── TreeView.stories.jsx │ │ │ │ ├── TreeView.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── TreeView.test.js.snap │ │ │ │ │ └── TreeView.test.jsx.snap │ │ │ │ ├── index.js │ │ │ │ └── index.test.jsx │ │ │ ├── Typeahead/ │ │ │ │ ├── Typeahead.connect.js │ │ │ │ ├── Typeahead.container.jsx │ │ │ │ ├── Typeahead.stories.jsx │ │ │ │ ├── Typeahead.test.jsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── Typeahead.test.js.snap │ │ │ │ │ └── Typeahead.test.jsx.snap │ │ │ │ └── index.js │ │ │ ├── actionAPI.js │ │ │ ├── actionAPI.test.jsx │ │ │ ├── actionOnClick.js │ │ │ ├── actionOnClick.test.jsx │ │ │ ├── cmfModule.js │ │ │ ├── constant.js │ │ │ ├── containers.js │ │ │ ├── index.js │ │ │ ├── mock.settings.json │ │ │ ├── register.js │ │ │ ├── register.test.jsx │ │ │ ├── renderers.js │ │ │ ├── test-setup.js │ │ │ └── translate.js │ │ ├── stylelint.config.mjs │ │ ├── talend-i18n.json │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── dataviz/ │ │ ├── .babelrc.json │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── .storybook/ │ │ │ ├── main.ts │ │ │ └── preview.ts │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── assets/ │ │ │ └── maps/ │ │ │ ├── CA.topo.json │ │ │ ├── FR.topo.json │ │ │ ├── MX.topo.json │ │ │ ├── US.topo.json │ │ │ ├── US_CA.topo.json │ │ │ ├── continents.topo.json │ │ │ └── world.topo.json │ │ ├── eslint.config.mjs │ │ ├── i18next-scanner.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── BarChart/ │ │ │ │ │ ├── ColoredBar/ │ │ │ │ │ │ ├── ColoredBar.component.module.css │ │ │ │ │ │ └── ColoredBar.component.tsx │ │ │ │ │ ├── HorizontalBarChart/ │ │ │ │ │ │ ├── HorizontalBarChart.component.module.css │ │ │ │ │ │ ├── HorizontalBarChart.component.test.tsx │ │ │ │ │ │ ├── HorizontalBarChart.component.tsx │ │ │ │ │ │ ├── HorizontalBarChart.stories.tsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── HorizontalBarChart.component.test.tsx.snap │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── TooltipCursor/ │ │ │ │ │ │ ├── TooltipCursor.component.module.css │ │ │ │ │ │ └── TooltipCursor.component.tsx │ │ │ │ │ ├── VerticalBarChart/ │ │ │ │ │ │ ├── VerticalBarChart.component.module.css │ │ │ │ │ │ ├── VerticalBarChart.component.test.tsx │ │ │ │ │ │ ├── VerticalBarChart.component.tsx │ │ │ │ │ │ ├── VerticalBarChart.stories.tsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── VerticalBarChart.component.test.tsx.snap │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── _bar-chart.scss │ │ │ │ │ ├── barChart.tooltip.test.ts │ │ │ │ │ ├── barChart.tooltip.ts │ │ │ │ │ ├── barChart.types.ts │ │ │ │ │ ├── useBarChart.hook.tsx │ │ │ │ │ └── useBarChartHook.test.ts │ │ │ │ ├── BoxPlot/ │ │ │ │ │ ├── BoxPlot.component.module.css │ │ │ │ │ ├── BoxPlot.component.test.tsx │ │ │ │ │ ├── BoxPlot.component.tsx │ │ │ │ │ ├── BoxPlot.stories.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── BoxPlot.component.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── ChartPanel/ │ │ │ │ │ └── VerticalChartFilter/ │ │ │ │ │ ├── VerticalChartFilter.component.module.css │ │ │ │ │ ├── VerticalChartFilter.component.test.tsx │ │ │ │ │ ├── VerticalChartFilter.component.tsx │ │ │ │ │ ├── VerticalChartFilter.stories.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── GeoChart/ │ │ │ │ │ ├── GeoChart.component.tsx │ │ │ │ │ ├── GeoChart.module.css │ │ │ │ │ ├── GeoChart.stories.tsx │ │ │ │ │ ├── GeoChart.test.jsx │ │ │ │ │ ├── GeoChart.utils.ts │ │ │ │ │ ├── README.md │ │ │ │ │ └── index.ts │ │ │ │ ├── KeyValueTooltip/ │ │ │ │ │ ├── KeyValueTooltip.component.module.css │ │ │ │ │ ├── KeyValueTooltip.component.test.tsx │ │ │ │ │ ├── KeyValueTooltip.component.tsx │ │ │ │ │ ├── KeyValueTooltip.stories.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── KeyValueTooltip.component.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── LineChart/ │ │ │ │ │ ├── LineChart.component.test.tsx │ │ │ │ │ ├── LineChart.component.tsx │ │ │ │ │ ├── LineChart.module.css │ │ │ │ │ ├── LineChart.stories.tsx │ │ │ │ │ ├── LineChart.types.ts │ │ │ │ │ ├── LineChartLegend.component.tsx │ │ │ │ │ ├── LineChartLineIcon.component.tsx │ │ │ │ │ ├── LineChartTooltip.component.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── RangeFilter/ │ │ │ │ │ ├── RangeFilter.component.module.css │ │ │ │ │ ├── RangeFilter.component.stories.tsx │ │ │ │ │ ├── RangeFilter.component.test.tsx │ │ │ │ │ ├── RangeFilter.component.tsx │ │ │ │ │ ├── handlers/ │ │ │ │ │ │ ├── DateRangeHandler/ │ │ │ │ │ │ │ ├── DateRangeHandler.test.tsx │ │ │ │ │ │ │ └── DateRangeHandler.tsx │ │ │ │ │ │ ├── DateTimeRangeHandler/ │ │ │ │ │ │ │ ├── DateTimeInputField.component.module.css │ │ │ │ │ │ │ ├── DateTimeRangeHandler.test.tsx │ │ │ │ │ │ │ └── DateTimeRangeHandler.tsx │ │ │ │ │ │ ├── IntegerRangeHandler/ │ │ │ │ │ │ │ ├── IntegerRangeHandler.test.tsx │ │ │ │ │ │ │ └── IntegerRangeHandler.tsx │ │ │ │ │ │ ├── NumberRangeHandler/ │ │ │ │ │ │ │ ├── NumberInputField.component.module.css │ │ │ │ │ │ │ ├── NumberRangeHandler.test.tsx │ │ │ │ │ │ │ └── NumberRangeHandler.tsx │ │ │ │ │ │ ├── TimeRangeHandler/ │ │ │ │ │ │ │ ├── TimeRangeHandler.test.tsx │ │ │ │ │ │ │ └── TimeRangeHandler.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── range-handler.types.ts │ │ │ │ │ │ ├── slider-ticks.utils.test.ts │ │ │ │ │ │ ├── slider-ticks.utils.ts │ │ │ │ │ │ └── useRangeInputField.hook.ts │ │ │ │ │ └── index.ts │ │ │ │ └── Tooltip/ │ │ │ │ ├── Tooltip.component.module.css │ │ │ │ └── Tooltip.component.tsx │ │ │ ├── constants.ts │ │ │ ├── formatters/ │ │ │ │ ├── formatters.test.ts │ │ │ │ └── formatters.ts │ │ │ ├── index.ts │ │ │ ├── setupTests.ts │ │ │ └── types/ │ │ │ ├── index.ts │ │ │ └── types.d.ts │ │ ├── stylelint.config.mjs │ │ ├── talend-i18n.json │ │ ├── talend-scripts.json │ │ ├── tsconfig.build.json │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── design-docs/ │ │ ├── .babelrc.json │ │ ├── .storybook/ │ │ │ ├── .babelrc │ │ │ ├── main.mjs │ │ │ ├── manager-head.html │ │ │ ├── manager.mjs │ │ │ ├── preview-head.html │ │ │ ├── preview.mjs │ │ │ └── vite.config.ts │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── eslint.config.mjs │ │ ├── netlify.toml │ │ ├── package.json │ │ ├── src/ │ │ │ ├── GettingStarted.mdx │ │ │ ├── Principles.mdx │ │ │ ├── StatusTable.module.css │ │ │ ├── StatusTable.tsx │ │ │ ├── Statuses.mdx │ │ │ ├── Welcome.mdx │ │ │ ├── Welcome.module.css │ │ │ ├── WelcomeImage.tsx │ │ │ ├── content/ │ │ │ │ ├── Capitalization.mdx │ │ │ │ ├── Conventions.mdx │ │ │ │ ├── Internationalization.mdx │ │ │ │ ├── VoiceAndTone.mdx │ │ │ │ └── Wording.mdx │ │ │ ├── index.ts │ │ │ ├── status.json │ │ │ ├── tokens/ │ │ │ │ ├── A-About.mdx │ │ │ │ ├── AB-Colors.mdx │ │ │ │ ├── AC-ColorComposition.mdx │ │ │ │ ├── Borders.mdx │ │ │ │ ├── Brandings.mdx │ │ │ │ ├── BreakPoints.mdx │ │ │ │ ├── ColorChecker.tsx │ │ │ │ ├── ColorComposition.module.css │ │ │ │ ├── ColorComposition.tsx │ │ │ │ ├── ColorCompositions.json │ │ │ │ ├── Elevations.mdx │ │ │ │ ├── ExampleCard.module.css │ │ │ │ ├── ExampleCard.tsx │ │ │ │ ├── Gradients.mdx │ │ │ │ ├── Mesures.mdx │ │ │ │ ├── Opacity.mdx │ │ │ │ ├── Radius.mdx │ │ │ │ ├── Shadows.mdx │ │ │ │ ├── TokenFormatter.ts │ │ │ │ ├── TokenValue.module.css │ │ │ │ ├── TokenValue.tsx │ │ │ │ ├── Transitions.mdx │ │ │ │ ├── Transitions.module.css │ │ │ │ └── Typography.mdx │ │ │ └── types.d.ts │ │ ├── stylelint.config.mjs │ │ ├── talend-scripts.json │ │ └── tsconfig.json │ ├── design-system/ │ │ ├── .babelrc │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── .prettierrc.js │ │ ├── .storybook/ │ │ │ ├── main.mjs │ │ │ └── preview.mjs │ │ ├── CHANGELOG.md │ │ ├── CONTRIBUTING.md │ │ ├── DOCTEMPLATE.md │ │ ├── LICENSE │ │ ├── MIGRATING.md │ │ ├── README.md │ │ ├── custom.d.ts │ │ ├── eslint.config.mjs │ │ ├── i18next-scanner.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── Accordion/ │ │ │ │ │ ├── Accordion.test.tsx │ │ │ │ │ ├── Accordion.tsx │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── CollapsiblePanel.module.css │ │ │ │ │ │ ├── CollapsiblePanel.tsx │ │ │ │ │ │ ├── CollapsiblePanelHeader.module.css │ │ │ │ │ │ ├── CollapsiblePanelHeader.tsx │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Accordion.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── Badge/ │ │ │ │ │ ├── Badge.test.tsx │ │ │ │ │ ├── Badge.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Badge.test.tsx.snap │ │ │ │ │ ├── button/ │ │ │ │ │ │ ├── BadgeButton.module.css │ │ │ │ │ │ └── BadgeButton.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── primitive/ │ │ │ │ │ │ ├── BadgePrimitive.module.css │ │ │ │ │ │ └── BadgePrimitive.tsx │ │ │ │ │ └── variants/ │ │ │ │ │ ├── BadgeDropdown.module.css │ │ │ │ │ ├── BadgeDropdown.tsx │ │ │ │ │ ├── BadgePopover.tsx │ │ │ │ │ ├── BadgeTag.tsx │ │ │ │ │ ├── BadgeValue.module.css │ │ │ │ │ └── BadgeValue.tsx │ │ │ │ ├── Breadcrumbs/ │ │ │ │ │ ├── Breadcrumbs.module.css │ │ │ │ │ ├── Breadcrumbs.test.tsx │ │ │ │ │ ├── Breadcrumbs.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Breadcrumbs.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── Button/ │ │ │ │ │ ├── Button.test.tsx │ │ │ │ │ ├── Button.tsx │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── ButtonPrimitive.tsx │ │ │ │ │ │ └── ButtonStyles.module.css │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Button.test.tsx.snap │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variations/ │ │ │ │ │ ├── ButtonDestructive.module.css │ │ │ │ │ ├── ButtonDestructive.tsx │ │ │ │ │ ├── ButtonPrimary.module.css │ │ │ │ │ ├── ButtonPrimary.tsx │ │ │ │ │ ├── ButtonSecondary.module.css │ │ │ │ │ ├── ButtonSecondary.tsx │ │ │ │ │ ├── ButtonTertiary.module.css │ │ │ │ │ └── ButtonTertiary.tsx │ │ │ │ ├── ButtonAsLink/ │ │ │ │ │ ├── ButtonAsLink.test.tsx │ │ │ │ │ ├── ButtonAsLink.tsx │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── ButtonPrimitiveAsLink.module.css │ │ │ │ │ │ └── ButtonPrimitiveAsLink.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── ButtonAsLink.test.tsx.snap │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variations/ │ │ │ │ │ ├── ButtonDestructiveAsLink.tsx │ │ │ │ │ ├── ButtonPrimaryAsLink.tsx │ │ │ │ │ ├── ButtonSecondaryAsLink.tsx │ │ │ │ │ └── ButtonTertiaryAsLink.tsx │ │ │ │ ├── ButtonIcon/ │ │ │ │ │ ├── ButtonIcon.test.tsx │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── ButtonIcon.module.css │ │ │ │ │ │ └── ButtonIconPrimitive.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── ButtonIcon.test.tsx.snap │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variations/ │ │ │ │ │ ├── ButtonIcon.tsx │ │ │ │ │ ├── ButtonIconFloating.tsx │ │ │ │ │ └── ButtonIconToggle.tsx │ │ │ │ ├── Card/ │ │ │ │ │ ├── Card.module.css │ │ │ │ │ ├── Card.test.tsx │ │ │ │ │ ├── Card.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Card.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── Clickable/ │ │ │ │ │ ├── Clickable.module.css │ │ │ │ │ ├── Clickable.tsx │ │ │ │ │ ├── Clikable.test.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Clikable.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── Combobox/ │ │ │ │ │ ├── Combobox.module.css │ │ │ │ │ ├── Combobox.test.tsx │ │ │ │ │ ├── Combobox.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Combobox.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── Disclosure/ │ │ │ │ │ ├── Disclosure.tsx │ │ │ │ │ └── DisclosureContext.ts │ │ │ │ ├── Divider/ │ │ │ │ │ ├── Divider.module.css │ │ │ │ │ ├── Divider.test.tsx │ │ │ │ │ ├── Divider.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Divider.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── Drawer/ │ │ │ │ │ ├── Drawer.test.tsx │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── PrimitiveDrawer.module.css │ │ │ │ │ │ └── PrimitiveDrawer.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Drawer.test.tsx.snap │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variants/ │ │ │ │ │ └── FloatingDrawer/ │ │ │ │ │ ├── FloatingDrawer.module.css │ │ │ │ │ └── FloatingDrawer.tsx │ │ │ │ ├── Dropdown/ │ │ │ │ │ ├── Dropdown.cy.tsx │ │ │ │ │ ├── Dropdown.test.tsx │ │ │ │ │ ├── Dropdown.tsx │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── DropdownButton.tsx │ │ │ │ │ │ ├── DropdownDivider.module.css │ │ │ │ │ │ ├── DropdownDivider.tsx │ │ │ │ │ │ ├── DropdownEntry.module.css │ │ │ │ │ │ ├── DropdownLink.tsx │ │ │ │ │ │ ├── DropdownShell.module.css │ │ │ │ │ │ ├── DropdownShell.tsx │ │ │ │ │ │ ├── DropdownTitle.module.css │ │ │ │ │ │ └── DropdownTitle.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Dropdown.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── EmptyState/ │ │ │ │ │ ├── EmptyState.test.tsx │ │ │ │ │ ├── EmptyState.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── EmptyState.test.tsx.snap │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── primitive/ │ │ │ │ │ │ ├── EmptyStatePrimitive.module.css │ │ │ │ │ │ └── EmptyStatePrimitive.tsx │ │ │ │ │ └── variants/ │ │ │ │ │ ├── EmptyStateLarge.tsx │ │ │ │ │ ├── EmptyStateMedium.tsx │ │ │ │ │ └── EmptyStateSmall.tsx │ │ │ │ ├── Enumeration/ │ │ │ │ │ ├── Enumeration.component.tsx │ │ │ │ │ ├── Enumeration.module.css │ │ │ │ │ ├── Enumeration.types.tsx │ │ │ │ │ ├── EnumerationHeader/ │ │ │ │ │ │ ├── EnumerationHeader.component.tsx │ │ │ │ │ │ ├── EnumerationHeader.module.css │ │ │ │ │ │ └── EnumerationIHeader.types.tsx │ │ │ │ │ ├── EnumerationItem/ │ │ │ │ │ │ ├── EnumerationItem.component.tsx │ │ │ │ │ │ ├── EnumerationItem.module.css │ │ │ │ │ │ └── EnumerationItem.types.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ErrorState/ │ │ │ │ │ ├── ErrorState.module.css │ │ │ │ │ ├── ErrorState.test.tsx │ │ │ │ │ ├── ErrorState.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── ErrorState.test.tsx.snap │ │ │ │ │ ├── illutstrations/ │ │ │ │ │ │ └── ErrorIllustration.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Form/ │ │ │ │ │ ├── Affix/ │ │ │ │ │ │ ├── AffixStyles.module.css │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── variations/ │ │ │ │ │ │ ├── AffixButton.tsx │ │ │ │ │ │ ├── AffixReadOnly.tsx │ │ │ │ │ │ └── AffixSelect.tsx │ │ │ │ │ ├── Buttons/ │ │ │ │ │ │ ├── Buttons.module.css │ │ │ │ │ │ ├── Buttons.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Field/ │ │ │ │ │ │ ├── Datalist/ │ │ │ │ │ │ │ ├── Datalist.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── Input/ │ │ │ │ │ │ │ ├── Input.Checkbox.tsx │ │ │ │ │ │ │ ├── Input.Color.tsx │ │ │ │ │ │ │ ├── Input.Copy.tsx │ │ │ │ │ │ │ ├── Input.Date.tsx │ │ │ │ │ │ │ ├── Input.DatetimeLocal.tsx │ │ │ │ │ │ │ ├── Input.Email.tsx │ │ │ │ │ │ │ ├── Input.File.module.css │ │ │ │ │ │ │ ├── Input.File.tsx │ │ │ │ │ │ │ ├── Input.Hidden.tsx │ │ │ │ │ │ │ ├── Input.Month.tsx │ │ │ │ │ │ │ ├── Input.Number.tsx │ │ │ │ │ │ │ ├── Input.Radio.tsx │ │ │ │ │ │ │ ├── Input.Search.tsx │ │ │ │ │ │ │ ├── Input.Tel.tsx │ │ │ │ │ │ │ ├── Input.Text.tsx │ │ │ │ │ │ │ ├── Input.Time.tsx │ │ │ │ │ │ │ ├── Input.ToggleSwitch.module.css │ │ │ │ │ │ │ ├── Input.ToggleSwitch.tsx │ │ │ │ │ │ │ ├── Input.Url.tsx │ │ │ │ │ │ │ ├── Input.Week.tsx │ │ │ │ │ │ │ ├── Input.tsx │ │ │ │ │ │ │ ├── Password/ │ │ │ │ │ │ │ │ ├── Password.cy.tsx │ │ │ │ │ │ │ │ ├── Password.tsx │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── passwordButton.module.css │ │ │ │ │ │ │ │ ├── useReadOnly.tsx │ │ │ │ │ │ │ │ └── useRevealPassword.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── Select/ │ │ │ │ │ │ │ ├── Select.tsx │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── Textarea/ │ │ │ │ │ │ ├── Textarea.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Fieldset/ │ │ │ │ │ │ ├── Fieldset.cy.tsx │ │ │ │ │ │ ├── Fieldset.module.css │ │ │ │ │ │ ├── Fieldset.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Form.module.css │ │ │ │ │ ├── Form.test.tsx │ │ │ │ │ ├── Form.tsx │ │ │ │ │ ├── Label/ │ │ │ │ │ │ ├── Label.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Primitives/ │ │ │ │ │ │ ├── Checkbox/ │ │ │ │ │ │ │ ├── Checkbox.module.css │ │ │ │ │ │ │ └── Checkbox.tsx │ │ │ │ │ │ ├── Field/ │ │ │ │ │ │ │ └── Field.tsx │ │ │ │ │ │ ├── Input/ │ │ │ │ │ │ │ ├── Input.module.css │ │ │ │ │ │ │ └── Input.tsx │ │ │ │ │ │ ├── InputWrapper/ │ │ │ │ │ │ │ ├── InputWrapper.module.css │ │ │ │ │ │ │ └── InputWrapper.tsx │ │ │ │ │ │ ├── Label/ │ │ │ │ │ │ │ ├── Label.module.css │ │ │ │ │ │ │ └── Label.tsx │ │ │ │ │ │ ├── Radio/ │ │ │ │ │ │ │ ├── Radio.module.css │ │ │ │ │ │ │ └── Radio.tsx │ │ │ │ │ │ ├── Select/ │ │ │ │ │ │ │ ├── Select.module.css │ │ │ │ │ │ │ ├── Select.tsx │ │ │ │ │ │ │ └── SelectNoWrapper.tsx │ │ │ │ │ │ ├── Textarea/ │ │ │ │ │ │ │ ├── Textarea.module.css │ │ │ │ │ │ │ └── Textarea.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Row/ │ │ │ │ │ │ ├── Row.module.css │ │ │ │ │ │ ├── Row.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Form.test.tsx.snap │ │ │ │ │ ├── docs/ │ │ │ │ │ │ └── data/ │ │ │ │ │ │ └── CountryCodes.json │ │ │ │ │ └── index.ts │ │ │ │ ├── Icon/ │ │ │ │ │ ├── DeprecatedIconHelper.tsx │ │ │ │ │ ├── Icon.cy.tsx │ │ │ │ │ ├── Icon.module.css │ │ │ │ │ ├── Icon.test.tsx │ │ │ │ │ ├── Icon.tsx │ │ │ │ │ ├── SizedIcon.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Icon.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── IconsProvider/ │ │ │ │ │ ├── IconsProvider.cy.tsx │ │ │ │ │ ├── IconsProvider.module.css │ │ │ │ │ ├── IconsProvider.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── InlineEditing/ │ │ │ │ │ ├── InlineEditing.test.tsx │ │ │ │ │ ├── Primitives/ │ │ │ │ │ │ ├── InlineEditingPrimitive.module.css │ │ │ │ │ │ └── InlineEditingPrimitive.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── InlineEditing.test.tsx.snap │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variations/ │ │ │ │ │ ├── InlineEditing.text.tsx │ │ │ │ │ ├── InlineEditing.textarea.cy.tsx │ │ │ │ │ └── InlineEditing.textarea.tsx │ │ │ │ ├── InlineMessage/ │ │ │ │ │ ├── InlineMessage.test.tsx │ │ │ │ │ ├── InlineMessage.tsx │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── InlineMessagePrimitive.module.css │ │ │ │ │ │ └── InlineMessagePrimitive.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── InlineMessage.test.tsx.snap │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variations/ │ │ │ │ │ ├── InlineMessageBeta.module.css │ │ │ │ │ ├── InlineMessageBeta.tsx │ │ │ │ │ ├── InlineMessageDestructive.module.css │ │ │ │ │ ├── InlineMessageDestructive.tsx │ │ │ │ │ ├── InlineMessageInformation.module.css │ │ │ │ │ ├── InlineMessageInformation.tsx │ │ │ │ │ ├── InlineMessageSuccess.module.css │ │ │ │ │ ├── InlineMessageSuccess.tsx │ │ │ │ │ ├── InlineMessageWarning.module.css │ │ │ │ │ └── InlineMessageWarning.tsx │ │ │ │ ├── Link/ │ │ │ │ │ ├── Link.cy.tsx │ │ │ │ │ ├── Link.module.css │ │ │ │ │ ├── Link.test.tsx │ │ │ │ │ ├── Link.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Link.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── LinkAsButton/ │ │ │ │ │ ├── LinkAsButton.cy.tsx │ │ │ │ │ ├── LinkAsButton.test.tsx │ │ │ │ │ ├── LinkAsButton.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── LinkAsButton.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── Linkable/ │ │ │ │ │ ├── Linkable.test.tsx │ │ │ │ │ ├── Linkable.tsx │ │ │ │ │ ├── LinkableStyles.module.css │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Linkable.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── Loading/ │ │ │ │ │ ├── Loading.test.tsx │ │ │ │ │ ├── Loading.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Loading.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── Message/ │ │ │ │ │ ├── Message.test.tsx │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── MessagePrimitive.tsx │ │ │ │ │ │ └── MessageStyles.module.css │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Message.test.tsx.snap │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variations/ │ │ │ │ │ ├── MessageCollectionDestructive.tsx │ │ │ │ │ ├── MessageCollectionInformation.tsx │ │ │ │ │ ├── MessageCollectionSuccess.tsx │ │ │ │ │ ├── MessageCollectionWarning.tsx │ │ │ │ │ ├── MessageDestructive.module.css │ │ │ │ │ ├── MessageDestructive.tsx │ │ │ │ │ ├── MessageInformation.module.css │ │ │ │ │ ├── MessageInformation.tsx │ │ │ │ │ ├── MessageSuccess.module.css │ │ │ │ │ ├── MessageSuccess.tsx │ │ │ │ │ ├── MessageWarning.module.css │ │ │ │ │ └── MessageWarning.tsx │ │ │ │ ├── Modal/ │ │ │ │ │ ├── Modal.module.css │ │ │ │ │ ├── Modal.test.tsx │ │ │ │ │ ├── Modal.tsx │ │ │ │ │ ├── Primitives/ │ │ │ │ │ │ ├── Dialog.tsx │ │ │ │ │ │ ├── DialogBackdrop.tsx │ │ │ │ │ │ ├── DialogState.ts │ │ │ │ │ │ └── Portal.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Modal.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── Popover/ │ │ │ │ │ ├── Popover.cy.tsx │ │ │ │ │ ├── Popover.module.css │ │ │ │ │ ├── Popover.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── usePopover.tsx │ │ │ │ ├── QualityBar/ │ │ │ │ │ ├── QualityBar.component.test.tsx │ │ │ │ │ ├── QualityBar.component.tsx │ │ │ │ │ ├── QualityBar.stories.tsx │ │ │ │ │ ├── QualityBar.types.ts │ │ │ │ │ ├── QualityBarRatioBars.component.tsx │ │ │ │ │ ├── QualityRatioBar.component.tsx │ │ │ │ │ ├── QualityRatioBar.module.css │ │ │ │ │ ├── QualityRatioBar.utils.ts │ │ │ │ │ ├── SplitQualityBar.component.tsx │ │ │ │ │ ├── SplitQualityBar.stories.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── RatioBar/ │ │ │ │ │ ├── RatioBar.component.test.jsx │ │ │ │ │ ├── RatioBar.component.tsx │ │ │ │ │ ├── RatioBar.module.css │ │ │ │ │ ├── RatioBar.stories.tsx │ │ │ │ │ ├── RatioBarComposition.component.tsx │ │ │ │ │ ├── RatioBarLines.component.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── RatioBar.component.test.jsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── RichRadioButton/ │ │ │ │ │ ├── RichRadioButton.component.tsx │ │ │ │ │ ├── RichRadioButton.module.css │ │ │ │ │ ├── RichRadioButton.types.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Skeleton/ │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── Skeleton.Primitive.tsx │ │ │ │ │ │ └── Skeleton.module.css │ │ │ │ │ ├── Skeleton.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variations/ │ │ │ │ │ ├── SkeletonButton.module.css │ │ │ │ │ ├── SkeletonButton.tsx │ │ │ │ │ ├── SkeletonButtonIcon.module.css │ │ │ │ │ ├── SkeletonButtonIcon.tsx │ │ │ │ │ ├── SkeletonHeading.module.css │ │ │ │ │ ├── SkeletonHeading.tsx │ │ │ │ │ ├── SkeletonInput.module.css │ │ │ │ │ ├── SkeletonInput.tsx │ │ │ │ │ ├── SkeletonParagraph.module.css │ │ │ │ │ ├── SkeletonParagraph.tsx │ │ │ │ │ ├── SkeletonSized.module.css │ │ │ │ │ └── SkeletonSized.tsx │ │ │ │ ├── Stack/ │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── StackPrimitive.module.css │ │ │ │ │ │ ├── StackPrimitive.test.tsx │ │ │ │ │ │ └── StackPrimitive.tsx │ │ │ │ │ ├── StackHorizontal.tsx │ │ │ │ │ ├── StackItem.module.css │ │ │ │ │ ├── StackItem.tsx │ │ │ │ │ ├── StackVertical.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Status/ │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── Status.module.css │ │ │ │ │ │ ├── StatusPrimitive.test.tsx │ │ │ │ │ │ └── StatusPrimitive.tsx │ │ │ │ │ ├── Status.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variations/ │ │ │ │ │ ├── StatusCanceled.tsx │ │ │ │ │ ├── StatusFailed.tsx │ │ │ │ │ ├── StatusInProgress.tsx │ │ │ │ │ ├── StatusSuccessful.tsx │ │ │ │ │ └── StatusWarning.tsx │ │ │ │ ├── StatusDot/ │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── StatusDotPrimitive.module.css │ │ │ │ │ │ ├── StatusDotPrimitive.test.tsx │ │ │ │ │ │ └── StatusDotPrimitive.tsx │ │ │ │ │ ├── StatusDot.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variations/ │ │ │ │ │ ├── StatusDotBeta.tsx │ │ │ │ │ ├── StatusDotError.tsx │ │ │ │ │ ├── StatusDotInformation.tsx │ │ │ │ │ ├── StatusDotSuccess.tsx │ │ │ │ │ └── StatusDotWarning.tsx │ │ │ │ ├── Stepper/ │ │ │ │ │ ├── Progress/ │ │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ │ ├── Progress.module.css │ │ │ │ │ │ │ └── Progress.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── variations/ │ │ │ │ │ │ ├── Progress.horizontal.module.css │ │ │ │ │ │ ├── Progress.horizontal.tsx │ │ │ │ │ │ ├── Progress.vertical.module.css │ │ │ │ │ │ └── Progress.vertical.tsx │ │ │ │ │ ├── Step/ │ │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ │ ├── Step.module.css │ │ │ │ │ │ │ └── Step.tsx │ │ │ │ │ │ ├── Step.cy.tsx │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── variations/ │ │ │ │ │ │ ├── Step.Skeleton.module.css │ │ │ │ │ │ ├── Step.disabled.tsx │ │ │ │ │ │ ├── Step.enabled.tsx │ │ │ │ │ │ ├── Step.error.tsx │ │ │ │ │ │ ├── Step.progress.tsx │ │ │ │ │ │ ├── Step.skeleton.tsx │ │ │ │ │ │ └── Step.validated.tsx │ │ │ │ │ ├── Stepper.cy.tsx │ │ │ │ │ ├── Stepper.module.css │ │ │ │ │ ├── Stepper.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variations/ │ │ │ │ │ ├── Stepper.horizontal.tsx │ │ │ │ │ └── Stepper.vertical.tsx │ │ │ │ ├── Switch/ │ │ │ │ │ ├── Switch.module.css │ │ │ │ │ ├── Switch.test.tsx │ │ │ │ │ ├── Switch.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Switch.test.tsx.snap │ │ │ │ │ └── index.ts │ │ │ │ ├── Tabs/ │ │ │ │ │ ├── Primitive/ │ │ │ │ │ │ ├── TabPanel.tsx │ │ │ │ │ │ ├── TabStyles.module.css │ │ │ │ │ │ ├── Tabs.tsx │ │ │ │ │ │ └── TabsProvider.tsx │ │ │ │ │ ├── Tabs.test.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Tabs.test.tsx.snap │ │ │ │ │ ├── index.ts │ │ │ │ │ └── variants/ │ │ │ │ │ └── Tabs.tsx │ │ │ │ ├── Tag/ │ │ │ │ │ ├── Tag.cy.tsx │ │ │ │ │ ├── Tag.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── primitive/ │ │ │ │ │ │ ├── TagPrimitive.module.css │ │ │ │ │ │ ├── TagPrimitive.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── variations/ │ │ │ │ │ ├── TagBeta.module.css │ │ │ │ │ ├── TagBeta.tsx │ │ │ │ │ ├── TagDefault.module.css │ │ │ │ │ ├── TagDefault.tsx │ │ │ │ │ ├── TagDestructive.module.css │ │ │ │ │ ├── TagDestructive.tsx │ │ │ │ │ ├── TagInformation.module.css │ │ │ │ │ ├── TagInformation.tsx │ │ │ │ │ ├── TagSuccess.module.css │ │ │ │ │ ├── TagSuccess.tsx │ │ │ │ │ ├── TagWarning.module.css │ │ │ │ │ ├── TagWarning.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── ThemeProvider/ │ │ │ │ │ ├── ThemeContext/ │ │ │ │ │ │ ├── ThemeContext.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── ThemeProvider.css │ │ │ │ │ ├── ThemeProvider.tsx │ │ │ │ │ ├── ThemeSwitcher/ │ │ │ │ │ │ ├── ThemeSwitcher.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── ThemeProviderWithoutGlobals/ │ │ │ │ │ ├── ThemeProviderWithoutGlobals.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── Tooltip/ │ │ │ │ │ ├── Tooltip.cy.tsx │ │ │ │ │ ├── Tooltip.module.css │ │ │ │ │ ├── Tooltip.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── VisuallyHidden/ │ │ │ │ │ ├── VisuallyHidden.module.css │ │ │ │ │ ├── VisuallyHidden.tsx │ │ │ │ │ └── index.ts │ │ │ │ ├── constants.ts │ │ │ │ └── illustrations/ │ │ │ │ ├── IconActivity.tsx │ │ │ │ ├── IconChart.tsx │ │ │ │ ├── IconChecklist.tsx │ │ │ │ ├── IconDefault.module.css │ │ │ │ ├── IconDefault.tsx │ │ │ │ ├── IconDocument.tsx │ │ │ │ ├── IconFlask.tsx │ │ │ │ ├── IconInProgress.tsx │ │ │ │ ├── IconLightBulb.tsx │ │ │ │ ├── IconMessage.tsx │ │ │ │ ├── IconPlug.tsx │ │ │ │ ├── IconRocket.tsx │ │ │ │ ├── IconSearch.tsx │ │ │ │ ├── IconSettings.tsx │ │ │ │ ├── IconUpdate.tsx │ │ │ │ ├── IconUser.tsx │ │ │ │ ├── IconWarning.tsx │ │ │ │ ├── SpotDefault.module.css │ │ │ │ ├── SpotDefault.tsx │ │ │ │ └── index.ts │ │ │ ├── declare.d.ts │ │ │ ├── index.ts │ │ │ ├── mergeRef.ts │ │ │ ├── renderChildren.ts │ │ │ ├── renderOrClone.ts │ │ │ ├── stories/ │ │ │ │ ├── Status.block.tsx │ │ │ │ ├── clickable/ │ │ │ │ │ ├── About.mdx │ │ │ │ │ ├── Button.mdx │ │ │ │ │ ├── Button.stories.tsx │ │ │ │ │ ├── ButtonAsLink.mdx │ │ │ │ │ ├── ButtonAsLink.stories.tsx │ │ │ │ │ ├── ButtonIcon.mdx │ │ │ │ │ ├── ButtonIcon.stories.tsx │ │ │ │ │ ├── Dropdown.mdx │ │ │ │ │ ├── Dropdown.stories.tsx │ │ │ │ │ ├── Link.mdx │ │ │ │ │ ├── Link.stories.tsx │ │ │ │ │ └── LinkAsButton.stories.tsx │ │ │ │ ├── docs/ │ │ │ │ │ ├── Area.module.css │ │ │ │ │ ├── Area.tsx │ │ │ │ │ ├── WithSelector.tsx │ │ │ │ │ └── data/ │ │ │ │ │ └── CountryCodes.json │ │ │ │ ├── feedback/ │ │ │ │ │ ├── EmptyState.mdx │ │ │ │ │ ├── EmptyState.stories.tsx │ │ │ │ │ ├── ErrorState.mdx │ │ │ │ │ ├── ErrorState.stories.tsx │ │ │ │ │ ├── Loading.mdx │ │ │ │ │ ├── Loading.stories.tsx │ │ │ │ │ ├── Skeleton.mdx │ │ │ │ │ ├── Skeleton.stories.tsx │ │ │ │ │ ├── Status.mdx │ │ │ │ │ ├── Status.stories.tsx │ │ │ │ │ ├── StatusDot.mdx │ │ │ │ │ └── StatusDot.stories.tsx │ │ │ │ ├── form/ │ │ │ │ │ ├── About.mdx │ │ │ │ │ ├── Affix/ │ │ │ │ │ │ ├── Affix.stories.tsx │ │ │ │ │ │ └── Affixes.mdx │ │ │ │ │ ├── Buttons/ │ │ │ │ │ │ ├── FormButtons.mdx │ │ │ │ │ │ └── FormButtons.stories.tsx │ │ │ │ │ ├── Combobox.stories.tsx │ │ │ │ │ ├── Enumeration/ │ │ │ │ │ │ ├── Enumeration.mdx │ │ │ │ │ │ └── Enumeration.stories.tsx │ │ │ │ │ ├── Field/ │ │ │ │ │ │ ├── Datalist/ │ │ │ │ │ │ │ ├── Input.Datalist.mdx │ │ │ │ │ │ │ └── Input.Datalist.stories.tsx │ │ │ │ │ │ ├── FormField.mdx │ │ │ │ │ │ ├── FormField.stories.tsx │ │ │ │ │ │ ├── Input/ │ │ │ │ │ │ │ ├── Input.Checkbox.mdx │ │ │ │ │ │ │ ├── Input.Checkbox.stories.tsx │ │ │ │ │ │ │ ├── Input.Color.mdx │ │ │ │ │ │ │ ├── Input.Color.stories.tsx │ │ │ │ │ │ │ ├── Input.Copy.mdx │ │ │ │ │ │ │ ├── Input.Copy.stories.tsx │ │ │ │ │ │ │ ├── Input.Date.mdx │ │ │ │ │ │ │ ├── Input.Date.stories.tsx │ │ │ │ │ │ │ ├── Input.DatetimeLocal.mdx │ │ │ │ │ │ │ ├── Input.DatetimeLocal.stories.tsx │ │ │ │ │ │ │ ├── Input.Email.mdx │ │ │ │ │ │ │ ├── Input.Email.stories.tsx │ │ │ │ │ │ │ ├── Input.File.mdx │ │ │ │ │ │ │ ├── Input.File.stories.tsx │ │ │ │ │ │ │ ├── Input.Month.mdx │ │ │ │ │ │ │ ├── Input.Month.stories.tsx │ │ │ │ │ │ │ ├── Input.Number.mdx │ │ │ │ │ │ │ ├── Input.Number.stories.tsx │ │ │ │ │ │ │ ├── Input.Radio.mdx │ │ │ │ │ │ │ ├── Input.Radio.stories.tsx │ │ │ │ │ │ │ ├── Input.Search.mdx │ │ │ │ │ │ │ ├── Input.Search.stories.tsx │ │ │ │ │ │ │ ├── Input.Tel.mdx │ │ │ │ │ │ │ ├── Input.Tel.stories.tsx │ │ │ │ │ │ │ ├── Input.Text.mdx │ │ │ │ │ │ │ ├── Input.Text.stories.tsx │ │ │ │ │ │ │ ├── Input.Time.mdx │ │ │ │ │ │ │ ├── Input.Time.stories.tsx │ │ │ │ │ │ │ ├── Input.Url.mdx │ │ │ │ │ │ │ ├── Input.Url.stories.tsx │ │ │ │ │ │ │ ├── Input.Week.mdx │ │ │ │ │ │ │ ├── Input.Week.stories.tsx │ │ │ │ │ │ │ ├── Password.mdx │ │ │ │ │ │ │ └── Password.stories.tsx │ │ │ │ │ │ ├── Select/ │ │ │ │ │ │ │ ├── Input.Select.mdx │ │ │ │ │ │ │ └── Input.Select.stories.tsx │ │ │ │ │ │ └── Textarea/ │ │ │ │ │ │ ├── Input.Textarea.mdx │ │ │ │ │ │ └── Input.Textarea.stories.tsx │ │ │ │ │ ├── FieldCombobox.mdx │ │ │ │ │ ├── Fieldset/ │ │ │ │ │ │ ├── Fieldset.mdx │ │ │ │ │ │ ├── Fieldset.stories.tsx │ │ │ │ │ │ └── FormFieldset.mdx │ │ │ │ │ ├── Form.mdx │ │ │ │ │ ├── Form.stories.tsx │ │ │ │ │ ├── InlineEditing.mdx │ │ │ │ │ ├── InlineEditing.stories.tsx │ │ │ │ │ ├── RichRadioButton.mdx │ │ │ │ │ ├── RichRadioButton.stories.tsx │ │ │ │ │ ├── Switch.mdx │ │ │ │ │ ├── Switch.stories.tsx │ │ │ │ │ └── ToggleSwitch/ │ │ │ │ │ ├── ToggleSwitch.mdx │ │ │ │ │ └── ToggleSwitch.stories.tsx │ │ │ │ ├── icons/ │ │ │ │ │ ├── About.mdx │ │ │ │ │ ├── Icon.mdx │ │ │ │ │ ├── Icon.stories.tsx │ │ │ │ │ ├── Icons.tsx │ │ │ │ │ ├── SizedIcon.mdx │ │ │ │ │ └── SizedIcon.stories.tsx │ │ │ │ ├── layout/ │ │ │ │ │ ├── Card.mdx │ │ │ │ │ ├── Card.stories.tsx │ │ │ │ │ ├── Modal.mdx │ │ │ │ │ ├── Modal.stories.tsx │ │ │ │ │ ├── Stack.mdx │ │ │ │ │ └── Stack.stories.tsx │ │ │ │ ├── messaging/ │ │ │ │ │ ├── Badge.mdx │ │ │ │ │ ├── Badge.stories.tsx │ │ │ │ │ ├── InlineMessage.mdx │ │ │ │ │ ├── InlineMessage.stories.tsx │ │ │ │ │ ├── Message.mdx │ │ │ │ │ ├── Message.stories.tsx │ │ │ │ │ ├── Popover.mdx │ │ │ │ │ ├── Popover.stories.tsx │ │ │ │ │ ├── Tag.mdx │ │ │ │ │ ├── Tag.stories.tsx │ │ │ │ │ ├── Tooltip.mdx │ │ │ │ │ └── Tooltip.stories.tsx │ │ │ │ ├── navigation/ │ │ │ │ │ ├── Accordion.mdx │ │ │ │ │ ├── Accordion.stories.tsx │ │ │ │ │ ├── Breadcrumbs.mdx │ │ │ │ │ ├── Breadcrumbs.stories.tsx │ │ │ │ │ ├── Divider.mdx │ │ │ │ │ ├── Divider.stories.tsx │ │ │ │ │ ├── FloatingDrawer.mdx │ │ │ │ │ ├── FloatingDrawer.stories.tsx │ │ │ │ │ ├── Stepper.Step.mdx │ │ │ │ │ ├── Stepper.Step.stories.tsx │ │ │ │ │ ├── Stepper.mdx │ │ │ │ │ ├── Stepper.stories.tsx │ │ │ │ │ ├── Tabs.mdx │ │ │ │ │ └── Tabs.stories.tsx │ │ │ │ └── status.json │ │ │ ├── themes/ │ │ │ │ └── index.ts │ │ │ ├── types/ │ │ │ │ └── index.ts │ │ │ ├── useControl.ts │ │ │ ├── useId.ts │ │ │ └── vitest.setup.ts │ │ ├── static/ │ │ │ ├── _headers │ │ │ ├── favicon/ │ │ │ │ ├── browserconfig.xml │ │ │ │ └── site.webmanifest │ │ │ ├── robots.txt │ │ │ └── sw.js │ │ ├── stylelint.config.mjs │ │ ├── talend-i18n.json │ │ ├── talend-scripts.json │ │ ├── tsconfig.build.json │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── design-tokens/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── dependencies.json │ │ ├── eslint.config.mjs │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── compare.js │ │ │ └── umd.test.js │ │ ├── src/ │ │ │ ├── _tokens.scss │ │ │ ├── dark/ │ │ │ │ ├── _index.scss │ │ │ │ ├── _tokens.scss │ │ │ │ ├── dictionary.ts │ │ │ │ └── index.ts │ │ │ ├── declaration.d.ts │ │ │ ├── index.scss │ │ │ ├── index.ts │ │ │ ├── index.umd.ts │ │ │ ├── light/ │ │ │ │ ├── _index.scss │ │ │ │ ├── dictionary.ts │ │ │ │ └── index.ts │ │ │ ├── qlik-light/ │ │ │ │ ├── _index.scss │ │ │ │ ├── dictionary.ts │ │ │ │ └── index.ts │ │ │ └── types.ts │ │ ├── supernova-exporter/ │ │ │ ├── README.md │ │ │ ├── exporter.json │ │ │ ├── output.json │ │ │ ├── sources.json │ │ │ └── src/ │ │ │ ├── exportCSS/ │ │ │ │ ├── CSS.pr │ │ │ │ ├── css-stylesheet-with-path.pr │ │ │ │ ├── main-renderers/ │ │ │ │ │ ├── css-reference-wrapper.pr │ │ │ │ │ ├── css-rendered-name.pr │ │ │ │ │ ├── css-rendered-token-class.pr │ │ │ │ │ ├── css-rendered-token-style.pr │ │ │ │ │ ├── css-rendered-token-var.pr │ │ │ │ │ └── css-rendered-value.pr │ │ │ │ └── token-renderers/ │ │ │ │ ├── css-rendered-border.pr │ │ │ │ ├── css-rendered-color.pr │ │ │ │ ├── css-rendered-gradient.pr │ │ │ │ ├── css-rendered-lineHeight.pr │ │ │ │ ├── css-rendered-measure.pr │ │ │ │ ├── css-rendered-other.pr │ │ │ │ ├── css-rendered-radius.pr │ │ │ │ ├── css-rendered-shadow.pr │ │ │ │ ├── css-rendered-text.pr │ │ │ │ └── css-rendered-typography.pr │ │ │ ├── exportSCSS/ │ │ │ │ ├── SCSS.pr │ │ │ │ ├── main-renderers/ │ │ │ │ │ ├── scss-reference-wrapper.pr │ │ │ │ │ ├── scss-rendered-description.pr │ │ │ │ │ ├── scss-rendered-token-class.pr │ │ │ │ │ └── scss-rendered-token-var.pr │ │ │ │ └── scss-tokens-with-path.pr │ │ │ ├── exportTS/ │ │ │ │ ├── allTokens.pr │ │ │ │ ├── dictionary.pr │ │ │ │ ├── main-renderers/ │ │ │ │ │ ├── index-file.pr │ │ │ │ │ ├── reference-wrapper.pr │ │ │ │ │ ├── rendered-css-name.pr │ │ │ │ │ ├── rendered-description.pr │ │ │ │ │ ├── rendered-dictionnary-entry.pr │ │ │ │ │ ├── rendered-token-class.pr │ │ │ │ │ ├── rendered-token-var.pr │ │ │ │ │ ├── rendered-ts-name.pr │ │ │ │ │ ├── rendered-type.pr │ │ │ │ │ ├── rendered-value-detailed.pr │ │ │ │ │ └── rendered-value.pr │ │ │ │ ├── token-renderers/ │ │ │ │ │ ├── rendered-border.pr │ │ │ │ │ ├── rendered-color-detailed.pr │ │ │ │ │ ├── rendered-color.pr │ │ │ │ │ ├── rendered-gradient-detailed.pr │ │ │ │ │ ├── rendered-gradient.pr │ │ │ │ │ ├── rendered-lineHeight.pr │ │ │ │ │ ├── rendered-measure-detailed.pr │ │ │ │ │ ├── rendered-measure.pr │ │ │ │ │ ├── rendered-radius-detailed.pr │ │ │ │ │ ├── rendered-radius.pr │ │ │ │ │ ├── rendered-shadow-detailed.pr │ │ │ │ │ ├── rendered-shadow.pr │ │ │ │ │ ├── rendered-text-detailed.pr │ │ │ │ │ ├── rendered-text.pr │ │ │ │ │ ├── rendered-typography-detailed.pr │ │ │ │ │ └── rendered-typography.pr │ │ │ │ ├── ts-dictionnary-with-path.pr │ │ │ │ └── ts-index-with-path.pr │ │ │ └── js/ │ │ │ └── helpers.js │ │ ├── talend-scripts.json │ │ ├── tsconfig.json │ │ └── webpack.config.js │ ├── faceted-search/ │ │ ├── .babelrc │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── .storybook/ │ │ │ ├── main.mjs │ │ │ └── preview.jsx │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── eslint.config.mjs │ │ ├── i18next-scanner.config.js │ │ ├── jest.setup.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── CRUDBadges.js │ │ │ ├── components/ │ │ │ │ ├── AddFacetPopover/ │ │ │ │ │ ├── AddFacetPopover.component.jsx │ │ │ │ │ ├── AddFacetPopover.module.css │ │ │ │ │ ├── AddFacetPopoverHeader/ │ │ │ │ │ │ ├── AddFacetPopoverHeader.component.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── AddFacetPopoverRow/ │ │ │ │ │ │ ├── AddFacetPopoverRowButton/ │ │ │ │ │ │ │ ├── AddFacetPopoverRowButton.component.jsx │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── AddFacetPopoverRowItem/ │ │ │ │ │ │ │ ├── AddFacetPopoverRowItem.component.jsx │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── AddFacetPopver.component.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── AddFacetPopver.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── AdvancedSearch/ │ │ │ │ │ ├── AdvancedSearch.component.jsx │ │ │ │ │ ├── AdvancedSearch.component.test.jsx │ │ │ │ │ ├── AdvancedSearch.module.css │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── AdvancedSearch.component.test.js.snap │ │ │ │ │ │ └── AdvancedSearch.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── Badges/ │ │ │ │ │ ├── BadgeCheckboxes/ │ │ │ │ │ │ ├── BadgeCheckboxes.component.jsx │ │ │ │ │ │ ├── BadgeCheckboxes.component.test.jsx │ │ │ │ │ │ ├── BadgeCheckboxes.module.css │ │ │ │ │ │ ├── BadgeCheckboxesForm.component.jsx │ │ │ │ │ │ ├── BadgeCheckboxesForm.component.test.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── BadgeDate/ │ │ │ │ │ │ ├── BadgeDate.component.jsx │ │ │ │ │ │ ├── BadgeDate.component.test.jsx │ │ │ │ │ │ ├── BadgeDate.module.css │ │ │ │ │ │ ├── BadgeDateForm.component.jsx │ │ │ │ │ │ ├── BadgeDateForm.component.test.jsx │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ ├── BadgeDate.component.test.js.snap │ │ │ │ │ │ ├── BadgeDate.component.test.jsx.snap │ │ │ │ │ │ ├── BadgeDateForm.component.test.js.snap │ │ │ │ │ │ └── BadgeDateForm.component.test.jsx.snap │ │ │ │ │ ├── BadgeFaceted/ │ │ │ │ │ │ ├── BadgeFaceted.component.jsx │ │ │ │ │ │ ├── BadgeFaceted.component.test.jsx │ │ │ │ │ │ ├── BadgeFaceted.module.css │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── BadgeFaceted.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── BadgeMenu/ │ │ │ │ │ │ ├── BadgeMenu.component.jsx │ │ │ │ │ │ ├── BadgeMenu.component.test.jsx │ │ │ │ │ │ ├── BadgeMenu.module.css │ │ │ │ │ │ ├── BadgeMenuForm.component.jsx │ │ │ │ │ │ └── BadgeMenuForm.component.test.jsx │ │ │ │ │ ├── BadgeNumber/ │ │ │ │ │ │ ├── BadgeNumber.component.jsx │ │ │ │ │ │ ├── BadgeNumber.component.test.jsx │ │ │ │ │ │ ├── BadgeNumberForm.component.jsx │ │ │ │ │ │ ├── BadgeNumberForm.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── BadgeNumber.component.test.js.snap │ │ │ │ │ │ │ ├── BadgeNumber.component.test.jsx.snap │ │ │ │ │ │ │ ├── BadgeNumberForm.component.test.js.snap │ │ │ │ │ │ │ └── BadgeNumberForm.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── BadgeOperator/ │ │ │ │ │ │ ├── BadgeOperator.module.css │ │ │ │ │ │ ├── BadgeOperatorOverlay.component.jsx │ │ │ │ │ │ ├── BadgeOperatorPopover.component.jsx │ │ │ │ │ │ ├── BadgeOperatorPopover.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── BadgeOperatorPopover.component.test.js.snap │ │ │ │ │ │ │ └── BadgeOperatorPopover.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── BadgeOverlay/ │ │ │ │ │ │ ├── BadgeOverlay.component.jsx │ │ │ │ │ │ ├── BadgeOverlay.component.test.jsx │ │ │ │ │ │ ├── BadgeOverlay.module.css │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── BadgeOverlay.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── BadgePeriod/ │ │ │ │ │ │ ├── BadgePeriod.component.jsx │ │ │ │ │ │ ├── BadgePeriod.component.test.jsx │ │ │ │ │ │ ├── BadgePeriodForm.component.jsx │ │ │ │ │ │ └── BadgePeriodForm.component.test.jsx │ │ │ │ │ ├── BadgeSlider/ │ │ │ │ │ │ ├── BadgeSlider.component.jsx │ │ │ │ │ │ ├── BadgeSlider.component.test.jsx │ │ │ │ │ │ ├── BadgeSlider.module.css │ │ │ │ │ │ ├── BadgeSliderForm.component.jsx │ │ │ │ │ │ ├── BadgeSliderForm.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── BadgeSlider.component.test.js.snap │ │ │ │ │ │ │ ├── BadgeSlider.component.test.jsx.snap │ │ │ │ │ │ │ ├── BadgeSliderForm.component.test.js.snap │ │ │ │ │ │ │ └── BadgeSliderForm.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── BadgeText/ │ │ │ │ │ │ ├── BadgeText.component.jsx │ │ │ │ │ │ ├── BadgeText.component.test.jsx │ │ │ │ │ │ ├── BadgeTextForm.component.jsx │ │ │ │ │ │ ├── BadgeTextForm.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── BadgeText.component.test.js.snap │ │ │ │ │ │ │ ├── BadgeText.component.test.jsx.snap │ │ │ │ │ │ │ ├── BadgeTextForm.component.test.js.snap │ │ │ │ │ │ │ └── BadgeTextForm.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── BadgesGenerator/ │ │ │ │ │ ├── BadgesGenerator.component.jsx │ │ │ │ │ ├── BadgesGenerator.component.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── BadgesGenerator.component.test.js.snap │ │ │ │ │ │ └── BadgesGenerator.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── BasicSearch/ │ │ │ │ │ ├── BasicSearch.component.jsx │ │ │ │ │ ├── BasicSearch.component.test.jsx │ │ │ │ │ ├── BasicSearch.module.css │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── BasicSearch.component.test.js.snap │ │ │ │ │ │ └── BasicSearch.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── FacetedManager/ │ │ │ │ │ ├── FacetedManager.component.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── FacetedSearch/ │ │ │ │ │ ├── FacetedSearch.component.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── FacetedToolbar/ │ │ │ │ │ ├── FacetedToolbar.component.jsx │ │ │ │ │ ├── FacetedToolbar.module.css │ │ │ │ │ └── index.js │ │ │ │ ├── QuickSearchInput/ │ │ │ │ │ ├── QuickSearchInput.component.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── README.md │ │ │ │ ├── context/ │ │ │ │ │ ├── badgeFaceted.context.js │ │ │ │ │ └── facetedSearch.context.js │ │ │ │ ├── facetedSearch.propTypes.js │ │ │ │ ├── index.js │ │ │ │ └── types/ │ │ │ │ ├── badgeDefinition.type.js │ │ │ │ └── badgeDefinition.type.test.jsx │ │ │ ├── constants.js │ │ │ ├── controlled.js │ │ │ ├── dictionary/ │ │ │ │ ├── badge.dictionary.js │ │ │ │ ├── badge.dictionary.test.jsx │ │ │ │ ├── helpers.dictionary.js │ │ │ │ ├── helpers.dictionary.test.jsx │ │ │ │ └── operator.dictionary.js │ │ │ ├── helpers/ │ │ │ │ ├── usage.helpers.js │ │ │ │ └── usage.helpers.test.jsx │ │ │ ├── hooks/ │ │ │ │ ├── README.md │ │ │ │ ├── badgeOverlayFlow.hook.js │ │ │ │ └── facetedBadges.hook.js │ │ │ ├── index.js │ │ │ ├── stories/ │ │ │ │ ├── badge.stories.jsx │ │ │ │ ├── badgesDefinitions.js │ │ │ │ └── facetedSearch.stories.jsx │ │ │ └── translate.js │ │ ├── stylelint.config.mjs │ │ ├── talend-i18n.json │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── faceted-search-query-client/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── eslint.config.mjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.js │ │ │ ├── tql.js │ │ │ └── tql.test.js │ │ └── vitest.config.ts │ ├── flow-designer/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── eslint.config.mjs │ │ ├── licence.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── actions/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── flow.actions.test.ts.snap │ │ │ │ │ ├── link.actions.test.ts.snap │ │ │ │ │ ├── node.actions.test.ts.snap │ │ │ │ │ └── port.actions.test.ts.snap │ │ │ │ ├── flow.actions.test.ts │ │ │ │ ├── flow.actions.ts │ │ │ │ ├── link.actions.test.ts │ │ │ │ ├── link.actions.ts │ │ │ │ ├── node.actions.test.ts │ │ │ │ ├── node.actions.ts │ │ │ │ ├── nodeType.actions.test.ts │ │ │ │ ├── nodeType.actions.ts │ │ │ │ ├── port.actions.test.ts │ │ │ │ └── port.actions.ts │ │ │ ├── api/ │ │ │ │ ├── data/ │ │ │ │ │ ├── data.test.ts │ │ │ │ │ └── data.ts │ │ │ │ ├── index.ts │ │ │ │ ├── link/ │ │ │ │ │ ├── link.test.ts │ │ │ │ │ └── link.ts │ │ │ │ ├── node/ │ │ │ │ │ ├── node.test.ts │ │ │ │ │ └── node.ts │ │ │ │ ├── port/ │ │ │ │ │ ├── port.test.ts │ │ │ │ │ └── port.ts │ │ │ │ ├── position/ │ │ │ │ │ ├── position.test.ts │ │ │ │ │ └── position.ts │ │ │ │ ├── readme.md │ │ │ │ ├── size/ │ │ │ │ │ ├── size.test.ts │ │ │ │ │ └── size.ts │ │ │ │ └── throwInDev.ts │ │ │ ├── components/ │ │ │ │ ├── FlowDesigner.container.test.tsx │ │ │ │ ├── FlowDesigner.container.tsx │ │ │ │ ├── ZoomHandler.component.tsx │ │ │ │ ├── ZoomHandler.test.tsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── FlowDesigner.container.test.tsx.snap │ │ │ │ │ └── ZoomHandler.test.tsx.snap │ │ │ │ ├── configuration/ │ │ │ │ │ ├── LinkType.component.ts │ │ │ │ │ ├── NodeType.component.ts │ │ │ │ │ ├── NodeType.test.tsx │ │ │ │ │ └── PortType.component.ts │ │ │ │ ├── grid/ │ │ │ │ │ ├── Grid.component.tsx │ │ │ │ │ ├── Grid.test.tsx │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ └── Grid.test.tsx.snap │ │ │ │ ├── link/ │ │ │ │ │ ├── AbstractLink.component.tsx │ │ │ │ │ ├── LinkHandle.component.tsx │ │ │ │ │ ├── LinkHandle.test.tsx │ │ │ │ │ ├── LinksRenderer.component.tsx │ │ │ │ │ ├── LinksRenderer.test.tsx │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ ├── LinkHandle.test.tsx.snap │ │ │ │ │ └── LinksRenderer.test.tsx.snap │ │ │ │ ├── node/ │ │ │ │ │ ├── AbstractNode.component.tsx │ │ │ │ │ ├── AbstractNode.snapshot.test.tsx │ │ │ │ │ ├── AbstractNode.test.tsx │ │ │ │ │ ├── NodesRenderer.component.tsx │ │ │ │ │ ├── NodesRenderer.test.tsx │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ ├── AbstractNode.snapshot.test.tsx.snap │ │ │ │ │ └── NodesRenderer.test.tsx.snap │ │ │ │ └── port/ │ │ │ │ ├── AbstractPort.component.tsx │ │ │ │ ├── AbstractPort.test.tsx │ │ │ │ ├── PortsRenderer.component.tsx │ │ │ │ ├── PortsRenderer.test.tsx │ │ │ │ └── __snapshots__/ │ │ │ │ ├── AbstractPort.test.tsx.snap │ │ │ │ └── PortsRenderer.test.tsx.snap │ │ │ ├── constants/ │ │ │ │ ├── flowdesigner.constants.ts │ │ │ │ ├── flowdesigner.model.ts │ │ │ │ └── flowdesigner.proptypes.ts │ │ │ ├── customTypings/ │ │ │ │ └── index.d.ts │ │ │ ├── index.ts │ │ │ ├── reducers/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── flow.reducer.test.ts.snap │ │ │ │ │ ├── link.reducer.test.ts.snap │ │ │ │ │ ├── node.reducer.test.ts.snap │ │ │ │ │ └── port.reducer.test.ts.snap │ │ │ │ ├── flow.reducer.test.ts │ │ │ │ ├── flow.reducer.ts │ │ │ │ ├── index.ts │ │ │ │ ├── link.reducer.test.ts │ │ │ │ ├── link.reducer.ts │ │ │ │ ├── node.reducer.test.ts │ │ │ │ ├── node.reducer.ts │ │ │ │ ├── nodeType.reducer.ts │ │ │ │ ├── port.reducer.test.ts │ │ │ │ └── port.reducer.ts │ │ │ └── selectors/ │ │ │ ├── __snapshots__/ │ │ │ │ └── nodeSelectors.test.ts.snap │ │ │ ├── linkSelectors.ts │ │ │ ├── nodeSelectors.test.ts │ │ │ ├── nodeSelectors.ts │ │ │ ├── portSelectors.test.ts │ │ │ └── portSelectors.ts │ │ ├── test/ │ │ │ ├── fileMock.js │ │ │ ├── styleMock.js │ │ │ └── test-setup.js │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── forms/ │ │ ├── .babelrc.json │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── .sass-lint.yml │ │ ├── .storybook/ │ │ │ └── preview.js │ │ ├── 6.0-BreakingChanges.md │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __mocks__/ │ │ │ ├── data.jsx │ │ │ └── react-virtualized.js │ │ ├── eslint.config.mjs │ │ ├── i18next-scanner.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── FormSkeleton.module.css │ │ │ ├── FormSkeleton.test.tsx │ │ │ ├── FormSkeleton.tsx │ │ │ ├── FormSwitcher.test.tsx │ │ │ ├── FormSwitcher.tsx │ │ │ ├── UIForm/ │ │ │ │ ├── FormTemplate/ │ │ │ │ │ ├── DefaultFormTemplate.component.jsx │ │ │ │ │ ├── TextModeFormTemplate.component.jsx │ │ │ │ │ └── index.js │ │ │ │ ├── Message/ │ │ │ │ │ ├── Message.component.jsx │ │ │ │ │ ├── Message.component.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── Message.component.test.js.snap │ │ │ │ │ │ └── Message.component.test.jsx.snap │ │ │ │ │ ├── generateId.js │ │ │ │ │ ├── generateId.test.js │ │ │ │ │ └── index.js │ │ │ │ ├── README.md │ │ │ │ ├── UIForm.component.jsx │ │ │ │ ├── UIForm.container.jsx │ │ │ │ ├── UIForm.container.test.jsx │ │ │ │ ├── UIForm.module.css │ │ │ │ ├── Widget/ │ │ │ │ │ ├── Widget.component.jsx │ │ │ │ │ ├── Widget.component.module.css │ │ │ │ │ ├── Widget.component.test.jsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── Widget.component.test.jsx.snap │ │ │ │ │ └── index.js │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── ordering.json │ │ │ │ │ ├── simple-merged.json │ │ │ │ │ ├── simple.json │ │ │ │ │ └── widgets.json │ │ │ │ ├── context.js │ │ │ │ ├── customFormats.js │ │ │ │ ├── customFormats.test.js │ │ │ │ ├── doc/ │ │ │ │ │ ├── conditional-rendering.md │ │ │ │ │ ├── display-mode.md │ │ │ │ │ ├── how-to-use.md │ │ │ │ │ ├── principles.md │ │ │ │ │ ├── triggers.md │ │ │ │ │ ├── validation.md │ │ │ │ │ └── widgets.md │ │ │ │ ├── fields/ │ │ │ │ │ ├── Button/ │ │ │ │ │ │ ├── Button.component.jsx │ │ │ │ │ │ ├── Button.component.test.jsx │ │ │ │ │ │ ├── Buttons.component.jsx │ │ │ │ │ │ ├── Buttons.component.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── SingleButton.component.jsx │ │ │ │ │ │ ├── SingleButton.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Button.component.test.js.snap │ │ │ │ │ │ │ ├── Button.component.test.jsx.snap │ │ │ │ │ │ │ ├── Buttons.component.test.js.snap │ │ │ │ │ │ │ ├── Buttons.component.test.jsx.snap │ │ │ │ │ │ │ ├── SingleButton.component.test.js.snap │ │ │ │ │ │ │ └── SingleButton.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── CheckBox/ │ │ │ │ │ │ ├── CheckBox.component.jsx │ │ │ │ │ │ ├── CheckBox.test.jsx │ │ │ │ │ │ ├── CheckBoxes.component.jsx │ │ │ │ │ │ ├── CheckBoxes.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── SimpleCheckBox.component.jsx │ │ │ │ │ │ ├── SimpleCheckBox.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── CheckBox.test.js.snap │ │ │ │ │ │ │ ├── CheckBox.test.jsx.snap │ │ │ │ │ │ │ ├── CheckBoxes.test.js.snap │ │ │ │ │ │ │ ├── CheckBoxes.test.jsx.snap │ │ │ │ │ │ │ ├── SimpleCheckBox.test.js.snap │ │ │ │ │ │ │ └── SimpleCheckBox.test.jsx.snap │ │ │ │ │ │ ├── displayMode/ │ │ │ │ │ │ │ ├── TextMode.component.jsx │ │ │ │ │ │ │ ├── TextMode.test.jsx │ │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ │ ├── TextMode.test.js.snap │ │ │ │ │ │ │ └── TextMode.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Code/ │ │ │ │ │ │ ├── Code.component.test.tsx │ │ │ │ │ │ ├── Code.component.tsx │ │ │ │ │ │ ├── CodeSkeleton.component.tsx │ │ │ │ │ │ ├── CodeSkeleton.module.css │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── displayMode/ │ │ │ │ │ │ │ ├── TextMode.component.test.tsx │ │ │ │ │ │ │ └── TextMode.component.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Comparator/ │ │ │ │ │ │ ├── Comparator.component.jsx │ │ │ │ │ │ ├── Comparator.component.test.jsx │ │ │ │ │ │ ├── Comparator.module.css │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Comparator.component.test.js.snap │ │ │ │ │ │ │ └── Comparator.component.test.jsx.snap │ │ │ │ │ │ ├── displayMode/ │ │ │ │ │ │ │ ├── TextMode.component.jsx │ │ │ │ │ │ │ ├── TextMode.test.jsx │ │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ │ ├── TextMode.test.js.snap │ │ │ │ │ │ │ └── TextMode.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Datalist/ │ │ │ │ │ │ ├── Datalist.component.jsx │ │ │ │ │ │ ├── Datalist.component.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Datalist.component.test.js.snap │ │ │ │ │ │ │ └── Datalist.component.test.jsx.snap │ │ │ │ │ │ ├── constants.js │ │ │ │ │ │ ├── displayMode/ │ │ │ │ │ │ │ ├── TextMode.component.jsx │ │ │ │ │ │ │ ├── TextMode.component.test.jsx │ │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ │ ├── TextMode.component.test.js.snap │ │ │ │ │ │ │ └── TextMode.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Date/ │ │ │ │ │ │ ├── Date.component.jsx │ │ │ │ │ │ ├── Date.component.test.jsx │ │ │ │ │ │ ├── Date.utils.js │ │ │ │ │ │ ├── Date.utils.test.js │ │ │ │ │ │ ├── DateTime.component.jsx │ │ │ │ │ │ ├── DateTime.component.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── Time.component.jsx │ │ │ │ │ │ ├── Time.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Date.component.test.js.snap │ │ │ │ │ │ │ ├── Date.component.test.jsx.snap │ │ │ │ │ │ │ ├── DateTime.component.test.js.snap │ │ │ │ │ │ │ ├── DateTime.component.test.jsx.snap │ │ │ │ │ │ │ ├── Time.component.test.js.snap │ │ │ │ │ │ │ └── Time.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Enumeration/ │ │ │ │ │ │ ├── EnumerationWidget.jsx │ │ │ │ │ │ ├── EnumerationWidget.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ ├── utils.js │ │ │ │ │ │ └── utils.test.js │ │ │ │ │ ├── FieldTemplate/ │ │ │ │ │ │ ├── FieldTemplate.component.jsx │ │ │ │ │ │ ├── FieldTemplate.component.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── FieldTemplate.component.test.js.snap │ │ │ │ │ │ │ └── FieldTemplate.component.test.jsx.snap │ │ │ │ │ │ ├── displayMode/ │ │ │ │ │ │ │ ├── TextMode.component.jsx │ │ │ │ │ │ │ ├── TextMode.component.test.jsx │ │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ │ ├── TextMode.component.test.js.snap │ │ │ │ │ │ │ └── TextMode.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── File/ │ │ │ │ │ │ ├── File.component.jsx │ │ │ │ │ │ ├── File.component.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── File.component.test.js.snap │ │ │ │ │ │ │ └── File.component.test.jsx.snap │ │ │ │ │ │ ├── displayMode/ │ │ │ │ │ │ │ ├── TextMode.component.jsx │ │ │ │ │ │ │ ├── TextMode.component.test.jsx │ │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ │ ├── TextMode.component.test.js.snap │ │ │ │ │ │ │ └── TextMode.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── KeyValue/ │ │ │ │ │ │ ├── KeyValue.component.jsx │ │ │ │ │ │ ├── KeyValue.component.test.jsx │ │ │ │ │ │ ├── KeyValue.module.css │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── KeyValue.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ListView/ │ │ │ │ │ │ ├── ListView.component.jsx │ │ │ │ │ │ ├── ListView.component.test.jsx │ │ │ │ │ │ ├── ListView.utils.js │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── MultiSelectTag/ │ │ │ │ │ │ ├── MultiSelectTag.component.jsx │ │ │ │ │ │ ├── MultiSelectTag.component.test.jsx │ │ │ │ │ │ ├── MultiSelectTag.module.css │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── displayMode/ │ │ │ │ │ │ │ ├── TextMode.component.jsx │ │ │ │ │ │ │ └── TextMode.module.css │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── NestedListView/ │ │ │ │ │ │ ├── NestedListView.component.jsx │ │ │ │ │ │ ├── NestedListView.module.css │ │ │ │ │ │ ├── NestedListView.test.jsx │ │ │ │ │ │ ├── NestedListView.utils.js │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── RadioOrSelect/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── RadioOrSelect.component.jsx │ │ │ │ │ │ ├── RadioOrSelect.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── RadioOrSelect.component.test.js.snap │ │ │ │ │ │ │ └── RadioOrSelect.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Radios/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── Radios.component.jsx │ │ │ │ │ │ ├── Radios.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Radios.component.test.js.snap │ │ │ │ │ │ │ └── Radios.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ResourcePicker/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── ResourcePicker.component.jsx │ │ │ │ │ │ ├── ResourcePicker.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ └── ResourcePicker.component.test.jsx.snap │ │ │ │ │ │ ├── constants.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Select/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── Select.component.jsx │ │ │ │ │ │ ├── Select.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Select.component.test.js.snap │ │ │ │ │ │ │ └── Select.component.test.jsx.snap │ │ │ │ │ │ ├── displayMode/ │ │ │ │ │ │ │ ├── TextMode.component.jsx │ │ │ │ │ │ │ ├── TextMode.component.test.jsx │ │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ │ ├── TextMode.component.test.js.snap │ │ │ │ │ │ │ └── TextMode.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Text/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── Text.component.jsx │ │ │ │ │ │ ├── Text.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Text.component.test.js.snap │ │ │ │ │ │ │ └── Text.component.test.jsx.snap │ │ │ │ │ │ ├── displayMode/ │ │ │ │ │ │ │ ├── TextMode.component.jsx │ │ │ │ │ │ │ ├── TextMode.component.test.jsx │ │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ │ ├── TextMode.component.test.js.snap │ │ │ │ │ │ │ └── TextMode.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── TextArea/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── TextArea.component.jsx │ │ │ │ │ │ ├── TextArea.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── TextArea.component.test.js.snap │ │ │ │ │ │ │ └── TextArea.component.test.jsx.snap │ │ │ │ │ │ ├── displayMode/ │ │ │ │ │ │ │ ├── TextMode.component.jsx │ │ │ │ │ │ │ ├── TextMode.component.test.jsx │ │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ │ ├── TextMode.component.test.js.snap │ │ │ │ │ │ │ └── TextMode.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── TimezoneList/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── TimezoneList.component.jsx │ │ │ │ │ │ ├── TimezoneList.component.test.jsx │ │ │ │ │ │ ├── TimezoneList.utils.js │ │ │ │ │ │ ├── TimezoneList.utils.test.js │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── TimezoneList.component.test.js.snap │ │ │ │ │ │ │ └── TimezoneList.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Toggle/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── Toggle.component.jsx │ │ │ │ │ │ ├── Toggle.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Toggle.component.test.js.snap │ │ │ │ │ │ │ └── Toggle.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── fieldsets/ │ │ │ │ │ ├── Array/ │ │ │ │ │ │ ├── Array.component.jsx │ │ │ │ │ │ ├── Array.component.test.jsx │ │ │ │ │ │ ├── ArrayItem.component.jsx │ │ │ │ │ │ ├── ArrayItem.component.test.jsx │ │ │ │ │ │ ├── ArrayItem.module.css │ │ │ │ │ │ ├── DefaultArrayTemplate.component.jsx │ │ │ │ │ │ ├── DefaultArrayTemplate.component.test.jsx │ │ │ │ │ │ ├── DefaultArrayTemplate.module.css │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Array.component.test.js.snap │ │ │ │ │ │ │ ├── Array.component.test.jsx.snap │ │ │ │ │ │ │ ├── ArrayItem.component.test.js.snap │ │ │ │ │ │ │ ├── ArrayItem.component.test.jsx.snap │ │ │ │ │ │ │ ├── DefaultArrayTemplate.component.test.js.snap │ │ │ │ │ │ │ └── DefaultArrayTemplate.component.test.jsx.snap │ │ │ │ │ │ ├── displayMode/ │ │ │ │ │ │ │ ├── TextModeArrayTemplate.component.jsx │ │ │ │ │ │ │ ├── TextModeArrayTemplate.component.test.jsx │ │ │ │ │ │ │ ├── TextModeArrayTemplate.module.css │ │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ │ ├── TextModeArrayTemplate.component.test.js.snap │ │ │ │ │ │ │ └── TextModeArrayTemplate.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── CollapsibleFieldset/ │ │ │ │ │ │ ├── CollapsibleFieldset.component.jsx │ │ │ │ │ │ ├── CollapsibleFieldset.component.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── CollapsibleFieldset.component.test.js.snap │ │ │ │ │ │ │ └── CollapsibleFieldset.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Columns/ │ │ │ │ │ │ ├── Columns.component.jsx │ │ │ │ │ │ ├── Columns.component.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Columns.component.test.js.snap │ │ │ │ │ │ │ └── Columns.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Fieldset/ │ │ │ │ │ │ ├── Fieldset.component.jsx │ │ │ │ │ │ ├── Fieldset.component.test.jsx │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Fieldset.component.test.js.snap │ │ │ │ │ │ │ └── Fieldset.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Tabs/ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── Tabs.component.jsx │ │ │ │ │ │ ├── Tabs.component.test.jsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Tabs.component.test.js.snap │ │ │ │ │ │ │ └── Tabs.component.test.jsx.snap │ │ │ │ │ │ └── index.js │ │ │ │ │ └── index.js │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ ├── lang.js │ │ │ │ ├── merge.js │ │ │ │ ├── merge.test.js │ │ │ │ ├── trigger/ │ │ │ │ │ └── index.js │ │ │ │ └── utils/ │ │ │ │ ├── array.js │ │ │ │ ├── array.test.js │ │ │ │ ├── condition.js │ │ │ │ ├── condition.test.js │ │ │ │ ├── errors.js │ │ │ │ ├── errors.test.js │ │ │ │ ├── index.js │ │ │ │ ├── labels.jsx │ │ │ │ ├── labels.module.css │ │ │ │ ├── propTypes.js │ │ │ │ ├── properties.js │ │ │ │ ├── properties.test.js │ │ │ │ ├── templates.js │ │ │ │ ├── triggers.js │ │ │ │ ├── validation.js │ │ │ │ ├── validation.test.js │ │ │ │ └── widgets.js │ │ │ ├── constants.ts │ │ │ ├── declaration.d.ts │ │ │ ├── index.ts │ │ │ ├── rhf/ │ │ │ │ ├── fields/ │ │ │ │ │ ├── Input/ │ │ │ │ │ │ ├── Input.stories.jsx │ │ │ │ │ │ ├── Input.test.jsx │ │ │ │ │ │ ├── RHFInput.component.jsx │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── Select
Showing preview only (388K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4127 symbols across 1248 files)
FILE: .github/actions/lint-merge-report/merge-lint-reports.mjs
function getPackageDirs (line 16) | function getPackageDirs() {
function getPackages (line 25) | function getPackages(packageDirs) {
function transform (line 34) | function transform(item) {
function runGitDiff (line 56) | function runGitDiff(base, head) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap.js
function transitionEnd (line 34) | function transitionEnd() {
function removeElement (line 127) | function removeElement() {
function Plugin (line 143) | function Plugin(option) {
function Plugin (line 252) | function Plugin(option) {
function Plugin (line 478) | function Plugin(option) {
function getTargetFromTrigger (line 705) | function getTargetFromTrigger($trigger) {
function Plugin (line 717) | function Plugin(option) {
function getParent (line 784) | function getParent($this) {
function clearMenus (line 797) | function clearMenus(e) {
function Plugin (line 890) | function Plugin(option) {
function Plugin (line 1234) | function Plugin(option, _relatedTarget) {
function allowedAttribute (line 1361) | function allowedAttribute(attr, allowedAttributeList) {
function sanitizeHtml (line 1386) | function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
function complete (line 1757) | function complete() {
function Plugin (line 1936) | function Plugin(option) {
function Plugin (line 2060) | function Plugin(option) {
function ScrollSpy (line 2103) | function ScrollSpy(element, options) {
function Plugin (line 2223) | function Plugin(option) {
function next (line 2332) | function next() {
function Plugin (line 2378) | function Plugin(option) {
function Plugin (line 2537) | function Plugin(option) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/affix.js
function Plugin (line 121) | function Plugin(option) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/alert.js
function removeElement (line 49) | function removeElement() {
function Plugin (line 65) | function Plugin(option) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/button.js
function Plugin (line 78) | function Plugin(option) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/carousel.js
function Plugin (line 178) | function Plugin(option) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/collapse.js
function getTargetFromTrigger (line 158) | function getTargetFromTrigger($trigger) {
function Plugin (line 170) | function Plugin(option) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js
function getParent (line 24) | function getParent($this) {
function clearMenus (line 37) | function clearMenus(e) {
function Plugin (line 130) | function Plugin(option) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/modal.js
function Plugin (line 308) | function Plugin(option, _relatedTarget) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/popover.js
function Plugin (line 97) | function Plugin(option) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js
function ScrollSpy (line 16) | function ScrollSpy(element, options) {
function Plugin (line 136) | function Plugin(option) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/tab.js
function next (line 72) | function next() {
function Plugin (line 118) | function Plugin(option) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js
function allowedAttribute (line 76) | function allowedAttribute(attr, allowedAttributeList) {
function sanitizeHtml (line 101) | function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
function complete (line 472) | function complete() {
function Plugin (line 651) | function Plugin(option) {
FILE: fork/bootstrap-sass/assets/javascripts/bootstrap/transition.js
function transitionEnd (line 16) | function transitionEnd() {
FILE: fork/dynamic-cdn-webpack-plugin/__mocks__/fs.js
function __setMockFiles (line 9) | function __setMockFiles(newMockFiles) {
function readdirSync (line 33) | function readdirSync(directoryPath) {
function existsSync (line 37) | function existsSync(directoryPath) {
FILE: fork/dynamic-cdn-webpack-plugin/src/find.js
function findPackage (line 6) | function findPackage(info) {
function findPackagesFromScopeFolder (line 26) | function findPackagesFromScopeFolder(scope, name, scopeFolderPath) {
function findPackagesFromNonScopeFolder (line 50) | function findPackagesFromNonScopeFolder(scope, name, nonScopeFolderPath) {
function findPackages (line 78) | function findPackages(scope, name, buff = []) {
FILE: fork/dynamic-cdn-webpack-plugin/src/find.test.js
function setMockFiles (line 13) | function setMockFiles(newMockFiles) {
constant MOCK_FILE_INFO (line 35) | const MOCK_FILE_INFO = {
FILE: fork/dynamic-cdn-webpack-plugin/src/get-resolver.js
function getResolver (line 3) | function getResolver(resolver = '@talend/module-to-cdn') {
FILE: fork/dynamic-cdn-webpack-plugin/src/index.js
function addUnpkgURL (line 32) | function addUnpkgURL(info) {
constant MODULE_WITHOUT_MAIN (line 37) | const MODULE_WITHOUT_MAIN = [
function getDeps (line 58) | function getDeps(cdnConfig) {
function getPackageRootPath (line 72) | function getPackageRootPath(cdnConfig, cwd) {
function computeSRI (line 90) | async function computeSRI(filePath) {
function moduleJSToMetadata (line 100) | async function moduleJSToMetadata(data, { name, version, path: depPath, ...
function moduleCSSToMetadata (line 115) | async function moduleCSSToMetadata(data, { name, version, stylePath, sty...
class DynamicCdnWebpackPlugin (line 127) | class DynamicCdnWebpackPlugin {
method constructor (line 128) | constructor({
method apply (line 180) | apply(compiler) {
method execute (line 199) | execute(compiler, { env }) {
method addDependencies (line 229) | addDependencies(contextPath, manifest, { env, requester }) {
method addModule (line 284) | async addModule(contextPath, modulePath, { env, isOptional = false }) {
method applyWebpackCore (line 423) | applyWebpackCore(compiler) {
method applyHtmlWebpackPlugin (line 446) | applyHtmlWebpackPlugin(compiler) {
FILE: fork/dynamic-cdn-webpack-plugin/src/resolve-pkg.js
function resolve (line 10) | function resolve(moduleId, options) {
FILE: fork/dynamic-cdn-webpack-plugin/test/core.test.js
function getChunkFiles (line 10) | function getChunkFiles(stats) {
FILE: fork/json-schema-form-core/src/merge.js
function merge (line 6) | function merge(
FILE: fork/json-schema-form-core/src/resolve.js
function jsonref (line 3) | function jsonref(schema, callBack) {
FILE: fork/json-schema-form-core/src/schema-defaults.ts
function defaultFormDefinition (line 29) | function defaultFormDefinition(schemaTypes, name, schema, options) {
function stdFormObj (line 55) | function stdFormObj(name, schema, options) {
function text (line 109) | function text(name, schema, options) {
function number (line 121) | function number(name, schema, options) {
function integer (line 131) | function integer(name, schema, options) {
function checkbox (line 141) | function checkbox(name, schema, options) {
function select (line 151) | function select(name, schema, options) {
function checkboxes (line 164) | function checkboxes(name, schema, options) {
function fieldset (line 177) | function fieldset(name, schema, options, defaultFormDef) {
function array (line 211) | function array(name, schema, options, defaultFormDef) {
function createDefaults (line 243) | function createDefaults() {
function defaultForm (line 259) | function defaultForm(
FILE: fork/json-schema-form-core/src/select.js
function select (line 21) | function select(projection, obj, valueToSet) {
FILE: fork/json-schema-form-core/src/sf-path.ts
function name (line 15) | function name(key: Array<string>, separator?: string, formName = '', omi...
FILE: fork/json-schema-form-core/src/traverse.ts
function traverseSchema (line 5) | function traverseSchema(schema, fn, path, ignoreArrays) {
function traverseForm (line 35) | function traverseForm(form, fn) {
FILE: fork/json-schema-form-core/src/validate.js
function validateTypeSpecificInput (line 4) | function validateTypeSpecificInput(inputType = '', event = {}) {
function validate (line 28) | function validate(form, value, event) {
FILE: fork/module-to-cdn/cache.js
constant CACHE_BASE_PATH (line 12) | const CACHE_BASE_PATH = `${process.cwd()}/.test-cache`;
constant CACHE_NPM_PATH (line 14) | const CACHE_NPM_PATH = `${CACHE_BASE_PATH}/.npm-cache-info.json`;
constant CACHE_NPM (line 15) | const CACHE_NPM = {
constant AXIOS_CACHE_PATH (line 29) | const AXIOS_CACHE_PATH = `${CACHE_BASE_PATH}/axios`;
function httpGet (line 31) | function httpGet(url, {retry} = {retry: 0}) {
function ensureCacheFolderExists (line 57) | function ensureCacheFolderExists() {
function getInfo (line 69) | function getInfo(url) {
function getPathFromURL (line 90) | function getPathFromURL(url) {
function cachedGet (line 95) | async function cachedGet(url) {
function isInCache (line 118) | function isInCache(url) {
function getModuleInfo (line 122) | function getModuleInfo(moduleName) {
function getAllVersions (line 138) | function getAllVersions(moduleName) {
function getRangeEdgeVersions (line 142) | function getRangeEdgeVersions(allVersions) {
FILE: fork/module-to-cdn/index.js
function add (line 24) | function add(config) {
function getModuleName (line 34) | function getModuleName(importPath) {
function main (line 48) | function main(importPath, version, options = {}) {
function getAllModules (line 122) | function getAllModules() {
FILE: fork/module-to-cdn/modules.test.js
function isValidVarName (line 26) | function isValidVarName(name) {
function testCdnConfig (line 51) | async function testCdnConfig(t, cdnConfig, importPath, version) {
function testNextModule (line 88) | async function testNextModule(t, importPath, env) {
function limit (line 107) | function limit(m) {
FILE: fork/module-to-cdn/url.js
function unpkg (line 1) | function unpkg(info) {
function getURL (line 12) | function getURL(info) {
function setURL (line 20) | function setURL(fn) {
FILE: fork/module-to-cdn/version.js
function parseToSemverIfPossible (line 6) | function parseToSemverIfPossible(version) {
FILE: fork/react-bootstrap/src/Accordion.jsx
class Accordion (line 5) | class Accordion extends React.Component {
method render (line 6) | render() {
FILE: fork/react-bootstrap/src/Alert.jsx
class Alert (line 18) | class Alert extends React.Component {
method render (line 19) | render() {
FILE: fork/react-bootstrap/src/Badge.jsx
class Badge (line 17) | class Badge extends React.Component {
method hasContent (line 18) | hasContent(children) {
method render (line 34) | render() {
FILE: fork/react-bootstrap/src/Breadcrumb.jsx
class Breadcrumb (line 7) | class Breadcrumb extends React.Component {
method render (line 8) | render() {
FILE: fork/react-bootstrap/src/BreadcrumbItem.jsx
class BreadcrumbItem (line 30) | class BreadcrumbItem extends React.Component {
method render (line 31) | render() {
FILE: fork/react-bootstrap/src/Button.jsx
class Button (line 38) | class Button extends React.Component {
method renderAnchor (line 39) | renderAnchor(elementProps, className) {
method renderButton (line 48) | renderButton({ componentClass, ...elementProps }, className) {
method render (line 56) | render() {
FILE: fork/react-bootstrap/src/ButtonGroup.jsx
class ButtonGroup (line 30) | class ButtonGroup extends React.Component {
method render (line 31) | render() {
FILE: fork/react-bootstrap/src/ButtonToolbar.jsx
class ButtonToolbar (line 6) | class ButtonToolbar extends React.Component {
method render (line 7) | render() {
FILE: fork/react-bootstrap/src/Carousel.jsx
class Carousel (line 72) | class Carousel extends React.Component {
method constructor (line 73) | constructor(props, context) {
method componentDidMount (line 93) | componentDidMount() {
method componentDidUpdate (line 97) | componentDidUpdate(prevProps) {
method componentWillUnmount (line 122) | componentWillUnmount() {
method getActiveIndex (line 127) | getActiveIndex() {
method getDirection (line 132) | getDirection(prevIndex, index) {
method handleItemAnimateOutEnd (line 140) | handleItemAnimateOutEnd() {
method handleMouseOut (line 156) | handleMouseOut() {
method handleMouseOver (line 162) | handleMouseOver() {
method handleNext (line 168) | handleNext(e) {
method handlePrev (line 182) | handlePrev(e) {
method pause (line 195) | pause() {
method play (line 201) | play() {
method select (line 206) | select(index, e, direction) {
method waitForNext (line 255) | waitForNext() {
method renderControls (line 263) | renderControls(properties) {
method renderIndicators (line 294) | renderIndicators(children, activeIndex, bsProps) {
method render (line 314) | render() {
FILE: fork/react-bootstrap/src/CarouselCaption.jsx
class CarouselCaption (line 15) | class CarouselCaption extends React.Component {
method render (line 16) | render() {
FILE: fork/react-bootstrap/src/CarouselItem.jsx
class CarouselItem (line 22) | class CarouselItem extends React.Component {
method constructor (line 23) | constructor(props, context) {
method componentDidUpdate (line 35) | componentDidUpdate(prevProps) {
method componentDidUpdate (line 42) | componentDidUpdate(prevProps) {
method componentWillUnmount (line 55) | componentWillUnmount() {
method handleAnimateOutEnd (line 59) | handleAnimateOutEnd() {
method startAnimation (line 69) | startAnimation() {
method render (line 79) | render() {
FILE: fork/react-bootstrap/src/Checkbox.jsx
class Checkbox (line 34) | class Checkbox extends React.Component {
method render (line 35) | render() {
FILE: fork/react-bootstrap/src/Clearfix.jsx
class Clearfix (line 51) | class Clearfix extends React.Component {
method render (line 52) | render() {
FILE: fork/react-bootstrap/src/CloseButton.jsx
class CloseButton (line 13) | class CloseButton extends React.Component {
method render (line 14) | render() {
FILE: fork/react-bootstrap/src/Col.jsx
class Col (line 178) | class Col extends React.Component {
method render (line 179) | render() {
FILE: fork/react-bootstrap/src/Collapse.jsx
constant MARGINS (line 11) | const MARGINS = {
function triggerBrowserReflow (line 18) | function triggerBrowserReflow(node) {
function getDimensionValue (line 23) | function getDimensionValue(dimension, elem) {
class Collapse (line 128) | class Collapse extends React.Component {
method getDimension (line 129) | getDimension() {
method _getScrollDimensionValue (line 136) | _getScrollDimensionValue(elem, dimension) {
method render (line 165) | render() {
FILE: fork/react-bootstrap/src/ControlLabel.jsx
class ControlLabel (line 24) | class ControlLabel extends React.Component {
method render (line 25) | render() {
FILE: fork/react-bootstrap/src/Dropdown.jsx
constant TOGGLE_ROLE (line 22) | const TOGGLE_ROLE = DropdownToggle.defaultProps.bsRole;
constant MENU_ROLE (line 23) | const MENU_ROLE = DropdownMenu.defaultProps.bsRole;
class Dropdown (line 114) | class Dropdown extends React.Component {
method constructor (line 115) | constructor(props, context) {
method componentDidMount (line 126) | componentDidMount() {
method componentDidUpdate (line 130) | componentDidUpdate(prevProps) {
method focus (line 149) | focus() {
method focusNextOnOpen (line 157) | focusNextOnOpen() {
method handleClick (line 169) | handleClick(event) {
method handleClose (line 177) | handleClose(event, eventDetails) {
method handleKeyDown (line 185) | handleKeyDown(event) {
method toggleOpen (line 209) | toggleOpen(event, eventDetails) {
method renderMenu (line 221) | renderMenu(child, { id, onSelect, rootCloseEvent, ...props }) {
method renderToggle (line 250) | renderToggle(child, props) {
method render (line 275) | render() {
FILE: fork/react-bootstrap/src/Dropdown.test.jsx
function CustomMenu (line 14) | function CustomMenu({ children, ...props }) {
function OpenProp (line 314) | function OpenProp() {
function RefDropdown (line 443) | function RefDropdown() {
function RefDropdown (line 482) | function RefDropdown() {
FILE: fork/react-bootstrap/src/DropdownButton.jsx
class DropdownButton (line 23) | class DropdownButton extends React.Component {
method render (line 24) | render() {
FILE: fork/react-bootstrap/src/DropdownMenu.jsx
class DropdownMenu (line 26) | class DropdownMenu extends React.Component {
method constructor (line 27) | constructor(props) {
method getFocusableMenuItems (line 34) | getFocusableMenuItems() {
method getItemsAndActiveIndex (line 43) | getItemsAndActiveIndex() {
method focusNext (line 50) | focusNext() {
method focusPrevious (line 60) | focusPrevious() {
method handleKeyDown (line 70) | handleKeyDown(event) {
method handleRootClose (line 91) | handleRootClose(event) {
method render (line 95) | render() {
FILE: fork/react-bootstrap/src/DropdownToggle.jsx
class DropdownToggle (line 22) | class DropdownToggle extends React.Component {
method render (line 23) | render() {
FILE: fork/react-bootstrap/src/Fade.jsx
class Fade (line 74) | class Fade extends React.Component {
method render (line 75) | render() {
FILE: fork/react-bootstrap/src/Fade.test.jsx
method render (line 12) | render() {
function onEntering (line 41) | function onEntering() {
function onExiting (line 54) | function onExiting() {
FILE: fork/react-bootstrap/src/Form.jsx
class Form (line 20) | class Form extends React.Component {
method render (line 21) | render() {
FILE: fork/react-bootstrap/src/FormControl.jsx
class FormControl (line 40) | class FormControl extends React.Component {
method render (line 41) | render() {
FILE: fork/react-bootstrap/src/FormControlFeedback.jsx
class FormControlFeedback (line 16) | class FormControlFeedback extends React.Component {
method getGlyph (line 17) | getGlyph(validationState) {
method renderDefaultFeedback (line 30) | renderDefaultFeedback(formGroup, className, classes, elementProps) {
method render (line 39) | render() {
FILE: fork/react-bootstrap/src/FormControlStatic.jsx
class FormControlStatic (line 15) | class FormControlStatic extends React.Component {
method render (line 16) | render() {
FILE: fork/react-bootstrap/src/FormControlStatic.test.jsx
function MyComponent (line 19) | function MyComponent({ children, ...props }) {
FILE: fork/react-bootstrap/src/FormGroup.jsx
class FormGroup (line 21) | class FormGroup extends React.Component {
method getChildContext (line 22) | getChildContext() {
method hasFeedback (line 33) | hasFeedback(children) {
method render (line 42) | render() {
FILE: fork/react-bootstrap/src/Glyphicon.jsx
class Glyphicon (line 14) | class Glyphicon extends React.Component {
method render (line 15) | render() {
FILE: fork/react-bootstrap/src/Grid.jsx
class Grid (line 26) | class Grid extends React.Component {
method render (line 27) | render() {
FILE: fork/react-bootstrap/src/HelpBlock.jsx
class HelpBlock (line 6) | class HelpBlock extends React.Component {
method render (line 7) | render() {
FILE: fork/react-bootstrap/src/Image.jsx
class Image (line 36) | class Image extends React.Component {
method render (line 37) | render() {
FILE: fork/react-bootstrap/src/InputGroup.jsx
class InputGroup (line 9) | class InputGroup extends React.Component {
method render (line 10) | render() {
FILE: fork/react-bootstrap/src/InputGroupAddon.jsx
class InputGroupAddon (line 6) | class InputGroupAddon extends React.Component {
method render (line 7) | render() {
FILE: fork/react-bootstrap/src/InputGroupButton.jsx
class InputGroupButton (line 6) | class InputGroupButton extends React.Component {
method render (line 7) | render() {
FILE: fork/react-bootstrap/src/Jumbotron.jsx
class Jumbotron (line 15) | class Jumbotron extends React.Component {
method render (line 16) | render() {
FILE: fork/react-bootstrap/src/Label.jsx
class Label (line 7) | class Label extends React.Component {
method hasContent (line 8) | hasContent(children) {
method render (line 24) | render() {
FILE: fork/react-bootstrap/src/ListGroup.jsx
function getDefaultComponent (line 19) | function getDefaultComponent(children) {
class ListGroup (line 37) | class ListGroup extends React.Component {
method render (line 38) | render() {
FILE: fork/react-bootstrap/src/ListGroup.test.jsx
class CustomComponent (line 146) | class CustomComponent extends React.Component {
method render (line 147) | render() {
method render (line 168) | render() {
class CustomComponent (line 167) | class CustomComponent extends React.Component {
method render (line 147) | render() {
method render (line 168) | render() {
FILE: fork/react-bootstrap/src/ListGroupItem.jsx
class ListGroupItem (line 22) | class ListGroupItem extends React.Component {
method renderHeader (line 23) | renderHeader(header, headingClassName) {
method render (line 33) | render() {
FILE: fork/react-bootstrap/src/Media.jsx
class Media (line 21) | class Media extends React.Component {
method render (line 22) | render() {
FILE: fork/react-bootstrap/src/MediaBody.jsx
class MediaBody (line 21) | class MediaBody extends React.Component {
method render (line 22) | render() {
FILE: fork/react-bootstrap/src/MediaHeading.jsx
class MediaHeading (line 15) | class MediaHeading extends React.Component {
method render (line 16) | render() {
FILE: fork/react-bootstrap/src/MediaLeft.jsx
class MediaLeft (line 14) | class MediaLeft extends React.Component {
method render (line 15) | render() {
FILE: fork/react-bootstrap/src/MediaList.jsx
class MediaList (line 6) | class MediaList extends React.Component {
method render (line 7) | render() {
FILE: fork/react-bootstrap/src/MediaListItem.jsx
class MediaListItem (line 6) | class MediaListItem extends React.Component {
method render (line 7) | render() {
FILE: fork/react-bootstrap/src/MediaRight.jsx
class MediaRight (line 14) | class MediaRight extends React.Component {
method render (line 15) | render() {
FILE: fork/react-bootstrap/src/MenuItem.jsx
class MenuItem (line 65) | class MenuItem extends React.Component {
method constructor (line 66) | constructor(props, context) {
method handleClick (line 72) | handleClick(event) {
method render (line 88) | render() {
FILE: fork/react-bootstrap/src/Modal.jsx
function DialogTransition (line 138) | function DialogTransition(props) {
function BackdropTransition (line 142) | function BackdropTransition(props) {
class Modal (line 148) | class Modal extends React.Component {
method constructor (line 149) | constructor(props, context) {
method getChildContext (line 163) | getChildContext() {
method componentWillUnmount (line 171) | componentWillUnmount() {
method setModalRef (line 176) | setModalRef(ref) {
method handleDialogClick (line 180) | handleDialogClick(e) {
method handleEntering (line 189) | handleEntering() {
method handleExited (line 195) | handleExited() {
method handleWindowResize (line 200) | handleWindowResize() {
method updateStyle (line 204) | updateStyle() {
method render (line 238) | render() {
FILE: fork/react-bootstrap/src/Modal.test.jsx
function CustomDialog (line 178) | function CustomDialog() {
class Component (line 234) | class Component extends React.Component {
method constructor (line 235) | constructor(props, context) {
method render (line 243) | render() {
FILE: fork/react-bootstrap/src/ModalBody.jsx
class ModalBody (line 15) | class ModalBody extends React.Component {
method render (line 16) | render() {
FILE: fork/react-bootstrap/src/ModalDialog.jsx
class ModalDialog (line 15) | class ModalDialog extends React.Component {
method render (line 16) | render() {
FILE: fork/react-bootstrap/src/ModalFooter.jsx
class ModalFooter (line 15) | class ModalFooter extends React.Component {
method render (line 16) | render() {
FILE: fork/react-bootstrap/src/ModalHeader.jsx
class ModalHeader (line 43) | class ModalHeader extends React.Component {
method render (line 44) | render() {
FILE: fork/react-bootstrap/src/ModalTitle.jsx
class ModalTitle (line 15) | class ModalTitle extends React.Component {
method render (line 16) | render() {
FILE: fork/react-bootstrap/src/Nav.jsx
class Nav (line 113) | class Nav extends React.Component {
method componentDidUpdate (line 114) | componentDidUpdate() {
method getActiveProps (line 141) | getActiveProps() {
method getNextActiveChild (line 158) | getNextActiveChild(offset) {
method getTabProps (line 189) | getTabProps(child, tabContainer, navRole, active, onSelect) {
method handleTabKeyDown (line 227) | handleTabKeyDown(onSelect, event) {
method isActive (line 257) | isActive({ props }, activeKey, activeHref) {
method render (line 269) | render() {
FILE: fork/react-bootstrap/src/NavDropdown.jsx
class NavDropdown (line 26) | class NavDropdown extends React.Component {
method isActive (line 27) | isActive({ props }, activeKey, activeHref) {
method render (line 47) | render() {
FILE: fork/react-bootstrap/src/NavDropdown.test.jsx
class OpenProp (line 49) | class OpenProp extends React.Component {
method constructor (line 50) | constructor(props) {
method render (line 58) | render() {
class Container (line 109) | class Container extends React.Component {
method render (line 110) | render() {
FILE: fork/react-bootstrap/src/NavItem.jsx
class NavItem (line 23) | class NavItem extends React.Component {
method constructor (line 24) | constructor(props, context) {
method handleClick (line 30) | handleClick(e) {
method render (line 41) | render() {
FILE: fork/react-bootstrap/src/NavItem.test.jsx
function handleSelect (line 54) | function handleSelect(key) {
function handleSelect (line 67) | function handleSelect() {
function handleSelect (line 89) | function handleSelect(key, event) {
FILE: fork/react-bootstrap/src/Navbar.jsx
class Navbar (line 121) | class Navbar extends React.Component {
method constructor (line 122) | constructor(props, context) {
method getChildContext (line 129) | getChildContext() {
method handleCollapse (line 142) | handleCollapse() {
method handleToggle (line 150) | handleToggle() {
method render (line 156) | render() {
function createSimpleWrapper (line 210) | function createSimpleWrapper(tag, suffix, displayName) {
FILE: fork/react-bootstrap/src/NavbarBrand.jsx
class NavbarBrand (line 13) | class NavbarBrand extends React.Component {
method render (line 14) | render() {
FILE: fork/react-bootstrap/src/NavbarCollapse.jsx
class NavbarCollapse (line 14) | class NavbarCollapse extends React.Component {
method render (line 15) | render() {
FILE: fork/react-bootstrap/src/NavbarHeader.jsx
class NavbarHeader (line 13) | class NavbarHeader extends React.Component {
method render (line 14) | render() {
FILE: fork/react-bootstrap/src/NavbarToggle.jsx
class NavbarToggle (line 24) | class NavbarToggle extends React.Component {
method render (line 25) | render() {
FILE: fork/react-bootstrap/src/Overlay.jsx
class Overlay (line 74) | class Overlay extends React.Component {
method render (line 75) | render() {
FILE: fork/react-bootstrap/src/OverlayTrigger.jsx
function isOneOf (line 18) | function isOneOf(one, of) {
class OverlayTrigger (line 101) | class OverlayTrigger extends React.Component {
method constructor (line 102) | constructor(props, context) {
method componentDidMount (line 120) | componentDidMount() {
method componentDidUpdate (line 125) | componentDidUpdate() {
method componentWillUnmount (line 129) | componentWillUnmount() {
method handleDelayedHide (line 137) | handleDelayedHide() {
method handleDelayedShow (line 161) | handleDelayedShow() {
method handleHide (line 185) | handleHide() {
method handleMouseOverOut (line 193) | handleMouseOverOut(handler, e, relatedNative) {
method handleToggle (line 202) | handleToggle() {
method hide (line 210) | hide() {
method makeOverlay (line 214) | makeOverlay(overlay, props) {
method show (line 222) | show() {
method renderOverlay (line 226) | renderOverlay() {
method render (line 230) | render() {
FILE: fork/react-bootstrap/src/OverlayTrigger.test.jsx
class ContextReader (line 154) | class ContextReader extends React.Component {
method render (line 155) | render() {
class ContextHolder (line 163) | class ContextHolder extends React.Component {
method getChildContext (line 164) | getChildContext() {
method render (line 168) | render() {
class ReplacedOverlay (line 292) | class ReplacedOverlay extends React.Component {
method constructor (line 293) | constructor(props) {
method handleClick (line 300) | handleClick() {
method render (line 304) | render() {
FILE: fork/react-bootstrap/src/PageHeader.jsx
class PageHeader (line 6) | class PageHeader extends React.Component {
method render (line 7) | render() {
FILE: fork/react-bootstrap/src/Pager.jsx
class Pager (line 14) | class Pager extends React.Component {
method render (line 15) | render() {
FILE: fork/react-bootstrap/src/Pager.test.jsx
function handleSelect (line 44) | function handleSelect(key, e) {
FILE: fork/react-bootstrap/src/PagerItem.jsx
class PagerItem (line 23) | class PagerItem extends React.Component {
method constructor (line 24) | constructor(props, context) {
method handleSelect (line 30) | handleSelect(e) {
method render (line 43) | render() {
FILE: fork/react-bootstrap/src/PagerItem.test.jsx
function handleSelect (line 45) | function handleSelect(key) {
function handleSelect (line 58) | function handleSelect() {
function handleSelect (line 81) | function handleSelect(key, e) {
FILE: fork/react-bootstrap/src/Pagination.jsx
class Pagination (line 7) | class Pagination extends React.Component {
method render (line 8) | render() {
FILE: fork/react-bootstrap/src/PaginationItem.jsx
function PaginationItem (line 23) | function PaginationItem({
function createButton (line 46) | function createButton(name, defaultValue, label = name) {
FILE: fork/react-bootstrap/src/Panel.jsx
class Panel (line 61) | class Panel extends React.Component {
method getChildContext (line 62) | getChildContext() {
method getExpanded (line 88) | getExpanded() {
method render (line 116) | render() {
FILE: fork/react-bootstrap/src/PanelBody.jsx
class PanelBody (line 32) | class PanelBody extends React.Component {
method render (line 33) | render() {
FILE: fork/react-bootstrap/src/PanelCollapse.jsx
class PanelCollapse (line 43) | class PanelCollapse extends React.Component {
method render (line 44) | render() {
FILE: fork/react-bootstrap/src/PanelFooter.jsx
class PanelFooter (line 12) | class PanelFooter extends React.Component {
method render (line 13) | render() {
FILE: fork/react-bootstrap/src/PanelGroup.jsx
class PanelGroup (line 65) | class PanelGroup extends React.Component {
method getChildContext (line 66) | getChildContext() {
method render (line 95) | render() {
FILE: fork/react-bootstrap/src/PanelHeading.jsx
class PanelHeading (line 23) | class PanelHeading extends React.Component {
method render (line 24) | render() {
FILE: fork/react-bootstrap/src/PanelTitle.jsx
class PanelTitle (line 28) | class PanelTitle extends React.Component {
method render (line 29) | render() {
FILE: fork/react-bootstrap/src/PanelToggle.jsx
class PanelToggle (line 33) | class PanelToggle extends React.Component {
method constructor (line 34) | constructor(...args) {
method handleToggle (line 40) | handleToggle(event) {
method render (line 48) | render() {
FILE: fork/react-bootstrap/src/Popover.jsx
class Popover (line 49) | class Popover extends React.Component {
method render (line 50) | render() {
FILE: fork/react-bootstrap/src/ProgressBar.jsx
constant ROUND_PRECISION (line 15) | const ROUND_PRECISION = 1000;
function onlyProgressBar (line 20) | function onlyProgressBar(props, propName, componentName) {
function getPercentage (line 79) | function getPercentage(now, min, max) {
class ProgressBar (line 84) | class ProgressBar extends React.Component {
method renderProgressBar (line 85) | renderProgressBar({ min, now, max, label, srOnly, striped, active, cla...
method render (line 109) | render() {
FILE: fork/react-bootstrap/src/ProgressBar.test.jsx
function getProgressBarNode (line 9) | function getProgressBarNode(wrapper) {
function NotProgressBar (line 202) | function NotProgressBar() {
FILE: fork/react-bootstrap/src/Radio.jsx
class Radio (line 34) | class Radio extends React.Component {
method render (line 35) | render() {
FILE: fork/react-bootstrap/src/ResponsiveEmbed.jsx
class ResponsiveEmbed (line 30) | class ResponsiveEmbed extends React.Component {
method render (line 31) | render() {
FILE: fork/react-bootstrap/src/Row.jsx
class Row (line 15) | class Row extends React.Component {
method render (line 16) | render() {
FILE: fork/react-bootstrap/src/SafeAnchor.jsx
function isTrivialHref (line 24) | function isTrivialHref(href) {
class SafeAnchor (line 35) | class SafeAnchor extends React.Component {
method constructor (line 36) | constructor(props, context) {
method handleClick (line 43) | handleClick(event) {
method handleKeyDown (line 60) | handleKeyDown(event) {
method render (line 67) | render() {
FILE: fork/react-bootstrap/src/SplitButton.jsx
class SplitButton (line 33) | class SplitButton extends React.Component {
method render (line 34) | render() {
FILE: fork/react-bootstrap/src/SplitToggle.jsx
class SplitToggle (line 5) | class SplitToggle extends React.Component {
method render (line 6) | render() {
FILE: fork/react-bootstrap/src/Tab.jsx
class Tab (line 21) | class Tab extends React.Component {
method render (line 22) | render() {
FILE: fork/react-bootstrap/src/TabContainer.jsx
constant TAB (line 5) | const TAB = 'tab';
constant PANE (line 6) | const PANE = 'pane';
method id (line 15) | id(props, ...args) {
class TabContainer (line 70) | class TabContainer extends React.Component {
method getChildContext (line 71) | getChildContext() {
method render (line 86) | render() {
FILE: fork/react-bootstrap/src/TabContent.jsx
class TabContent (line 55) | class TabContent extends React.Component {
method constructor (line 56) | constructor(props, context) {
method getChildContext (line 71) | getChildContext() {
method componentDidUpdate (line 94) | componentDidUpdate(prevProps) {
method componentWillUnmount (line 100) | componentWillUnmount() {
method getContainerActiveKey (line 104) | getContainerActiveKey() {
method handlePaneEnter (line 109) | handlePaneEnter(child, childKey) {
method handlePaneExited (line 127) | handlePaneExited(child) {
method render (line 145) | render() {
FILE: fork/react-bootstrap/src/TabPane.jsx
class TabPane (line 104) | class TabPane extends React.Component {
method constructor (line 105) | constructor(props, context) {
method getChildContext (line 114) | getChildContext() {
method componentDidMount (line 120) | componentDidMount() {
method componentDidUpdate (line 127) | componentDidUpdate() {
method componentWillUnmount (line 139) | componentWillUnmount() {
method getAnimation (line 146) | getAnimation() {
method handleEnter (line 155) | handleEnter() {
method handleExited (line 164) | handleExited() {
method isActive (line 174) | isActive() {
method shouldBeIn (line 181) | shouldBeIn() {
method render (line 185) | render() {
FILE: fork/react-bootstrap/src/Table.jsx
class Table (line 23) | class Table extends React.Component {
method render (line 24) | render() {
FILE: fork/react-bootstrap/src/Tabs.jsx
function getDefaultActiveKey (line 70) | function getDefaultActiveKey(children) {
class Tabs (line 81) | class Tabs extends React.Component {
method renderTab (line 82) | renderTab(child) {
method render (line 95) | render() {
FILE: fork/react-bootstrap/src/Thumbnail.jsx
class Thumbnail (line 33) | class Thumbnail extends React.Component {
method render (line 34) | render() {
FILE: fork/react-bootstrap/src/ToggleButton.jsx
class ToggleButton (line 39) | class ToggleButton extends React.Component {
method render (line 40) | render() {
FILE: fork/react-bootstrap/src/ToggleButtonGroup.jsx
class ToggleButtonGroup (line 46) | class ToggleButtonGroup extends React.Component {
method getValues (line 47) | getValues() {
method handleToggle (line 52) | handleToggle(value) {
method render (line 71) | render() {
FILE: fork/react-bootstrap/src/Tooltip.jsx
class Tooltip (line 44) | class Tooltip extends React.Component {
method render (line 45) | render() {
FILE: fork/react-bootstrap/src/Well.jsx
class Well (line 7) | class Well extends React.Component {
method render (line 8) | render() {
FILE: fork/react-bootstrap/src/helpers.jsx
function shouldWarn (line 4) | function shouldWarn(about) {
function render (line 15) | function render(element, mountPoint) {
function getOne (line 26) | function getOne(collection) {
FILE: fork/react-bootstrap/src/utils/PropTypes.js
function generatedId (line 8) | function generatedId(name) {
function requiredRoles (line 26) | function requiredRoles(...roles) {
function exclusiveRoles (line 56) | function exclusiveRoles(...roles) {
FILE: fork/react-bootstrap/src/utils/StyleConfig.js
constant SIZE_MAP (line 7) | const SIZE_MAP = {
constant DEVICE_SIZES (line 18) | const DEVICE_SIZES = ['lg', 'md', 'sm', 'xs'];
FILE: fork/react-bootstrap/src/utils/ValidComponentChildren.js
function map (line 17) | function map(children, func, context) {
function forEach (line 39) | function forEach(children, func, context) {
function count (line 57) | function count(children) {
function filter (line 83) | function filter(children, func, context) {
function find (line 100) | function find(children, func, context) {
function every (line 120) | function every(children, func, context) {
function some (line 140) | function some(children, func, context) {
function toArray (line 160) | function toArray(children) {
FILE: fork/react-bootstrap/src/utils/bootstrapUtils.js
function curry (line 8) | function curry(fn) {
function prefix (line 18) | function prefix(props, variant) {
function getClassSet (line 114) | function getClassSet(props) {
function getBsProps (line 131) | function getBsProps(props) {
function isBsProp (line 140) | function isBsProp(propName) {
function splitBsProps (line 149) | function splitBsProps(props) {
function splitBsPropsAndOmit (line 160) | function splitBsPropsAndOmit(props, omittedPropNames) {
function addStyle (line 180) | function addStyle(Component, ...styleVariant) {
FILE: fork/react-bootstrap/src/utils/capitalize.js
function capitalize (line 1) | function capitalize(string) {
FILE: fork/react-bootstrap/src/utils/createChainedFunction.js
function createChainedFunction (line 10) | function createChainedFunction(...funcs) {
FILE: fork/react-bootstrap/src/utils/deprecationWarning.js
function deprecationWarning (line 5) | function deprecationWarning(oldname, newname, link) {
method componentDidMount (line 28) | componentDidMount(...methodArgs) {
function _resetWarned (line 40) | function _resetWarned() {
FILE: fork/react-bootstrap/src/utils/splitComponentProps.js
function splitComponentProps (line 1) | function splitComponentProps(props, Component) {
FILE: mocks/dateMock.js
function restore (line 4) | function restore() {
function mock (line 8) | function mock(now) {
FILE: packages/a11y/src/Gesture/constants.ts
constant FIRST (line 1) | const FIRST = 0;
constant LAST (line 2) | const LAST = Number.POSITIVE_INFINITY;
FILE: packages/a11y/src/Gesture/focus.ts
type WithFocus (line 4) | interface WithFocus {
function focusOn (line 8) | function focusOn(element?: WithFocus | null) {
function getAllItems (line 17) | function getAllItems(calendarRef: HTMLElement) {
function getDay (line 26) | function getDay(calendarRef: HTMLElement, offset: number): HTMLElement {
function focusWithinCurrentCalendar (line 36) | function focusWithinCurrentCalendar(calendarRef: HTMLElement, indexToFoc...
function focusOnDay (line 50) | function focusOnDay(
function focusOnCalendar (line 76) | function focusOnCalendar(containerRef: HTMLElement) {
FILE: packages/a11y/src/Gesture/preventScroll.ts
function preventScroll (line 3) | function preventScroll(evt: KeyboardEvent<HTMLElement>) {
FILE: packages/a11y/src/Gesture/propTypes.ts
type CalendarGestureProps (line 2) | type CalendarGestureProps = {
type WithCalendarGestureInjectedProps (line 8) | type WithCalendarGestureInjectedProps = CalendarGestureProps & {
FILE: packages/a11y/src/Gesture/withCalendarGesture.test.tsx
type DateCalendarState (line 21) | type DateCalendarState = {
class DayCalendarWithGesture (line 26) | class DayCalendarWithGesture extends React.Component<CalendarGestureProp...
method constructor (line 27) | constructor(props: CalendarGestureProps) {
method goToPreviousMonth (line 36) | goToPreviousMonth(callback?: () => void) {
method goToNextMonth (line 43) | goToNextMonth(callback?: () => void) {
method render (line 50) | render() {
FILE: packages/a11y/src/Gesture/withCalendarGesture.tsx
function switchMonth (line 16) | function switchMonth(
function withCalendarGesture (line 30) | function withCalendarGesture<P extends WithCalendarGestureInjectedProps>(
FILE: packages/a11y/src/Gesture/withDynamicListGesture.test.jsx
constant LIST_SIZE (line 9) | const LIST_SIZE = 5;
class ComponentWithGesture (line 11) | class ComponentWithGesture extends Component {
method constructor (line 12) | constructor(props) {
method setStart (line 22) | setStart(pace, callback) {
method renderListItems (line 26) | renderListItems(onKeyDown) {
method render (line 45) | render() {
function testFocus (line 58) | async function testFocus({ elementIndex, expectedActiveIndex, key }) {
FILE: packages/a11y/src/Gesture/withDynamicListGesture.tsx
function getAllItems (line 5) | function getAllItems(ref: HTMLElement): NodeListOf<HTMLButtonElement> {
function focusOnListItem (line 9) | function focusOnListItem(ref: HTMLElement, index: number) {
type FocusOnOption (line 14) | type FocusOnOption = {
function focusOnPreviousItem (line 19) | function focusOnPreviousItem(
function focusOnNextItem (line 33) | function focusOnNextItem(
function focusOnNextPage (line 47) | function focusOnNextPage(
function focusOnPreviousPage (line 55) | function focusOnPreviousPage(
type WithDynamicListGestureProps (line 63) | interface WithDynamicListGestureProps {
class WithDynamicListGesture (line 70) | class WithDynamicListGesture extends Component<WithDynamicListGesturePro...
method constructor (line 73) | constructor(props: WithDynamicListGestureProps) {
method onKeyDown (line 78) | onKeyDown(event: KeyboardEvent, options: FocusOnOption) {
method render (line 116) | render() {
FILE: packages/a11y/src/Gesture/withListGesture.test.jsx
function getComponentWithGesture (line 8) | function getComponentWithGesture(loop) {
function testFocus (line 19) | async function testFocus({ elementPosition, expectedActivePosition, key,...
FILE: packages/a11y/src/Gesture/withListGesture.tsx
function getAllItems (line 3) | function getAllItems(ref: HTMLElement): NodeList {
function getNextItem (line 11) | function getNextItem(ref: HTMLElement, loop: boolean) {
function getPreviousItem (line 38) | function getPreviousItem(ref: HTMLElement, loop: boolean) {
function onKeyDown (line 64) | function onKeyDown(event: KeyboardEvent, ref: HTMLElement, loop: boolean) {
function withListGesture (line 83) | function withListGesture<T>(WrappedComponent: React.ComponentType<T>, lo...
FILE: packages/a11y/src/Gesture/withMonthCalendarGesture.tsx
function withMonthCalendarGesture (line 13) | function withMonthCalendarGesture<P extends WithCalendarGestureInjectedP...
FILE: packages/a11y/src/Gesture/withTreeGesture.test.jsx
function testFocus (line 153) | async function testFocus({ elementPosition, expectedActivePosition, key ...
FILE: packages/a11y/src/Gesture/withTreeGesture.tsx
function getAllItems (line 6) | function getAllItems(ref: HTMLElement) {
function getFirstItem (line 14) | function getFirstItem(ref: HTMLElement): HTMLElement | null {
function getLastItem (line 22) | function getLastItem(ref: HTMLElement): HTMLElement | null {
function getParentItem (line 30) | function getParentItem(ref: HTMLElement): HTMLElement | null {
function getFirstChildItem (line 38) | function getFirstChildItem(ref: HTMLElement): HTMLElement | null {
function getNextItem (line 42) | function getNextItem(ref: HTMLElement): HTMLElement | null {
function getPreviousItem (line 67) | function getPreviousItem(ref: HTMLElement) {
type TreeGestureProps (line 91) | type TreeGestureProps = {
type WithTreeInjectedProps (line 97) | type WithTreeInjectedProps = TreeGestureProps & {
function withTreeGesture (line 101) | function withTreeGesture<T extends WithTreeInjectedProps>(
FILE: packages/a11y/src/__mocks__/day-calendar.tsx
type DayCalendarProps (line 13) | type DayCalendarProps = WithCalendarGestureInjectedProps & {
function DayCalendar (line 18) | function DayCalendar(props: DayCalendarProps) {
FILE: packages/a11y/src/__mocks__/list.tsx
type ListItemProps (line 5) | type ListItemProps = {
class ListItem (line 9) | class ListItem extends Component<ListItemProps> {
method render (line 12) | render() {
function List (line 34) | function List(props: ListItemProps) {
FILE: packages/a11y/src/__mocks__/month-calendar.tsx
function MonthCalendar (line 4) | function MonthCalendar(props: WithCalendarGestureInjectedProps) {
FILE: packages/a11y/src/__mocks__/tree.tsx
type TreeItemType (line 4) | type TreeItemType = {
type TreeItemProps (line 11) | type TreeItemProps = Pick<WithTreeInjectedProps, 'onKeyDown'> & {
class TreeItem (line 17) | class TreeItem extends Component<TreeItemProps> {
method render (line 20) | render() {
type TreeProps (line 44) | type TreeProps = Pick<WithTreeInjectedProps, 'onKeyDown'> & {
function Tree (line 49) | function Tree(props: TreeProps) {
FILE: packages/assets-api/src/index.ts
type Window (line 3) | interface Window {
type Asset (line 8) | interface Asset {
type Script (line 13) | interface Script {
type StyleAsset (line 19) | interface StyleAsset {
type TypedResponse (line 24) | interface TypedResponse<T = any> extends Response {
function getPackageVersion (line 40) | function getPackageVersion(name?: string, version?: string): string | un...
function getURL (line 58) | function getURL(path: string, name?: string, version?: string) {
constant TIMEOUT (line 66) | const TIMEOUT = 10000;
function addScript (line 68) | function addScript({ src, integrity, ...attr }: Script) {
function toDefaultModule (line 85) | function toDefaultModule(value: any) {
function getUMD (line 100) | function getUMD(name: string, version?: string, varName?: string, path?:...
function getJSON (line 146) | async function getJSON<T>(path: string, name?: string, version?: string) {
function addStyle (line 157) | function addStyle({ href, integrity, ...attr }: StyleAsset) {
FILE: packages/cmf-cqrs/src/actions/ack.js
function addContext (line 3) | function addContext(event, data) {
function receiveMessage (line 10) | function receiveMessage(event, data) {
function deleteACK (line 17) | function deleteACK(event, data) {
FILE: packages/cmf-cqrs/src/components/ACKDispatcher/ACKDispatcher.connect.js
function mapStateToProps (line 5) | function mapStateToProps(state) {
FILE: packages/cmf-cqrs/src/components/ACKDispatcher/ACKDispatcher.container.js
constant DEFAULT_STATE (line 9) | const DEFAULT_STATE = new Map({});
function ACKDispatcher (line 27) | function ACKDispatcher(props) {
FILE: packages/cmf-cqrs/src/components/ACKDispatcher/ACKDispatcher.test.jsx
function myActionCreator (line 39) | function myActionCreator() {
function myActionCreator (line 62) | function myActionCreator() {
function myActionCreator (line 115) | function myActionCreator() {
FILE: packages/cmf-cqrs/src/constants/ack.js
constant ACK_ADD_CONTEXT (line 1) | const ACK_ADD_CONTEXT = 'ACK_ADD_CONTEXT';
constant ACK_RECEIVE_MESSAGE (line 2) | const ACK_RECEIVE_MESSAGE = 'ACK_RECEIVE_MESSAGE';
constant ACK_DELETE (line 3) | const ACK_DELETE = 'ACK_DELETE';
FILE: packages/cmf-cqrs/src/constants/socketMiddleware.js
constant SOCKET_ON_OPEN (line 1) | const SOCKET_ON_OPEN = '@@SOCKET.ON_OPEN';
constant SOCKET_ON_CLOSE (line 2) | const SOCKET_ON_CLOSE = '@@SOCKET.ON_CLOSE';
constant SOCKET_ON_ERROR (line 3) | const SOCKET_ON_ERROR = '@@SOCKET.ON_ERROR';
constant SOCKET_ON_PING_TIMEOUT (line 4) | const SOCKET_ON_PING_TIMEOUT = '@@SOCKET.ON_PING_TIMEOUT';
FILE: packages/cmf-cqrs/src/constants/status.js
constant WEBSOCKET_READY_STATE (line 1) | const WEBSOCKET_READY_STATE = {
FILE: packages/cmf-cqrs/src/middleware/smartWebsocket.js
function wsSend (line 7) | function wsSend(ws, message, callback, offlinebuffer) {
function wsIsClosed (line 21) | function wsIsClosed(ws) {
function startWebsocket (line 29) | function startWebsocket(url, offlinebuffer, options) {
function SmartWebsocket (line 105) | function SmartWebsocket(url, options = {}, id = 'default') {
FILE: packages/cmf-cqrs/src/middleware/socketMiddleware.js
function isAbsoluteWebSocketUrl (line 22) | function isAbsoluteWebSocketUrl(socketUrl) {
function createWebsocketMiddleware (line 41) | function createWebsocketMiddleware(
FILE: packages/cmf-cqrs/src/reducers/ack.js
constant DEFAULT_STATE (line 4) | const DEFAULT_STATE = new Map({});
function ackReducer (line 12) | function ackReducer(state = DEFAULT_STATE, action) {
function ackProcessed (line 27) | function ackProcessed(state, action) {
FILE: packages/cmf-cqrs/src/useWebSocket.hook.ts
type WebsocketMessageData (line 6) | interface WebsocketMessageData {
FILE: packages/cmf-router/src/UIRouter.jsx
function getRouteProps (line 41) | function getRouteProps({ path, indexRoute, childRoutes, ...props }, curr...
function isDifferent (line 77) | function isDifferent(historyA, historyB) {
function getRouter (line 86) | function getRouter(history, basename) {
FILE: packages/cmf-router/src/expressions.js
function matchPath (line 6) | function matchPath({ context }, options, getPathArg, defaultValue) {
function location (line 19) | function location({ context }, getPathArg) {
FILE: packages/cmf-router/src/history.js
function create (line 4) | function create(options) {
FILE: packages/cmf-router/src/index.jsx
function mergeRouterConfig (line 20) | function mergeRouterConfig(...configs) {
function getModule (line 24) | function getModule(...args) {
FILE: packages/cmf-router/src/middleware.test.js
method routerPush (line 35) | routerPush(data) {
method routerReplace (line 65) | routerReplace(data) {
FILE: packages/cmf-router/src/sagaRouter.js
function shouldStartSaga (line 84) | function shouldStartSaga(maybeSaga, match, routeSaga) {
function shouldCancelSaga (line 103) | function shouldCancelSaga(maybeSaga, match, routeSaga) {
function shouldRestartSaga (line 119) | function shouldRestartSaga(maybeSaga, match, routeSaga) {
function parseSagaState (line 142) | function parseSagaState(routeFragment, sagas, currentLocation) {
FILE: packages/cmf-router/src/sagaRouter.test.js
method location (line 16) | get location() {
method location (line 37) | get location() {
function getMockedHistory (line 57) | function getMockedHistory() {
function getMockedHistory (line 93) | function getMockedHistory() {
function getMockedHistory (line 126) | function getMockedHistory() {
function getMockedHistory (line 193) | function getMockedHistory() {
function getMockedHistory (line 262) | function getMockedHistory() {
function getMockedHistory (line 295) | function getMockedHistory() {
function getMockedHistory (line 326) | function getMockedHistory() {
function getMockedHistory (line 363) | function getMockedHistory() {
method location (line 405) | get location() {
FILE: packages/cmf-router/src/sagas/documentTitle.js
function formatPath (line 10) | function formatPath(path, parentPath) {
function buildMapFromRoutes (line 25) | function buildMapFromRoutes(routes, mapRoutes, parentPath) {
function getTitleFromRoutes (line 50) | function getTitleFromRoutes(mapRoutes, location, defaultDocTitle) {
function assignDocTitle (line 65) | function assignDocTitle(title) {
FILE: packages/cmf-router/src/selectors.js
function getLocation (line 8) | function getLocation(state) {
function getPath (line 17) | function getPath(state, withHash = false) {
function matchPath (line 28) | function matchPath(state, options) {
FILE: packages/cmf/__tests__/App.test.jsx
method subscribe (line 33) | subscribe() {}
method dispatch (line 34) | dispatch() {}
method getState (line 35) | getState() {
FILE: packages/cmf/__tests__/action.test.js
function dispatch (line 126) | function dispatch() {}
function dispatch (line 136) | function dispatch() {}
FILE: packages/cmf/__tests__/actionCreator.test.js
function creator (line 14) | function creator() {}
FILE: packages/cmf/__tests__/assert.test.js
function toThrow (line 11) | function toThrow(attr, type) {
FILE: packages/cmf/__tests__/cmfConnect.test.jsx
function FunctionComponent (line 629) | function FunctionComponent() {
class ClassComponent (line 635) | class ClassComponent extends Component {
method onClick (line 819) | onClick() {}
FILE: packages/cmf/__tests__/component.test.js
function foo (line 8) | function foo() {}
function foo (line 26) | function foo() {}
FILE: packages/cmf/__tests__/localStorage.test.js
constant PATHS (line 4) | const PATHS = [
constant KEY (line 44) | const KEY = 'test-cmf-localStorage';
FILE: packages/cmf/__tests__/middlewares/http.test.js
function json (line 179) | function json() {
function json (line 227) | function json() {
function json (line 453) | function json() {
function json (line 524) | function json() {
function json (line 590) | function json() {
FILE: packages/cmf/__tests__/onError.test.jsx
function activateSentry (line 7) | function activateSentry() {
FILE: packages/cmf/__tests__/registry.test.js
function addUndefined (line 30) | function addUndefined() {
FILE: packages/cmf/__tests__/sagas/component.test.js
function saga (line 16) | function saga() {}
FILE: packages/cmf/__tests__/store.test.js
function reducer (line 8) | function reducer() {
method heyImRoot (line 29) | heyImRoot() {
method app (line 32) | app() {
FILE: packages/cmf/cmf.d.ts
type CMFContext (line 4) | interface CMFContext {
type SagaProps (line 10) | interface SagaProps {
FILE: packages/cmf/src/App.jsx
function App (line 18) | function App(props) {
FILE: packages/cmf/src/Dispatcher.jsx
function Dispatcher (line 24) | function Dispatcher(props) {
FILE: packages/cmf/src/Inject.component.jsx
function NotFoundComponent (line 22) | function NotFoundComponent({ error }) {
function Inject (line 31) | function Inject({ component, ...props }) {
FILE: packages/cmf/src/action.js
function getActionsById (line 17) | function getActionsById(context) {
function getContentTypeActions (line 29) | function getContentTypeActions(context, contentType, category) {
function getActionInfo (line 40) | function getActionInfo(context, id) {
function getActionObject (line 56) | function getActionObject(context, action, event, data) {
function getOnProps (line 80) | function getOnProps(props) {
function mapDispatchToProps (line 95) | function mapDispatchToProps(dispatch, props) {
FILE: packages/cmf/src/actionCreator.js
function get (line 10) | function get(context, id) {
function register (line 28) | function register(id, actionCreator, context) {
FILE: packages/cmf/src/actions/collectionsActions.js
function remove (line 28) | function remove(collectionId) {
FILE: packages/cmf/src/actions/componentsActions.js
function addState (line 19) | function addState(componentName, key, initialComponentState) {
FILE: packages/cmf/src/actions/http.js
constant DEFAULT_HTTP_HEADERS (line 9) | const DEFAULT_HTTP_HEADERS = {
function onError (line 14) | function onError(error) {
function onRequest (line 21) | function onRequest(url, config) {
function onJSError (line 29) | function onJSError(error, action) {
function onResponse (line 38) | function onResponse(response) {
function onActionResponse (line 45) | function onActionResponse(action, response, headers) {
function onActionError (line 56) | function onActionError(action, error) {
function http (line 66) | function http(config) {
FILE: packages/cmf/src/actions/saga.js
function start (line 6) | function start(event = {}, data) {
function stop (line 16) | function stop(event, data) {
FILE: packages/cmf/src/actions/settingsActions.js
function requestSettings (line 12) | function requestSettings() {
function receiveSettings (line 18) | function receiveSettings(json) {
function errorWithSettings (line 26) | function errorWithSettings(error) {
function fetchSettings (line 42) | function fetchSettings(path = 'settings.json') {
FILE: packages/cmf/src/assert.js
function assertValueTypeOf (line 1) | function assertValueTypeOf(value, type, toThrow = true) {
function assertTypeOf (line 21) | function assertTypeOf(options, attr, type) {
FILE: packages/cmf/src/bootstrap.jsx
function bootstrapRegistry (line 27) | function bootstrapRegistry(options) {
function bootstrapSaga (line 51) | function bootstrapSaga(options) {
function bootstrapRedux (line 73) | function bootstrapRedux(options, sagaMiddleware) {
function bootstrapInterceptors (line 107) | function bootstrapInterceptors(options) {
function DefaultRootComponent (line 113) | function DefaultRootComponent() {
function bootstrap (line 126) | async function bootstrap(appOptions = {}) {
FILE: packages/cmf/src/cmfConnect.jsx
function getComponentName (line 41) | function getComponentName(WrappedComponent) {
function getComponentId (line 45) | function getComponentId(componentId, props) {
function getStateToProps (line 56) | function getStateToProps({
function getDispatchToProps (line 92) | function getDispatchToProps({
function getMergeProps (line 131) | function getMergeProps({ mergeProps, stateProps, dispatchProps, ownProps...
function cmfConnect (line 178) | function cmfConnect({
FILE: packages/cmf/src/cmfModule.js
function getModule (line 3) | async function getModule(module) {
function find (line 15) | async function find(options, buff = []) {
function mergeModulesAndApp (line 42) | async function mergeModulesAndApp(options) {
FILE: packages/cmf/src/cmfModule.merge.jsx
function deepMerge (line 5) | function deepMerge(obj1, obj2) {
function mergeObjects (line 15) | function mergeObjects(obj1, obj2) {
function mergeFns (line 40) | function mergeFns(fn1, fn2) {
function throwIfBothExists (line 53) | function throwIfBothExists(obj1, obj2, name) {
function getUnique (line 61) | function getUnique(obj1, obj2, name) {
function mergeSaga (line 69) | function mergeSaga(saga, newSaga) {
function booleanAnd (line 86) | function booleanAnd(a, b) {
function mergeArrays (line 90) | function mergeArrays(preReducer, newPreReducer) {
function composeComponents (line 100) | function composeComponents(RootComponent, NestedRootComponent) {
constant MERGE_FNS (line 114) | const MERGE_FNS = {
function getReduceConfig (line 141) | function getReduceConfig(mergeConfig = MERGE_FNS) {
function merge (line 159) | function merge(...configs) {
FILE: packages/cmf/src/component.js
function get (line 20) | function get(id, context) {
function register (line 34) | function register(id, component, context) {
function has (line 57) | function has(id, context) {
FILE: packages/cmf/src/componentState.js
function getStateProps (line 24) | function getStateProps(state, name, id = 'default') {
function initState (line 30) | function initState(props) {
function getAction (line 36) | function getAction({ name, id, operation, componentState }) {
function getStateAccessors (line 44) | function getStateAccessors(dispatch, name, id, DEFAULT_STATE) {
FILE: packages/cmf/src/components/ErrorBoundary/ErrorBoundary.component.js
class ErrorBoundary (line 5) | class ErrorBoundary extends Component {
method constructor (line 6) | constructor(props) {
method componentDidCatch (line 11) | componentDidCatch(error, errorInfo) {
method render (line 21) | render() {
FILE: packages/cmf/src/components/ErrorBoundary/ErrorBoundary.component.test.jsx
function TestChildren (line 8) | function TestChildren(props) {
FILE: packages/cmf/src/components/ErrorFeedBack/ErrorFeedBack.component.jsx
function ErrorFeedBack (line 5) | function ErrorFeedBack(props) {
FILE: packages/cmf/src/components/ErrorPanel/ErrorPanel.component.jsx
function reload (line 8) | function reload() {
function ErrorPanel (line 12) | function ErrorPanel({ error = {} }) {
FILE: packages/cmf/src/components/Saga/CmfRegisteredSaga.component.js
function CmfRegisteredSagaComponent (line 7) | function CmfRegisteredSagaComponent({
FILE: packages/cmf/src/components/Saga/Saga.component.js
function SagaComponent (line 7) | function SagaComponent({ startSaga, stopSaga, saga, sagaAttributes, chil...
FILE: packages/cmf/src/components/Saga/Saga.saga.js
constant SAGA_COMPONENT_ACTIONS (line 3) | const SAGA_COMPONENT_ACTIONS = {
FILE: packages/cmf/src/components/Saga/Saga.saga.test.js
function saga (line 5) | function saga(attribute) {
FILE: packages/cmf/src/deprecated.js
function deprecated (line 16) | function deprecated(fn, msg, log) {
FILE: packages/cmf/src/expression.jsx
function register (line 28) | function register(id, func, context) {
function get (line 37) | function get(id, context) {
function call (line 47) | function call(expression, context, payload) {
function getProps (line 82) | function getProps(props, attrs, context, payload = {}) {
function mapStateToProps (line 114) | function mapStateToProps(state, ownProps, ctx = {}) {
function mergeProps (line 138) | function mergeProps(props) {
function withExpression (line 153) | function withExpression(Component, attrs) {
FILE: packages/cmf/src/expressions/allOf.js
function getAllOfFunction (line 4) | function getAllOfFunction(statePath) {
FILE: packages/cmf/src/expressions/getInState.js
function getInState (line 5) | function getInState(statePath, { context }, immutablePath, defaultValue) {
FILE: packages/cmf/src/expressions/includes.js
function getIncludesFunction (line 4) | function getIncludesFunction(statePath) {
FILE: packages/cmf/src/expressions/oneOf.js
function getOneOfFunction (line 4) | function getOneOfFunction(statePath) {
FILE: packages/cmf/src/httpInterceptors.js
function _clear (line 9) | function _clear() {
function isInterceptor (line 25) | function isInterceptor(interceptor) {
function push (line 61) | function push(interceptor) {
function onData (line 75) | function onData(array, data) {
function onRequest (line 102) | function onRequest(config) {
function onResponse (line 114) | function onResponse(response) {
FILE: packages/cmf/src/index.js
function registerInternals (line 39) | function registerInternals(context) {
FILE: packages/cmf/src/localStorage.js
function getState (line 9) | function getState(key) {
function getStoreCallback (line 42) | function getStoreCallback(key, paths) {
FILE: packages/cmf/src/matchPath.js
function matchPath (line 31) | function matchPath(pathname, options = {}) {
FILE: packages/cmf/src/middlewares/error/index.js
constant URL_REQUIRED_MESSAGE (line 4) | const URL_REQUIRED_MESSAGE = 'url to post the error is required';
function getErrorMiddleware (line 11) | function getErrorMiddleware(url) {
FILE: packages/cmf/src/middlewares/http/constants.js
constant ACTION_TYPE_HTTP_REQUEST (line 4) | const ACTION_TYPE_HTTP_REQUEST = '@@HTTP/REQUEST';
constant ACTION_TYPE_HTTP_RESPONSE (line 5) | const ACTION_TYPE_HTTP_RESPONSE = '@@HTTP/RESPONSE';
constant ACTION_TYPE_HTTP_ERRORS (line 6) | const ACTION_TYPE_HTTP_ERRORS = '@@HTTP/ERRORS';
constant ACTION_TYPE_HTTP_REDUCER_ERROR (line 7) | const ACTION_TYPE_HTTP_REDUCER_ERROR = 'HTTP_REDUCE_ERROR';
constant OPTIONS (line 10) | const OPTIONS = 'OPTIONS';
constant GET (line 11) | const GET = 'GET';
constant HEAD (line 12) | const HEAD = 'HEAD';
constant PATCH (line 13) | const PATCH = 'PATCH';
constant POST (line 14) | const POST = 'POST';
constant PUT (line 15) | const PUT = 'PUT';
constant DELETE (line 16) | const DELETE = 'DELETE';
constant TRACE (line 17) | const TRACE = 'TRACE';
constant CONNECT (line 18) | const CONNECT = 'CONNECT';
constant HTTP_METHODS (line 20) | const HTTP_METHODS = {
constant HTTP_STATUS (line 32) | const HTTP_STATUS = {
method isInformational (line 106) | isInformational(code) {
method isSuccess (line 109) | isSuccess(code) {
method isRedirection (line 112) | isRedirection(code) {
method isClientError (line 115) | isClientError(code) {
method isServerError (line 118) | isServerError(code) {
FILE: packages/cmf/src/middlewares/http/csrfHandling.js
function getCookie (line 32) | function getCookie() {
function parseCookie (line 44) | function parseCookie(cookie) {
function mergeCSRFToken (line 90) | function mergeCSRFToken({ security = {} }) {
FILE: packages/cmf/src/middlewares/http/middleware.js
constant DEFAULT_HTTP_HEADERS (line 78) | const DEFAULT_HTTP_HEADERS = {
function isHTTPRequest (line 91) | function isHTTPRequest(action) {
function getMethod (line 99) | function getMethod(action) {
function mergeConfiguredHeader (line 103) | function mergeConfiguredHeader(config) {
function mergeOptions (line 117) | function mergeOptions(action) {
function HTTPError (line 132) | function HTTPError(response) {
function status (line 153) | function status(response) {
function handleResponse (line 160) | function handleResponse(response) {
function getOnError (line 176) | function getOnError(dispatch, httpAction) {
FILE: packages/cmf/src/mock/provider.jsx
class ErrorBoundary (line 7) | class ErrorBoundary extends Component {
method componentDidCatch (line 13) | componentDidCatch(error, errorInfo) {
method render (line 20) | render() {
function MockProvider (line 51) | function MockProvider(props) {
FILE: packages/cmf/src/mock/rtl.jsx
function prepareCMF (line 5) | async function prepareCMF(jsx, opts = {}) {
FILE: packages/cmf/src/mock/store.jsx
method getState (line 26) | getState() {
method dispatch (line 29) | dispatch() {
method subscribe (line 32) | subscribe() {}
method getState (line 47) | getState() {
function copy (line 53) | function copy(obj) {
FILE: packages/cmf/src/omit.js
function omit (line 5) | function omit(props, keyToOmit) {
FILE: packages/cmf/src/onError.js
function serialize (line 23) | function serialize(error) {
function getReportInfo (line 44) | function getReportInfo(error) {
function hasReportURL (line 57) | function hasReportURL() {
function hasReportFeature (line 64) | function hasReportFeature() {
function report (line 72) | function report(error, options = {}) {
function bootstrap (line 124) | function bootstrap(options, store) {
function getErrors (line 137) | function getErrors() {
function setupFromSettings (line 141) | function setupFromSettings() {}
function middleware (line 149) | function middleware() {
function createObjectURL (line 173) | function createObjectURL(error) {
function revokeObjectURL (line 184) | function revokeObjectURL(url) {
FILE: packages/cmf/src/onEvent.js
function serializeEvent (line 5) | function serializeEvent(event) {
function getOnEventActionCreatorHandler (line 12) | function getOnEventActionCreatorHandler(instance, props, config, current...
function getOnEventDispatchHandler (line 29) | function getOnEventDispatchHandler(instance, props, config, currentHandl...
function getOnEventSetStateHandler (line 43) | function getOnEventSetStateHandler(instance, props, config, currentHandl...
constant GET_HANDLER (line 77) | const GET_HANDLER = {
constant ACTION_CREATOR (line 83) | const ACTION_CREATOR = 'ACTION_CREATOR';
constant DISPATCH (line 84) | const DISPATCH = 'DISPATCH';
constant SETSTATE (line 85) | const SETSTATE = 'SETSTATE';
constant INITIAL_STATE (line 87) | const INITIAL_STATE = new Immutable.Map();
function addOnEventSupport (line 89) | function addOnEventSupport(handlerType, instance, props, key) {
FILE: packages/cmf/src/reducers/collectionsReducers.js
function getId (line 13) | function getId(element) {
function getActionWithCollectionIdAsArray (line 25) | function getActionWithCollectionIdAsArray(action) {
function addCollectionElement (line 43) | function addCollectionElement(state, action) {
function deleteListElements (line 59) | function deleteListElements(state, action) {
function deleteMapElements (line 71) | function deleteMapElements(state, action) {
function deleteCollectionElement (line 92) | function deleteCollectionElement(state, action) {
function updateListElements (line 105) | function updateListElements(state, action) {
function updateMapElements (line 114) | function updateMapElements(state, action) {
function updateCollectionElement (line 130) | function updateCollectionElement(state, action) {
function mutateCollection (line 150) | function mutateCollection(state, action) {
function collectionsReducers (line 164) | function collectionsReducers(state = defaultState, action = { type: '' }) {
FILE: packages/cmf/src/reducers/componentsReducers.js
function warnIfAnotherComponentBind (line 18) | function warnIfAnotherComponentBind(state, action) {
function warnIfRemovingStateDoesntExist (line 33) | function warnIfRemovingStateDoesntExist(state, action) {
function errorIfMergingStateDoesntExist (line 50) | function errorIfMergingStateDoesntExist(state, action) {
function componentsReducers (line 66) | function componentsReducers(state = defaultState, action) {
FILE: packages/cmf/src/reducers/index.js
function errorsReducer (line 19) | function errorsReducer(state = defaultState, action) {
FILE: packages/cmf/src/reducers/settingsReducers.js
function attachRef (line 21) | function attachRef(refs, obj) {
function attachRefs (line 34) | function attachRefs(refs, props) {
function prepareSettings (line 47) | function prepareSettings({ views, props, ref, ...rest }) {
function settingsReducers (line 75) | function settingsReducers(state = defaultState, action) {
FILE: packages/cmf/src/register.js
function registerInternals (line 7) | function registerInternals(context) {
FILE: packages/cmf/src/registry.js
method getRegistry (line 20) | getRegistry() {
method lock (line 23) | lock() {
method isLocked (line 26) | isLocked() {
function getRegistry (line 37) | function getRegistry(context) {
function addToRegistry (line 53) | function addToRegistry(id, item, context) {
function getFromRegistry (line 85) | function getFromRegistry(id, context) {
function getRegisterMany (line 93) | function getRegisterMany(registerFn) {
function lock (line 106) | function lock() {
FILE: packages/cmf/src/sagas/component.js
function register (line 11) | function register(id, saga, context) {
function get (line 20) | function get(id, context) {
FILE: packages/cmf/src/sagas/http.js
constant HTTP (line 18) | const HTTP = {
function handleCSRFToken (line 28) | function handleCSRFToken(config) {
class HTTPError (line 34) | class HTTPError extends Error {
method constructor (line 35) | constructor({ data, response }) {
function handleBody (line 50) | function handleBody(response, { method } = {}) {
function handleError (line 79) | function handleError(response, request = {}) {
function handleHttpResponse (line 96) | function handleHttpResponse(response, request = {}) {
function encodePayload (line 110) | function encodePayload(headers, payload) {
function httpFetch (line 130) | function httpFetch(url, config, method, payload) {
function setDefaultConfig (line 314) | function setDefaultConfig(config) {
function setDefaultLanguage (line 329) | function setDefaultLanguage(language) {
function getDefaultConfig (line 357) | function getDefaultConfig() {
method create (line 371) | create(createConfig = {}) {
FILE: packages/cmf/src/selectors/collections.js
function getAll (line 4) | function getAll(state) {
function get (line 15) | function get(state, collectionPath, defaultValue) {
function findListItem (line 36) | function findListItem(state, collectionPath, itemId) {
function toJS (line 49) | function toJS(state, path) {
FILE: packages/cmf/src/selectors/toJS.js
function toJS (line 1) | function toJS(data) {
function getToJSMemoized (line 18) | function getToJSMemoized(selector) {
FILE: packages/cmf/src/settings.jsx
function generateDefaultViewId (line 17) | function generateDefaultViewId(viewId, componentName, componentId) {
function withoutHOC (line 33) | function withoutHOC(componentName) {
function nonMemoized (line 45) | function nonMemoized(state, ownProps, componentName, componentId) {
function PureWaitForSettings (line 110) | function PureWaitForSettings({ initialized, loading, children }) {
FILE: packages/cmf/src/store.js
function setHttpMiddleware (line 42) | function setHttpMiddleware(middleware) {
function addPreReducer (line 48) | function addPreReducer(reducers) {
function preApplyReducer (line 56) | function preApplyReducer(reducer) {
function getReducer (line 75) | function getReducer(appReducer) {
function getMiddlewares (line 98) | function getMiddlewares(middleware) {
function initialize (line 128) | function initialize(appReducer, preloadedState, enhancer, middleware) {
FILE: packages/cmf/src/useContext.js
function useCMFContext (line 5) | function useCMFContext() {
FILE: packages/components/__mocks__/day-calendar.jsx
class DayCalendar (line 9) | class DayCalendar extends Component {
method isCurrentMonth (line 10) | isCurrentMonth(date) {
method render (line 14) | render() {
FILE: packages/components/__mocks__/list.jsx
class ListItem (line 5) | class ListItem extends Component {
method render (line 6) | render() {
function List (line 29) | function List(props) {
FILE: packages/components/__mocks__/month-calendar.jsx
class MonthCalendar (line 4) | class MonthCalendar extends Component {
method render (line 5) | render() {
FILE: packages/components/src/AboutDialog/AboutDialog.component.jsx
function AboutDialog (line 12) | function AboutDialog({
FILE: packages/components/src/AboutDialog/AboutDialogTable.component.jsx
function Text (line 15) | function Text({ text = '', loading, size = Skeleton.SIZES.medium }) {
function AboutDialogTable (line 19) | function AboutDialogTable({
FILE: packages/components/src/ActionBar/ActionBar.component.jsx
constant DISPLAY_MODES (line 10) | const DISPLAY_MODES = {
constant TAG_TYPES (line 16) | const TAG_TYPES = {
function getActionsToRender (line 40) | function getActionsToRender({ selected, actions, multiSelectActions = {}...
function getContentClassName (line 62) | function getContentClassName(tag, left, center, right, className) {
function Content (line 76) | function Content({ tag = TAG_TYPES.DIV, left, right, center, className, ...
function getActionsFromRenderers (line 92) | function getActionsFromRenderers(actions, getComponent) {
function SwitchActions (line 124) | function SwitchActions({ actions, left, right, center, getComponent, com...
function Count (line 151) | function Count({ selected }) {
function defineComponentLeft (line 170) | function defineComponentLeft(parentComponentLeft, selected, hideCount) {
function ActionBar (line 184) | function ActionBar(props) {
FILE: packages/components/src/ActionBar/ActionBar.test.jsx
function MyAction (line 59) | function MyAction(props) {
FILE: packages/components/src/ActionIntercom/Intercom.component.jsx
function Intercom (line 14) | function Intercom({ id, className, config, t, tooltipPlacement }) {
FILE: packages/components/src/ActionIntercom/Intercom.service.jsx
function insertScript (line 4) | function insertScript(appId) {
function init (line 13) | function init(config) {
function boot (line 32) | function boot(widgetId, config = {}) {
function update (line 41) | function update(config) {
function shutdown (line 45) | function shutdown() {
function onHide (line 49) | function onHide(fn) {
function onShow (line 53) | function onShow(fn) {
constant INTERCOM_MAIN_FRAME_SELECTOR (line 57) | const INTERCOM_MAIN_FRAME_SELECTOR =
constant INTERCOM_MAIN_FRAME_WIDTH (line 59) | const INTERCOM_MAIN_FRAME_WIDTH = 376;
constant STYLE_DELAY (line 60) | const STYLE_DELAY = 500;
function setPosition (line 61) | function setPosition(domElement) {
FILE: packages/components/src/ActionIntercom/Intercom.service.test.jsx
function onHideCallback (line 118) | function onHideCallback() {}
function onShowCallback (line 133) | function onShowCallback() {}
FILE: packages/components/src/ActionList/ActionList.component.jsx
function getActionId (line 21) | function getActionId(id, action) {
function ActionListItem (line 29) | function ActionListItem({ getComponent, id, onSelect, action, isSelected...
function ActionList (line 74) | function ActionList(props) {
FILE: packages/components/src/Actions/Action/Action.component.jsx
constant DISPLAY_MODE_FILE (line 10) | const DISPLAY_MODE_FILE = 'file';
constant DISPLAY_MODE_DROPDOWN (line 11) | const DISPLAY_MODE_DROPDOWN = 'dropdown';
constant DISPLAY_MODE_SPLIT_DROPDOWN (line 12) | const DISPLAY_MODE_SPLIT_DROPDOWN = 'splitDropdown';
constant DISPLAY_MODE_ICON_TOGGLE (line 13) | const DISPLAY_MODE_ICON_TOGGLE = 'iconToggle';
function getActionComponent (line 27) | function getActionComponent({ displayMode, getComponent }) {
function Action (line 59) | function Action({ displayMode, getComponent, ...props }) {
FILE: packages/components/src/Actions/ActionButton/ActionButton.component.jsx
constant LEFT (line 17) | const LEFT = 'left';
constant RIGHT (line 18) | const RIGHT = 'right';
function getIcon (line 20) | function getIcon({ icon, iconName, iconTransform, inProgress, loading }) {
function getLabel (line 55) | function getLabel({ hideLabel, label, loading }) {
function adjustContentPlacement (line 71) | function adjustContentPlacement(icon, label, iconPosition) {
function getContent (line 78) | function getContent(props) {
function getHandler (line 82) | function getHandler(func, model, label, rest) {
function noOp (line 93) | function noOp() {}
function ActionButton (line 108) | function ActionButton(props) {
FILE: packages/components/src/Actions/ActionButton/ActionButton.test.jsx
function OverlayComponent (line 19) | function OverlayComponent() {
FILE: packages/components/src/Actions/ActionButton/Button.stories.jsx
constant ACTION1 (line 23) | const ACTION1 = 'Action 1';
constant ACTION2 (line 24) | const ACTION2 = 'Action 2';
FILE: packages/components/src/Actions/ActionDropdown/ActionDropdown.component.jsx
constant DROPDOWN_CONTAINER_CN (line 23) | const DROPDOWN_CONTAINER_CN = 'tc-dropdown-container';
function InjectDropdownMenuItem (line 25) | function InjectDropdownMenuItem({
function renderMutableMenuItem (line 66) | function renderMutableMenuItem(item, index, getComponent) {
function getMenuItem (line 98) | function getMenuItem(item, index, getComponent) {
function getDropdownContainer (line 106) | function getDropdownContainer(dropdownElement) {
class ActionDropdown (line 145) | class ActionDropdown extends Component {
method constructor (line 146) | constructor(props) {
method componentDidUpdate (line 153) | componentDidUpdate(prevProps, prevState) {
method onToggle (line 184) | onToggle(isOpen) {
method onItemSelect (line 192) | onItemSelect(object, event) {
method render (line 198) | render() {
FILE: packages/components/src/Actions/ActionDropdown/ActionDropdown.test.jsx
function getComponent (line 9) | function getComponent(key) {
function testSwitch (line 169) | async function testSwitch({
FILE: packages/components/src/Actions/ActionFile/ActionFile.component.jsx
constant LEFT (line 12) | const LEFT = 'left';
constant RIGHT (line 13) | const RIGHT = 'right';
class ActionFile (line 24) | class ActionFile extends Component {
method constructor (line 56) | constructor(props) {
method handleChange (line 61) | handleChange(event) {
method render (line 70) | render() {
FILE: packages/components/src/Actions/ActionIconToggle/ActionIconToggle.component.jsx
function ActionIconToggle (line 12) | function ActionIconToggle(props) {
FILE: packages/components/src/Actions/ActionIconToggle/IconToggle.stories.jsx
constant ACTION1 (line 24) | const ACTION1 = 'Action 1';
constant ACTION2 (line 25) | const ACTION2 = 'Action 2';
FILE: packages/components/src/Actions/ActionSplitDropdown/ActionSplitDropdown.component.jsx
function ActionSplitDropdown (line 33) | function ActionSplitDropdown(props) {
FILE: packages/components/src/Actions/Actions.component.jsx
function getButtonGroupProps (line 8) | function getButtonGroupProps(props) {
function Actions (line 66) | function Actions({ getComponent, hideLabel, link, tooltipPlacement, ...p...
FILE: packages/components/src/Actions/wrapOnClick.js
function noOp (line 7) | function noOp() {}
function wrapOnClick (line 9) | function wrapOnClick(action) {
FILE: packages/components/src/AppGuidedTour/AppGuidedTour.component.jsx
constant DEMO_CONTENT_STEP_ID (line 13) | const DEMO_CONTENT_STEP_ID = 1;
constant DEFAULT_LOCAL_STORAGE_KEY (line 14) | const DEFAULT_LOCAL_STORAGE_KEY = 'app-guided-tour-viewed';
function AppGuidedTour (line 16) | function AppGuidedTour({
FILE: packages/components/src/AppGuidedTour/AppGuidedTour.stories.jsx
function AppGuidedTourContainer (line 6) | function AppGuidedTourContainer({ withDemoContent = false }) {
FILE: packages/components/src/AppGuidedTour/AppGuidedTour.test.jsx
constant DEFAULT_PROPS (line 6) | const DEFAULT_PROPS = {
FILE: packages/components/src/AppGuidedTour/DemoContentStep.component.jsx
function DemoContentStep (line 8) | function DemoContentStep({ demoContentSteps }) {
FILE: packages/components/src/AppLoader/AppLoader.component.jsx
function AppLoaderComponent (line 6) | function AppLoaderComponent({ t }) {
FILE: packages/components/src/AppLoader/constant.js
constant LOADER_STYLE (line 1) | const LOADER_STYLE = `* {
constant APP_LOADER (line 166) | const APP_LOADER = `<div class="tc-app-loader-container" aria-label="Loa...
function getLoaderStyle (line 182) | function getLoaderStyle(icon = '') {
FILE: packages/components/src/AppSwitcher/AppSwitcher.component.jsx
function AppSwitcher (line 15) | function AppSwitcher({
FILE: packages/components/src/Badge/Badge.component.jsx
constant SIZES (line 11) | const SIZES = {
constant TYPES (line 16) | const TYPES = {
function Badge (line 69) | function Badge({
FILE: packages/components/src/Badge/Badge.stories.jsx
function onDelete (line 74) | function onDelete(name) {
function onSelect (line 80) | function onSelect(name) {
FILE: packages/components/src/Badge/BadgeComposition/BadgeDelete/BadgeDelete.component.jsx
function BadgeDelete (line 11) | function BadgeDelete({ disabled, id, label, onClick, dataFeature }) {
FILE: packages/components/src/Breadcrumbs/Breadcrumbs.component.jsx
constant DEFAULT_MAX_ITEMS (line 16) | const DEFAULT_MAX_ITEMS = 4;
constant DEFAULT_NB_ITEMS_BEFORE_ELLIPSIS (line 22) | const DEFAULT_NB_ITEMS_BEFORE_ELLIPSIS = 1;
constant BREADCRUMB_SKELETON (line 24) | const BREADCRUMB_SKELETON = [
function BreadcrumbsComponent (line 39) | function BreadcrumbsComponent({ loading, id, items, maxItems, t }) {
FILE: packages/components/src/Checkbox/Checkbox.jsx
function Checkbox (line 5) | function Checkbox({ id, className, label, intermediate, ...props }) {
FILE: packages/components/src/CircularProgress/CircularProgress.component.jsx
constant RADIUS (line 9) | const RADIUS = 20;
constant DIAMETER (line 10) | const DIAMETER = 50;
constant CENTER_POSITION (line 11) | const CENTER_POSITION = 25;
constant CIRCUMFERENCE (line 12) | const CIRCUMFERENCE = Math.PI * (RADIUS * 2);
function getCircleStyle (line 14) | function getCircleStyle(percent) {
function CircularProgress (line 32) | function CircularProgress({ size, light, percent, className, t }) {
FILE: packages/components/src/CollapsiblePanel/CollapsiblePanel.component.jsx
constant TYPE_STATUS (line 16) | const TYPE_STATUS = 'status';
constant TYPE_ACTION (line 17) | const TYPE_ACTION = 'action';
constant TYPE_BADGE (line 18) | const TYPE_BADGE = 'badge';
function getActionHandler (line 20) | function getActionHandler(func, item) {
function renderHeaderItem (line 51) | function renderHeaderItem({ displayMode, className, ...headerItem }, key) {
function CollapsiblePanelHeader (line 113) | function CollapsiblePanelHeader(props) {
function getKeyValueContent (line 183) | function getKeyValueContent(content) {
function getTextualContent (line 198) | function getTextualContent(content) {
function CollapsiblePanel (line 222) | function CollapsiblePanel(props) {
FILE: packages/components/src/ConfirmDialog/ConfirmDialog.component.jsx
function ConfirmDialog (line 33) | function ConfirmDialog({
FILE: packages/components/src/DataViewer/Badges/LengthBadge/LengthBadge.component.jsx
function LengthBadge (line 8) | function LengthBadge({ lengthValue, className }) {
FILE: packages/components/src/DataViewer/Core/Tree/Tree.component.jsx
function isRoot (line 11) | function isRoot(level) {
function Tree (line 19) | function Tree({ className, noRoot, withNodeBorder, ...props }) {
FILE: packages/components/src/DataViewer/Core/TreeNode/TreeNode.component.js
function isBranch (line 9) | function isBranch(type) {
function isBranchOpened (line 20) | function isBranchOpened(expandAll, index, paths, jsonpath) {
function isNodeHighlighted (line 30) | function isNodeHighlighted(highlighted, jsonpath) {
function isDeepNodeHighlighted (line 42) | function isDeepNodeHighlighted(opened, nodeHighlighted, type) {
class TreeNode (line 53) | class TreeNode extends Component {
method render (line 66) | render() {
FILE: packages/components/src/DataViewer/Core/TreeNodeList/TreeNodeList.component.jsx
function TreeNodeList (line 8) | function TreeNodeList({ treeClassName, nodeClassName, ...props }) {
FILE: packages/components/src/DataViewer/DataViewer.stories.jsx
function buildRegExpJsonpath (line 16) | function buildRegExpJsonpath(jsonpath) {
FILE: packages/components/src/DataViewer/Headers/TreeHeader/TreeHeader.component.jsx
function TreeHeader (line 12) | function TreeHeader({ title, otherActions, onClickCollapseAll, onClickEx...
FILE: packages/components/src/DataViewer/Icons/TreeBranchIcon/TreeBranchIcon.component.jsx
function getDefaultIcon (line 13) | function getDefaultIcon({ useCustomIcon, getIcon, opened, ...props }) {
class TreeBranchIcon (line 26) | class TreeBranchIcon extends PureComponent {
method render (line 57) | render() {
FILE: packages/components/src/DataViewer/Managers/TreeManager/TreeManager.container.js
function addPathsToCollection (line 5) | function addPathsToCollection(index, collection, paths, jsonpath) {
function removePathsFromCollection (line 9) | function removePathsFromCollection(index, collection, paths, jsonpath) {
function updateCollection (line 23) | function updateCollection(index, collection, expandAll, paths, { opened,...
class TreeManager (line 37) | class TreeManager extends Component {
method constructor (line 49) | constructor(props) {
method render (line 112) | render() {
FILE: packages/components/src/DataViewer/ModelViewer/Branch/ModelViewerBranch.component.jsx
function getBranchDisplayKey (line 8) | function getBranchDisplayKey(union, hasSemanticAwareness, getDisplayKey,...
class ModelViewerBranch (line 23) | class ModelViewerBranch extends Component {
method render (line 76) | render() {
FILE: packages/components/src/DataViewer/ModelViewer/Leaf/ModelViewerLeaf.component.jsx
function isOptional (line 14) | function isOptional(item) {
function ModelViewerLeaf (line 24) | function ModelViewerLeaf({
FILE: packages/components/src/DataViewer/ModelViewer/Leaf/ModelViewerLeaf.test.jsx
function renderLeafOptions (line 52) | function renderLeafOptions(v) {
FILE: packages/components/src/DataViewer/ModelViewer/ModelViewer.component.jsx
function ModelViewer (line 8) | function ModelViewer({ t, ...props }) {
FILE: packages/components/src/DataViewer/ModelViewer/ModelViewer.container.jsx
function defaultGetDisplayValue (line 19) | function defaultGetDisplayValue(item) {
function getDqType (line 30) | function getDqType(item) {
function defaultGetDisplayKey (line 37) | function defaultGetDisplayKey(item) {
function getChilds (line 51) | function getChilds(item) {
function filterNullUnion (line 66) | function filterNullUnion(union) {
function transformUnions (line 89) | function transformUnions(childs) {
function defaultTransformChilds (line 104) | function defaultTransformChilds(item) {
function getJSONPath (line 114) | function getJSONPath(dataKey, parent) {
function getItemType (line 126) | function getItemType(item) {
class ModelViewer (line 133) | class ModelViewer extends RComponent {
method render (line 203) | render() {
FILE: packages/components/src/DataViewer/RecordsViewer/Branch/RecordsViewerBranch.component.jsx
function isLoaded (line 17) | function isLoaded(value) {
class RecordsViewerBranch (line 21) | class RecordsViewerBranch extends Component {
method render (line 68) | render() {
FILE: packages/components/src/DataViewer/RecordsViewer/CellRenderer/RecordsCellRenderer.component.jsx
class RecordsCellRenderer (line 5) | class RecordsCellRenderer extends Component {
method shouldComponentUpdate (line 16) | shouldComponentUpdate(nextProps) {
method componentDidUpdate (line 27) | componentDidUpdate() {
method render (line 37) | render() {
FILE: packages/components/src/DataViewer/RecordsViewer/Leaf/RecordsViewerLeaf.component.jsx
function RecordsViewerLeaf (line 11) | function RecordsViewerLeaf({
FILE: packages/components/src/DataViewer/RecordsViewer/Leaf/RecordsViewerLeaf.test.jsx
method get (line 8) | get() {
FILE: packages/components/src/DataViewer/RecordsViewer/RecordsViewer.component.jsx
class RecordsViewer (line 12) | class RecordsViewer extends Component {
method render (line 32) | render() {
FILE: packages/components/src/DataViewer/RecordsViewer/RecordsViewer.container.jsx
function getIcon (line 24) | function getIcon(opened) {
class RecordsViewer (line 40) | class RecordsViewer extends RComponent {
method render (line 97) | render() {
FILE: packages/components/src/DataViewer/RecordsViewer/RecordsViewer.parser.js
function getNextSchemaItems (line 9) | function getNextSchemaItems(schema) {
function transformObjectBranch (line 28) | function transformObjectBranch(itemChilds, schema) {
function transformArrayBranch (line 60) | function transformArrayBranch(itemChilds, schema) {
function getItemValue (line 74) | function getItemValue(item) {
function findSchemaUnion (line 86) | function findSchemaUnion(schema, unionKey) {
function getObjectBranchDatakey (line 101) | function getObjectBranchDatakey(dataKey, value) {
function getSchemaUnion (line 124) | function getSchemaUnion(item, schema) {
function getJSONPath (line 139) | function getJSONPath(dataKey, parent) {
function getChilds (line 161) | function getChilds(item, schema, type) {
function getChildsCount (line 174) | function getChildsCount(item) {
function getItemType (line 189) | function getItemType(item) {
FILE: packages/components/src/DataViewer/Text/SimpleTextKeyValue/DefaultValueRenderer.component.jsx
constant DEFAULT_VALUE_PROP_TYPES (line 10) | const DEFAULT_VALUE_PROP_TYPES = PropTypes.oneOfType([
class DefaultValueRenderer (line 19) | class DefaultValueRenderer extends Component {
method render (line 27) | render() {
FILE: packages/components/src/DataViewer/Text/SimpleTextKeyValue/SimpleTextKeyValue.component.jsx
constant DATE_TYPE_FORMATER (line 9) | const DATE_TYPE_FORMATER = 'date';
constant LONG_TYPE (line 10) | const LONG_TYPE = 'long';
constant AVRO_TYPES (line 11) | const AVRO_TYPES = [
constant TIMESTAMP_MILLIS_LOGICAL_TYPES (line 23) | const TIMESTAMP_MILLIS_LOGICAL_TYPES = 'timestamp-millis';
constant LOGICAL_TYPES (line 24) | const LOGICAL_TYPES = [TIMESTAMP_MILLIS_LOGICAL_TYPES];
constant PRIMITIVES_MAPPING (line 25) | const PRIMITIVES_MAPPING = {
function getTypeRenderer (line 32) | function getTypeRenderer(schemaType) {
function AvroRenderer (line 45) | function AvroRenderer({ colDef, data, isValueOverflown, isLongValueToggl...
FILE: packages/components/src/DataViewer/Virtualized/TreeCellMeasurer/TreeCellMeasurer.component.jsx
function TreeCellMeasurer (line 5) | function TreeCellMeasurer({ index, parent, style, cellRenderer, classNam...
FILE: packages/components/src/DataViewer/Virtualized/VirtualizedTree/VirtualizedTree.component.jsx
constant DEFAULT_HEIGHT (line 8) | const DEFAULT_HEIGHT = 40;
class VirtualizedTree (line 13) | class VirtualizedTree extends Component {
method render (line 40) | render() {
FILE: packages/components/src/DataViewer/jsonPath.js
function formatKey (line 6) | function formatKey(key, type) {
function readJsonKeys (line 18) | function readJsonKeys(keys, type) {
function formatJSONPath (line 33) | function formatJSONPath(keys, prefix, type) {
FILE: packages/components/src/Datalist/Datalist.component.jsx
function escapeRegexCharacters (line 17) | function escapeRegexCharacters(str) {
constant PROPS_TO_OMIT (line 21) | const PROPS_TO_OMIT = ['restricted', 'titleMap', 'value'];
constant DISPLAY (line 22) | const DISPLAY = {
function isValuePresentInSuggestions (line 28) | function isValuePresentInSuggestions(titleMap, filterValue, multiSection) {
function buildSuggestions (line 36) | function buildSuggestions({
function findEntry (line 89) | function findEntry(titleMap, attributeName, attributeValue = '') {
function getEntryFromName (line 118) | function getEntryFromName(titleMap, name, restricted) {
function getEntryFromValue (line 131) | function getEntryFromValue(titleMap, value, restricted) {
function getEntry (line 140) | function getEntry(titleMap, nameOrValue, restricted) {
function Datalist (line 150) | function Datalist(props) {
FILE: packages/components/src/DateTimePickers/Date/Input/Input.component.jsx
function Input (line 11) | function Input(props) {
FILE: packages/components/src/DateTimePickers/Date/Manager/Manager.component.jsx
function ContextualManager (line 13) | function ContextualManager(props) {
FILE: packages/components/src/DateTimePickers/Date/Manager/Manager.component.test.jsx
constant DEFAULT_ID (line 8) | const DEFAULT_ID = 'DEFAULT_ID';
function DateConsumerDiv (line 10) | function DateConsumerDiv(props) {
function DateConsumer (line 31) | function DateConsumer() {
FILE: packages/components/src/DateTimePickers/Date/Picker/Picker.component.jsx
function Picker (line 6) | function Picker(props) {
FILE: packages/components/src/DateTimePickers/Date/date-extraction.js
constant INTERNAL_INVALID_DATE (line 10) | const INTERNAL_INVALID_DATE = new Date('INTERNAL_INVALID_DATE');
function DatePickerException (line 12) | function DatePickerException(code, message) {
function getDateRegexp (line 23) | function getDateRegexp(dateFormat) {
function isDateValid (line 37) | function isDateValid(date, options) {
function dateToStr (line 50) | function dateToStr(date, { dateFormat }) {
function convertDateToTimezone (line 54) | function convertDateToTimezone(date, { useUTC, timezone }) {
function strToDate (line 67) | function strToDate(strToParse, dateFormat, isDisabledChecker) {
function checkSupportedDateFormat (line 116) | function checkSupportedDateFormat(dateFormat) {
function checkSupportedTimezone (line 135) | function checkSupportedTimezone(timezone) {
function extractDateOnly (line 149) | function extractDateOnly(date, { useUTC, timezone }) {
function extractPartsFromDate (line 169) | function extractPartsFromDate(date, options) {
function extractPartsFromTextInput (line 202) | function extractPartsFromTextInput(textInput, options, isDisabledChecker) {
function extractDate (line 232) | function extractDate(value, options) {
function extractFromDate (line 248) | function extractFromDate(date, options) {
FILE: packages/components/src/DateTimePickers/DateRange/Input/Input.component.jsx
constant OMIT_INPUT_PROPS (line 12) | const OMIT_INPUT_PROPS = ['date', 'onChange', 'onFocus', 'label', 'minWi...
FILE: packages/components/src/DateTimePickers/DateRange/Manager/Manager.component.jsx
function DateRangePickerException (line 14) | function DateRangePickerException(code, message) {
function extractRangeParts (line 19) | function extractRangeParts(startDate, endDate, options) {
function ContextualManager (line 37) | function ContextualManager(props) {
FILE: packages/components/src/DateTimePickers/DateRange/Manager/Manager.component.test.jsx
constant DEFAULT_ID (line 8) | const DEFAULT_ID = 'DEFAULT_ID';
function DateRangeConsumerDiv (line 10) | function DateRangeConsumerDiv(props) {
function DateRangeConsumer (line 33) | function DateRangeConsumer(props) {
FILE: packages/components/src/DateTimePickers/DateRange/Picker/Picker.component.jsx
function Picker (line 7) | function Picker(props) {
FILE: packages/components/src/DateTimePickers/DateRange/constants.js
constant START_DATE (line 1) | const START_DATE = 'startDate';
constant END_DATE (line 2) | const END_DATE = 'endDate';
FILE: packages/components/src/DateTimePickers/DateTime/Manager/Manager.component.jsx
function ContextualManager (line 11) | function ContextualManager(props) {
FILE: packages/components/src/DateTimePickers/DateTime/Manager/Manager.component.test.jsx
constant DEFAULT_ID (line 8) | const DEFAULT_ID = 'DEFAULT_ID';
function DateTimeConsumerDiv (line 10) | function DateTimeConsumerDiv(props) {
function DateTimeConsumer (line 34) | function DateTimeConsumer(props) {
FILE: packages/components/src/DateTimePickers/DateTime/datetime-extraction.js
constant INTERNAL_INVALID_DATE (line 10) | const INTERNAL_INVALID_DATE = new Date('INTERNAL_INVALID_DATE');
function DateTimePickerException (line 12) | function DateTimePickerException(code, message) {
function isEmpty (line 17) | function isEmpty(value) {
function extractTimeOnly (line 29) | function extractTimeOnly(date, { useSeconds, useUTC, timezone }) {
function timeToSeconds (line 58) | function timeToSeconds(hours, minutes, seconds) {
function dateAndTimeToDateTime (line 70) | function dateAndTimeToDateTime(date, time, options) {
function dateAndTimeToStr (line 88) | function dateAndTimeToStr(date = '', time = '', options) {
function extractPartsFromDateTime (line 106) | function extractPartsFromDateTime(datetime, options) {
function extractPartsFromTextInput (line 133) | function extractPartsFromTextInput(textInput, options) {
function extractParts (line 180) | function extractParts(value, options) {
function updatePartsOnDateChange (line 203) | function updatePartsOnDateChange(datePickerPayload, time, options) {
function updatePartsOnTimeChange (line 234) | function updatePartsOnTimeChange(timePickerPayload, date, options) {
FILE: packages/components/src/DateTimePickers/DateTimeRange/Manager/Manager.component.jsx
function DateTimeRangePickerException (line 10) | function DateTimeRangePickerException(code, message) {
function DateTimeRangeManager (line 15) | function DateTimeRangeManager(props) {
FILE: packages/components/src/DateTimePickers/DateTimeRange/Manager/Manager.component.test.jsx
constant DEFAULT_ID (line 8) | const DEFAULT_ID = 'DEFAULT_ID';
function DateTimeRangeConsumerDiv (line 10) | function DateTimeRangeConsumerDiv(props) {
function DateTimeRangeConsumer (line 27) | function DateTimeRangeConsumer(props) {
FILE: packages/components/src/DateTimePickers/InputDatePicker/InputDatePicker.component.jsx
constant PROPS_TO_OMIT_FOR_INPUT (line 17) | const PROPS_TO_OMIT_FOR_INPUT = [
function onMouseDown (line 33) | function onMouseDown(event) {
function InputDatePicker (line 37) | function InputDatePicker(props) {
FILE: packages/components/src/DateTimePickers/InputDateRangePicker/InputDateRangePicker.component.jsx
constant PROPS_TO_OMIT_FOR_INPUT (line 19) | const PROPS_TO_OMIT_FOR_INPUT = [
function InputDateRangePicker (line 28) | function InputDateRangePicker(props) {
FILE: packages/components/src/DateTimePickers/InputDateTimePicker/InputDateTimePicker.component.jsx
function InputDateTimePicker (line 12) | function InputDateTimePicker(props) {
function InputDateTimePickerSwitch (line 100) | function InputDateTimePickerSwitch(props) {
FILE: packages/components/src/DateTimePickers/InputDateTimeRangePicker/InputDateTimeRangePicker.component.jsx
constant PROPS_TO_OMIT_FOR_INPUT (line 17) | const PROPS_TO_OMIT_FOR_INPUT = [
function InputDateTimeRangePicker (line 27) | function InputDateTimeRangePicker(props) {
FILE: packages/components/src/DateTimePickers/InputTimePicker/InputTimePicker.component.jsx
constant PROPS_TO_OMIT_FOR_INPUT (line 16) | const PROPS_TO_OMIT_FOR_INPUT = [
function InputTimePicker (line 26) | function InputTimePicker(props) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/DateTime/Input/Input.component.jsx
function Input (line 6) | function Input(props) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/DateTime/Manager/Manager.component.jsx
class ContextualManager (line 28) | class ContextualManager extends Component {
method constructor (line 60) | constructor(props) {
method componentDidUpdate (line 82) | componentDidUpdate(prevProps, prevState) {
method onChange (line 100) | onChange(event, origin) {
method onInputChange (line 110) | onInputChange(event) {
method onPickerChange (line 123) | onPickerChange(event, { date, time, field }) {
method onSubmit (line 183) | onSubmit(event, origin) {
method onInputFocus (line 201) | onInputFocus(event, focusedId) {
method onReset (line 205) | onReset() {
method getDateOptions (line 213) | getDateOptions() {
method hasError (line 224) | hasError(errorCodes) {
method render (line 234) | render() {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/DateTime/Manager/Manager.component.test.jsx
constant DEFAULT_ID (line 9) | const DEFAULT_ID = 'DEFAULT_ID';
function DateTimeConsumerDiv (line 11) | function DateTimeConsumerDiv(props) {
function DateTimeConsumer (line 45) | function DateTimeConsumer(props) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/DateTime/Picker/Picker.component.jsx
function Picker (line 6) | function Picker(props) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/DateTime/Validation/Error.component.tsx
type ErrorProps (line 3) | type ErrorProps = {
function Error (line 9) | function Error({ hidden, errors, id }: ErrorProps) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/DateTime/Validation/Validation.component.jsx
function Validation (line 13) | function Validation({ t }) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/DateTime/constants.js
constant INPUT_ERRORS (line 1) | const INPUT_ERRORS = [
constant HOUR_ERRORS (line 9) | const HOUR_ERRORS = ['INVALID_HOUR'];
constant MINUTES_ERRORS (line 10) | const MINUTES_ERRORS = ['INVALID_MINUTES'];
constant SECONDS_ERRORS (line 11) | const SECONDS_ERRORS = ['INVALID_SECONDS'];
constant FIELD_HOURS (line 13) | const FIELD_HOURS = 'HOURS';
constant FIELD_MINUTES (line 14) | const FIELD_MINUTES = 'MINUTES';
constant FIELD_SECONDS (line 15) | const FIELD_SECONDS = 'SECONDS';
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/DateTime/date-extraction.js
constant INTERNAL_INVALID_DATE (line 16) | const INTERNAL_INVALID_DATE = new Date('INTERNAL_INVALID_DATE');
function DatePickerException (line 18) | function DatePickerException(code, message) {
function pad (line 23) | function pad(num, size) {
function extractDateOnly (line 39) | function extractDateOnly(date, { useUTC }) {
function extractTimeOnly (line 53) | function extractTimeOnly(date, { useSeconds, useUTC }) {
function getDateRegexp (line 80) | function getDateRegexp(dateFormat) {
function getFullDateFormat (line 97) | function getFullDateFormat({ dateFormat, useTime, useSeconds }) {
function isDateValid (line 108) | function isDateValid(date, options) {
function checkHours (line 119) | function checkHours(hours) {
function checkMinutes (line 132) | function checkMinutes(minutes) {
function checkSeconds (line 146) | function checkSeconds(seconds) {
function isTimeEmpty (line 159) | function isTimeEmpty(time) {
function checkTime (line 169) | function checkTime(time, options) {
function check (line 201) | function check(date, time, options) {
function timeToSeconds (line 228) | function timeToSeconds(hours, minutes, seconds, options) {
function dateTimeToStr (line 240) | function dateTimeToStr(date, time, options) {
function dateAndTimeToDateTime (line 292) | function dateAndTimeToDateTime(date, time, options) {
function strToDate (line 316) | function strToDate(strToParse, dateFormat) {
function strToTime (line 360) | function strToTime(strToParse, useSeconds) {
function initTime (line 378) | function initTime({ useTime, useSeconds }) {
function checkSupportedDateFormat (line 392) | function checkSupportedDateFormat(dateFormat) {
function extractPartsFromDateTime (line 417) | function extractPartsFromDateTime(datetime, options) {
function extractPartsFromDateAndTime (line 456) | function extractPartsFromDateAndTime(date, time, options) {
function extractDateOrTimeHybridMode (line 490) | function extractDateOrTimeHybridMode(textInput, options) {
function extractPartsFromTextInput (line 524) | function extractPartsFromTextInput(textInput, options) {
function extractParts (line 609) | function extractParts(value, options) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/DateTime/error-messages.js
function getErrorMessage (line 8) | function getErrorMessage(key) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/InputDateTimePicker/InputDateTimePicker.component.jsx
constant PROPS_TO_OMIT_FOR_INPUT (line 17) | const PROPS_TO_OMIT_FOR_INPUT = [
function onMouseDown (line 32) | function onMouseDown(event) {
function InputDateTimePicker (line 36) | function InputDateTimePicker(props) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/InputDateTimePicker/InputDateTimePicker.component.test.jsx
function getPopup (line 7) | function getPopup() {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/generator.js
function buildDateFnsLocale (line 12) | function buildDateFnsLocale() {
function buildDayNames (line 21) | function buildDayNames(firstDayOfweek = 1, t) {
function buildWeeks (line 36) | function buildWeeks(year, monthIndex, firstDayOfWeek = 1) {
function buildMonths (line 50) | function buildMonths(chunkSize, t) {
function buildYears (line 65) | function buildYears(middle, window = 3) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/pickers/DatePicker/DatePicker.component.jsx
class DatePicker (line 24) | class DatePicker extends PureComponent {
method constructor (line 25) | constructor(props) {
method isSelectedDate (line 34) | isSelectedDate(date) {
method isDisabledDate (line 38) | isDisabledDate(date) {
method isCurrentMonth (line 46) | isCurrentMonth(date) {
method isCurrentYear (line 50) | isCurrentYear(date) {
method isSelectedInCurrentCalendar (line 54) | isSelectedInCurrentCalendar() {
method selectDate (line 62) | selectDate(event, date, year, monthIndex) {
method render (line 73) | render() {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/pickers/DatePicker/DatePicker.test.jsx
function mockIsTodayWith (line 12) | function mockIsTodayWith(newToday) {
function getDisabledChecker (line 16) | function getDisabledChecker(disabledDates) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/pickers/DateTimePicker/DateTimePicker.component.jsx
class DateTimePicker (line 18) | class DateTimePicker extends Component {
method constructor (line 19) | constructor(props) {
method componentDidMount (line 51) | componentDidMount() {
method componentDidUpdate (line 58) | componentDidUpdate(prevProps) {
method componentWillUnmount (line 84) | componentWillUnmount() {
method onSelectDate (line 91) | onSelectDate(event, selectedDate) {
method onSelectTime (line 98) | onSelectTime(event, selectedTime, field) {
method onSelectCalendarMonthYear (line 105) | onSelectCalendarMonthYear(newCalendar, callback) {
method onSelectCalendarMonth (line 117) | onSelectCalendarMonth(event, monthIndex) {
method onSelectCalendarYear (line 121) | onSelectCalendarYear(event, year) {
method onClickToday (line 125) | onClickToday(event) {
method setAllowFocus (line 135) | setAllowFocus(value) {
method setView (line 139) | setView(isDateTimeView) {
method submit (line 145) | submit(event, field) {
method render (line 153) | render() {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/pickers/MonthPicker/MonthPicker.component.jsx
constant ROW_SIZE (line 10) | const ROW_SIZE = 3;
class MonthPicker (line 12) | class MonthPicker extends PureComponent {
method constructor (line 13) | constructor(props) {
method render (line 18) | render() {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/pickers/TimePicker/TimePicker.component.jsx
class TimePicker (line 12) | class TimePicker extends PureComponent {
method constructor (line 31) | constructor(props) {
method onChange (line 40) | onChange(event, field) {
method render (line 53) | render() {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/pickers/YearPicker/YearPicker.component.jsx
constant YEAR_WINDOW_SIZE (line 11) | const YEAR_WINDOW_SIZE = 7;
constant YEAR_WINDOW_OVERFLOW_SIZE (line 12) | const YEAR_WINDOW_OVERFLOW_SIZE = 3;
class YearPicker (line 14) | class YearPicker extends Component {
method constructor (line 25) | constructor(props) {
method componentDidUpdate (line 36) | componentDidUpdate(prevProps) {
method onWheel (line 48) | onWheel(event) {
method getMiddleYear (line 61) | getMiddleYear() {
method scroll (line 66) | scroll(pace, callback) {
method render (line 75) | render() {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/views/DateTimeView/DateTimeView.component.jsx
function euclideanModulo (line 21) | function euclideanModulo(dividend, divisor) {
class DateTimeView (line 26) | class DateTimeView extends PureComponent {
method constructor (line 52) | constructor(props) {
method getTimePicker (line 59) | getTimePicker() {
method incrementMonthIndex (line 73) | incrementMonthIndex(monthIncrement, callback) {
method render (line 88) | render() {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/views/HeaderTitle/HeaderTitle.component.jsx
function HeaderTitle (line 13) | function HeaderTitle(props) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/views/MonthYearView/MonthYearView.component.jsx
function MonthYearView (line 8) | function MonthYearView(props) {
FILE: packages/components/src/DateTimePickers/LegacyDateTimePickers/views/ViewLayout/ViewLayout.component.jsx
function ViewLayout (line 5) | function ViewLayout(props) {
FILE: packages/components/src/DateTimePickers/Time/Input/Input.component.jsx
function Input (line 11) | function Input(props) {
FILE: packages/components/src/DateTimePickers/Time/Manager/Manager.component.jsx
function TimeContextualManager (line 7) | function TimeContextualManager(props) {
FILE: packages/components/src/DateTimePickers/Time/Manager/Manager.component.test.jsx
constant DEFAULT_ID (line 8) | const DEFAULT_ID = 'DEFAULT_ID';
function TimeConsumerDiv (line 10) | function TimeConsumerDiv(props) {
function TimeConsumer (line 24) | function TimeConsumer(props) {
FILE: packages/components/src/DateTimePickers/Time/Picker/Picker.component.jsx
function Picker (line 7) | function Picker(props) {
FILE: packages/components/src/DateTimePickers/Time/time-extraction.js
function TimePickerException (line 6) | function TimePickerException(code, message) {
function pad (line 11) | function pad(num, size) {
function checkHours (line 22) | function checkHours(hours) {
function checkMinutes (line 35) | function checkMinutes(minutes) {
function checkSeconds (line 49) | function checkSeconds(seconds) {
function checkTime (line 62) | function checkTime(time) {
function strToTime (line 89) | function strToTime(strToParse, useSeconds) {
function timeToStr (line 108) | function timeToStr(time, useSeconds) {
function getTimeFormat (line 119) | function getTimeFormat(useSeconds) {
function extractTime (line 123) | function extractTime(selectedTime, useSeconds) {
FILE: packages/components/src/DateTimePickers/TimeZone/TimeZone.component.jsx
function TimeZone (line 7) | function TimeZone(props) {
FILE: packages/components/src/DateTimePickers/generator.js
function buildDateFnsLocale (line 12) | function buildDateFnsLocale() {
function buildDayNames (line 21) | function buildDayNames(firstDayOfweek = 1, t) {
function buildMonths (line 37) | function buildMonths(chunkSize, t) {
function buildYears (line 52) | function buildYears(middle, window = 3) {
FILE: packages/components/src/DateTimePickers/gesture/timePickerGesture.js
function focusOnTime (line 6) | function focusOnTime(containerRef) {
FILE: packages/components/src/DateTimePickers/hooks/useInputPickerHandlers.js
function useInputPickerHandlers (line 3) | function useInputPickerHandlers({
FILE: packages/components/src/DateTimePickers/pickers/CalendarPicker/CalendarPicker.component.jsx
class CalendarPicker (line 18) | class CalendarPicker extends Component {
method constructor (line 19) | constructor(props) {
method componentDidMount (line 48) | componentDidMount() {
method componentDidUpdate (line 55) | componentDidUpdate(prevProps) {
method componentWillUnmount (line 78) | componentWillUnmount() {
method onSelectDate (line 85) | onSelectDate(event, selectedDate) {
method onSelectCalendarMonthYear (line 92) | onSelectCalendarMonthYear(newCalendar, callback) {
method onSelectCalendarMonth (line 104) | onSelectCalendarMonth(event, monthIndex) {
method onSelectCalendarYear (line 109) | onSelectCalendarYear(event, year) {
method onClickToday (line 113) | onClickToday(event) {
method setAllowFocus (line 121) | setAllowFocus(value) {
method setView (line 125) | setView(isDateView) {
method submit (line 131) | submit(event, field) {
method render (line 138) | render() {
FILE: packages/components/src/DateTimePickers/pickers/DatePicker/DatePicker.component.jsx
class DatePicker (line 29) | class DatePicker extends PureComponent {
method constructor (line 30) | constructor(props) {
method isSelectedDate (line 39) | isSelectedDate(date) {
method isDisabledDate (line 43) | isDisabledDate(date) {
method isCurrentMonth (line 51) | isCurrentMonth(date) {
method isCurrentYear (line 55) | isCurrentYear(date) {
method isSelectedInCurrentCalendar (line 59) | isSelectedInCurrentCalendar() {
method isDateInCurrentCalendar (line 68) | isDateInCurrentCalendar(date) {
method isDateWithinRange (line 75) | isDateWithinRange(date) {
method isStartDate (line 85) | isStartDate(date) {
method isEndDate (line 95) | isEndDate(date) {
method selectDate (line 105) | selectDate(event, date, year, monthIndex) {
method render (line 116) | render() {
FILE: packages/components/src/DateTimePickers/pickers/DatePicker/DatePicker.test.jsx
function mockIsTodayWith (line 12) | function mockIsTodayWith(newToday) {
function getDisabledChecker (line 16) | function getDisabledChecker(disabledDates) {
FILE: packages/components/src/DateTimePickers/pickers/MonthPicker/MonthPicker.component.jsx
constant ROW_SIZE (line 10) | const ROW_SIZE = 3;
class MonthPicker (line 12) | class MonthPicker extends PureComponent {
method constructor (line 13) | constructor(props) {
method render (line 18) | render() {
FILE: packages/components/src/DateTimePickers/pickers/TimePicker/TimePicker.component.jsx
function isBefore (line 10) | function isBefore(a, b) {
function addInterval (line 21) | function addInterval({ hours, minutes, ...seconds }, interval = 60) {
function getOptions (line 35) | function getOptions(interval = 60, useSeconds) {
class TimePicker (line 48) | class TimePicker extends Component {
method constructor (line 62) | constructor(props) {
method componentDidMount (line 75) | componentDidMount() {
method onSelect (line 81) | onSelect(event, option, index) {
method scrollItemIntoView (line 94) | scrollItemIntoView(textInput) {
method updateHighlightIndex (line 109) | updateHighlightIndex(index) {
method render (line 120) | render() {
FILE: packages/components/src/DateTimePickers/pickers/YearPicker/YearPicker.component.jsx
constant YEAR_WINDOW_SIZE (line 11) | const YEAR_WINDOW_SIZE = 7;
constant YEAR_WINDOW_OVERFLOW_SIZE (line 12) | const YEAR_WINDOW_OVERFLOW_SIZE = 3;
class YearPicker (line 14) | class YearPicker extends Component {
method constructor (line 25) | constructor(props) {
method componentDidUpdate (line 36) | componentDidUpdate(prevProps) {
method onWheel (line 48) | onWheel(event) {
method getMiddleYear (line 61) | getMiddleYear() {
method scroll (line 66) | scroll(pace, callback) {
method render (line 75) | render() {
FILE: packages/components/src/DateTimePickers/shared/InputSizer/InputSizer.component.tsx
constant EXTRA_SPACE (line 3) | const EXTRA_SPACE = 5;
type InputSizerProps (line 12) | type InputSizerProps = {
function InputSizer (line 19) | function InputSizer({ placeholder, inputText, children, minWidth }: Inpu...
FILE: packages/components/src/DateTimePickers/shared/constants.js
constant DATE_INPUT_ERRORS (line 1) | const DATE_INPUT_ERRORS = [
constant TIME_INPUT_ERRORS (line 8) | const TIME_INPUT_ERRORS = [
FILE: packages/components/src/DateTimePickers/shared/error-messages.js
function getErrorMessage (line 3) | function getErrorMessage(key) {
FILE: packages/components/src/DateTimePickers/views/DateView/DateView.component.jsx
function euclideanModulo (line 20) | function euclideanModulo(dividend, divisor) {
class DateView (line 25) | class DateView extends PureComponent {
method constructor (line 47) | constructor(props) {
method incrementMonthIndex (line 54) | incrementMonthIndex(monthIncrement, callback) {
method render (line 69) | render() {
FILE: packages/components/src/DateTimePickers/views/HeaderTitle/HeaderTitle.component.jsx
function HeaderTitle (line 13) | function HeaderTitle(props) {
FILE: packages/components/src/DateTimePickers/views/MonthYearView/MonthYearView.component.jsx
function MonthYearView (line 8) | function MonthYearView(props) {
FILE: packages/components/src/DateTimePickers/views/ViewLayout/ViewLayout.component.tsx
function ViewLayout (line 5) | function ViewLayout(props: ViewLayoutProps) {
type HeaderProps (line 20) | type HeaderProps = {
type ViewLayoutProps (line 26) | type ViewLayoutProps = {
FILE: packages/components/src/Dialog/Dialog.component.jsx
function Dialog (line 16) | function Dialog({
FILE: packages/components/src/Drawer/Drawer.component.jsx
constant DEFAULT_TRANSITION_DURATION (line 23) | const DEFAULT_TRANSITION_DURATION = 350;
constant STYLES (line 25) | const STYLES = {
function DrawerAnimation (line 32) | function DrawerAnimation(props) {
function DrawerContainer (line 60) | function DrawerContainer({
function cancelActionComponent (line 96) | function cancelActionComponent(onCancelAction, getComponent) {
function renderSubtitleTag (line 117) | function renderSubtitleTag(subtitleTagLabel, subtitleTagTooltip, subtitl...
function SubtitleComponent (line 128) | function SubtitleComponent({ subtitle, ...rest }) {
function subtitleComponent (line 156) | function subtitleComponent(subtitle) {
function DrawerTitle (line 161) | function DrawerTitle({
function DrawerContent (line 256) | function DrawerContent({ children, className, ...rest }) {
function DrawerFooter (line 269) | function DrawerFooter({ children }) {
function combinedFooterActions (line 277) | function combinedFooterActions(onCancelAction, footerActions, activeTabI...
function Drawer (line 294) | function Drawer({
FILE: packages/components/src/Drawer/Drawer.stories.jsx
function scrollableContent (line 168) | function scrollableContent() {
function CustomDrawer (line 447) | function CustomDrawer() {
function CustomDrawer (line 512) | function CustomDrawer() {
function remove (line 578) | function remove(id) {
function remove (line 641) | function remove(id) {
FILE: packages/components/src/Drawer/Drawer.test.jsx
function getComponent (line 192) | function getComponent(name) {
function getComponent (line 224) | function getComponent(name) {
function getComponent (line 373) | function getComponent(name) {
FILE: packages/components/src/EditableText/EditableText.component.jsx
function EditableTextComponent (line 13) | function EditableTextComponent({ editMode, loading, inProgress, ...rest ...
FILE: packages/components/src/EditableText/InlineForm.component.jsx
class InlineForm (line 14) | class InlineForm extends Component {
method constructor (line 32) | constructor(props) {
method onChange (line 44) | onChange(event) {
method onCancel (line 51) | onCancel(event) {
method onKeyDown (line 58) | onKeyDown(event) {
method onSubmit (line 69) | onSubmit(event) {
method selectInput (line 76) | selectInput(input) {
method render (line 84) | render() {
FILE: packages/components/src/EditableText/PlainTextTitle.component.tsx
type PlainTextTitleProps (line 9) | type PlainTextTitleProps = {
type DataProps (line 21) | type DataProps = {
function PlainTextTitle (line 25) | function PlainTextTitle({
FILE: packages/components/src/Emphasis/Emphasis.component.jsx
function isNotEmpty (line 4) | function isNotEmpty(value) {
function escapeRegexCharacters (line 8) | function escapeRegexCharacters(str) {
function emphasiseAll (line 12) | function emphasiseAll(text, value) {
function Emphasis (line 41) | function Emphasis(props) {
FILE: packages/components/src/Enumeration/Enumeration.component.jsx
function EnumerationComponent (line 17) | function EnumerationComponent(props) {
FILE: packages/components/src/Enumeration/Enumeration.stories.jsx
constant ITEM_DEFAULT_HEIGHT (line 69) | const ITEM_DEFAULT_HEIGHT = 33;
function Default (line 388) | function Default() {
FILE: packages/components/src/Enumeration/Header/Header.component.jsx
function headerClasses (line 7) | function headerClasses() {
function getAction (line 14) | function getAction(action, index) {
function Header (line 46) | function Header({ headerDefault, required, label }) {
FILE: packages/components/src/Enumeration/Header/HeaderEnumeration.component.jsx
function HeaderEnumeration (line 13) | function HeaderEnumeration({
FILE: packages/components/src/Enumeration/Header/HeaderInput.component.jsx
function headerClasses (line 7) | function headerClasses(headerError) {
function headerErrorClasses (line 13) | function headerErrorClasses() {
function getAction (line 17) | function getAction(action, index, getInternalInputRef) {
function HeaderInput (line 41) | function HeaderInput({
FILE: packages/components/src/Enumeration/Header/HeaderSelected.component.jsx
function headerClasses (line 6) | function headerClasses() {
function getAction (line 13) | function getAction(action, index) {
function HeaderSelected (line 34) | function HeaderSelected({ headerSelected, nbItemsSelected }) {
FILE: packages/components/src/Enumeration/Items/EmptyListPlaceholder.component.jsx
function EmptyListPlaceholder (line 6) | function EmptyListPlaceholder({ displayMode, t }) {
FILE: packages/components/src/Enumeration/Items/Item/Item.component.jsx
function itemClasses (line 15) | function itemClasses(isSelected) {
function itemLabelClasses (line 24) | function itemLabelClasses(className) {
function itemDefaultActionsClasses (line 32) | function itemDefaultActionsClasses() {
function Item (line 40) | function Item({ id, item, searchCriteria, showCheckboxes, style, t }) {
FILE: packages/components/src/Enumeration/Items/Item/ItemEdit.component.jsx
function itemClasses (line 14) | function itemClasses(error) {
function itemErrorClasses (line 21) | function itemErrorClasses() {
function itemLabelClasses (line 25) | function itemLabelClasses() {
function itemEditActionsClasses (line 29) | function itemEditActionsClasses() {
class ItemEdit (line 33) | class ItemEdit extends Component {
method constructor (line 34) | constructor(props) {
method componentDidMount (line 43) | componentDidMount() {
method onKeyDown (line 47) | onKeyDown(event) {
method onActionClick (line 61) | onActionClick(event, action) {
method getAction (line 71) | getAction(action, index) {
method submit (line 87) | submit(event) {
method itemChange (line 95) | itemChange(event) {
method cancel (line 103) | cancel(event) {
method render (line 111) | render() {
FILE: packages/components/src/Enumeration/Items/Item/utils.js
function allIndexOf (line 6) | function allIndexOf(str, toSearch) {
function removeDuplicates (line 21) | function removeDuplicates(indexes, search) {
FILE: packages/components/src/Enumeration/Items/Items.component.jsx
constant DISPLAY_MODE_EDIT (line 12) | const DISPLAY_MODE_EDIT = 'DISPLAY_MODE_EDIT';
class Items (line 16) | class Items extends PureComponent {
method constructor (line 17) | constructor(props) {
method getItem (line 26) | getItem(item, index, style) {
method getRowHeight (line 89) | getRowHeight(args) {
method scrollEnumeration (line 94) | scrollEnumeration(event) {
method rowRenderer (line 112) | rowRenderer({
method render (line 119) | render() {
FILE: packages/components/src/Enumeration/Items/ItemsEnumeration.component.jsx
function ItemsEnumeration (line 6) | function ItemsEnumeration(props) {
FILE: packages/components/src/Enumeration/displayModes.js
constant DISPLAY_MODE_DEFAULT (line 1) | const DISPLAY_MODE_DEFAULT = 'DISPLAY_MODE_DEFAULT';
constant DISPLAY_MODE_ADD (line 2) | const DISPLAY_MODE_ADD = 'DISPLAY_MODE_ADD';
constant DISPLAY_MODE_SEARCH (line 3) | const DISPLAY_MODE_SEARCH = 'DISPLAY_MODE_SEARCH';
constant DISPLAY_MODE_EDIT (line 4) | const DISPLAY_MODE_EDIT = 'DISPLAY_MODE_EDIT';
constant DISPLAY_MODE_SELECTED (line 5) | const DISPLAY_MODE_SELECTED = 'DISPLAY_MODE_SELECTED';
FILE: packages/components/src/FilterBar/FilterBar.component.jsx
function forceBlur (line 16) | function forceBlur(event) {
function onKeyDown (line 20) | function onKeyDown(event, escAction, enterAction) {
function FilterInput (line 38) | function FilterInput(props) {
function FilterBar (line 114) | function FilterBar(props) {
FILE: packages/components/src/FocusManager/FocusManager.component.jsx
class FocusManager (line 14) | class FocusManager extends Component {
method render (line 35) | render() {
FILE: packages/components/src/FormatValue/FormatValue.component.jsx
constant REG_EXP_REPLACED_WHITE_SPACE_CHARACTERS (line 12) | const REG_EXP_REPLACED_WHITE_SPACE_CHARACTERS = /(\t| |\n)/g;
constant REG_EXP_CAPTUR_LINE_FEEDING (line 13) | const REG_EXP_CAPTUR_LINE_FEEDING = /(\n)/g;
constant REG_EXP_LINE_FEEDING (line 14) | const REG_EXP_LINE_FEEDING = /\n/;
constant REG_EXP_WHITE_SPACE_CHARACTERS (line 15) | const REG_EXP_WHITE_SPACE_CHARACTERS = /^\s+/;
function replaceCharacterByIcon (line 23) | function replaceCharacterByIcon(value, index, t) {
function isEmptyCharacter (line 92) | function isEmptyCharacter(value) {
constant SPLIT_REGEX (line 96) | const SPLIT_REGEX = [
function FormatValueComponent (line 102) | function FormatValueComponent({ value, className }) {
FILE: packages/components/src/GridLayout/Dashboard.stories.jsx
function TdsTileContent (line 14) | function TdsTileContent({ id }) {
function ViewSelector (line 59) | function ViewSelector() {
function ChartTile (line 90) | function ChartTile({ tile, id }) {
function TileWithAction (line 108) | function TileWithAction({ tile }) {
function GridContainer (line 169) | function GridContainer({ isLoading = false, skeletonConfiguration, isRes...
FILE: packages/components/src/GridLayout/Grid.component.jsx
constant MARGIN (line 15) | const MARGIN = 20;
constant DEFAULT_COLUMNS (line 17) | const DEFAULT_COLUMNS = {
constant DEFAULT_BREAKPOINTS (line 24) | const DEFAULT_BREAKPOINTS = {
function Grid (line 33) | function Grid({
FILE: packages/components/src/GridLayout/Tile/Body/TileBody.component.tsx
type BodyProps (line 5) | type BodyProps = {
function Body (line 9) | function Body({ children }: BodyProps) {
FILE: packages/components/src/GridLayout/Tile/Footer/TileFooter.component.tsx
type FooterProps (line 5) | type FooterProps = {
function Footer (line 9) | function Footer({ children }: FooterProps) {
FILE: packages/components/src/GridLayout/Tile/Header/TileHeader.component.tsx
type HeaderProps (line 5) | type HeaderProps = {
function Header (line 9) | function Header(props: HeaderProps) {
FILE: packages/components/src/GridLayout/Tile/Skeleton/SkeletonTile.component.tsx
function SkeletonTile (line 5) | function SkeletonTile() {
constant SKELETON_TILE_CONF (line 15) | const SKELETON_TILE_CONF = [
FILE: packages/components/src/GridLayout/Tile/Tile.component.test.tsx
type TestComponentProps (line 8) | type TestComponentProps = {
function TestComponent (line 12) | function TestComponent({ context }: TestComponentProps) {
function Consumer (line 21) | function Consumer() {
FILE: packages/components/src/GridLayout/Tile/Tile.component.tsx
function ignoreDragOnInput (line 12) | function ignoreDragOnInput(e: MouseEvent<HTMLDivElement>) {
type TileProps (line 18) | type TileProps = {
function Tile (line 23) | function Tile(props: TileProps) {
FILE: packages/components/src/GridLayout/Tile/context.ts
type TileContextType (line 3) | type TileContextType = {
function useTileContext (line 14) | function useTileContext() {
FILE: packages/components/src/GuidedTour/GuidedTour.component.jsx
function getTooltipContent (line 12) | function getTooltipContent({ header, body }) {
function formatSteps (line 24) | function formatSteps(steps) {
function GuidedTour (line 33) | function GuidedTour({
FILE: packages/components/src/GuidedTour/GuidedTour.stories.jsx
class ImportDemo (line 9) | class ImportDemo extends Component {
method render (line 29) | render() {
class GuidedTourContainer (line 49) | class GuidedTourContainer extends Component {
method render (line 68) | render() {
function getSteps (line 92) | function getSteps({ hideControls, showControls, t }) {
FILE: packages/components/src/HeaderBar/HeaderBar.component.jsx
function HeaderBar (line 25) | function HeaderBar(props) {
FILE: packages/components/src/HeaderBar/HeaderBar.stories.jsx
function AppSwitcherComponent (line 71) | function AppSwitcherComponent() {
function IntercomComponent (line 75) | function IntercomComponent() {
FILE: packages/components/src/HeaderBar/HeaderBar.test.jsx
function AppSwitcher (line 56) | function AppSwitcher() {
function Intercom (line 71) | function Intercom() {
FILE: packages/components/src/HeaderBar/primitives/AppNotification.component.jsx
function AppNotification (line 11) | function AppNotification({ getComponent, hasUnread, t, ...props }) {
FILE: packages/components/src/HeaderBar/primitives/CallToAction.component.jsx
function CallToAction (line 10) | function CallToAction({ getComponent, ...props }) {
FILE: packages/components/src/HeaderBar/primitives/Environment.component.jsx
function Environment (line 11) | function Environment({ getComponent, ...props }) {
FILE: packages/components/src/HeaderBar/primitives/GenericAction.component.jsx
function GenericAction (line 11) | function GenericAction({ getComponent, ...props }) {
FILE: packages/components/src/HeaderBar/primitives/Help.component.jsx
function Help (line 11) | function Help({ getComponent, t, ...props }) {
FILE: packages/components/src/HeaderBar/primitives/Information.component.jsx
function Information (line 12) | function Information({ getComponent, t, ...props }) {
FILE: packages/components/src/HeaderBar/primitives/Intercom.component.jsx
function Intercom (line 11) | function Intercom({ id, config, tooltipPlacement }) {
FILE: packages/components/src/HeaderBar/primitives/Logo.component.jsx
function Logo (line 11) | function Logo({ isFull, getComponent, t, ...props }) {
FILE: packages/components/src/HeaderBar/primitives/Search.component.jsx
function Search (line 11) | function Search({ getComponent, icon, ...props }) {
FILE: packages/components/src/HeaderBar/primitives/User.component.jsx
function User (line 11) | function User({ name, firstName, lastName, getComponent, t, ...rest }) {
FILE: packages/components/src/HttpError/HttpError.component.jsx
function getScopedClassName (line 10) | function getScopedClassName(scopedClassName = className) {
function HttpError (line 14) | function HttpError(props) {
FILE: packages/components/src/Inject/Inject.component.tsx
type NotFoundComponentProps (line 6) | type NotFoundComponentProps = {
function NotFoundComponent (line 13) | function NotFoundComponent({ error }: NotFoundComponentProps) {
type InjectedComponentType (line 17) | type InjectedComponentType = string | ComponentClass | FunctionComponent;
type GetComponentType (line 18) | type GetComponentType = (component: InjectedComponentType) => InjectedCo...
type InjectConfig (line 20) | type InjectConfig = {
type InjectProps (line 24) | type InjectProps = {
function Inject (line 33) | function Inject({ getComponent, component, ...props }: InjectProps) {
FILE: packages/components/src/JSONSchemaRenderer/JSONSchemaRenderer.component.jsx
constant CLASS_NAME (line 8) | const CLASS_NAME = 'json-schema-renderer';
function UnknownTypeException (line 29) | function UnknownTypeException(type) {
function InvalidSchemaException (line 39) | function InvalidSchemaException() {
function NullRenderer (line 50) | function NullRenderer() {
function TextRenderer (line 57) | function TextRenderer({ propertyKey, title, properties }) {
function PasswordRenderer (line 68) | function PasswordRenderer({ propertyKey, title }) {
function BooleanRenderer (line 82) | function BooleanRenderer({ propertyKey, title, properties }) {
function ArrayRenderer (line 96) | function ArrayRenderer({ propertyKey, title, properties }) {
function isHidden (line 118) | function isHidden(uiSchema, element) {
function isPassword (line 122) | function isPassword(uiSchema, element) {
function typeResolver (line 134) | function typeResolver(schema, uiSchema) {
function orderProperties (line 180) | function orderProperties(order, properties) {
function ObjectRenderer (line 200) | function ObjectRenderer({ propertyKey, title, uiSchema, schema, properti...
function JSONSchemaRenderer (line 231) | function JSONSchemaRenderer({ schema, className, ...props }) {
FILE: packages/components/src/Layout/Layout.component.jsx
constant DISPLAY_MODES (line 12) | const DISPLAY_MODES = {
constant TALEND_T7_THEME_APPS (line 16) | const TALEND_T7_THEME_APPS = ['portal', 'tdc', 'tdp', 'tds', 'tfd', 'tmc...
constant TALEND_T7_THEME_CLASSNAME (line 17) | const TALEND_T7_THEME_CLASSNAME = 't7';
function Layout (line 35) | function Layout({
FILE: packages/components/src/Layout/OneColumn/OneColumn.component.jsx
function OneColumn (line 14) | function OneColumn({ drawers, children, tabs, ...props }) {
FILE: packages/components/src/Layout/SkipLinks/SkipLinks.component.tsx
type SkipToProps (line 10) | type SkipToProps = {
function SkipTo (line 15) | function SkipTo({ href, label }: SkipToProps) {
type SkipLinksProps (line 25) | type SkipLinksProps = {
function SkipLinks (line 36) | function SkipLinks({ mainId, navigationId, t }: SkipLinksProps) {
FILE: packages/components/src/Layout/TwoColumns/TwoColumns.component.jsx
function TwoColumns (line 15) | function TwoColumns({ one, drawers, children, tabs, getComponent, ...pro...
FILE: packages/components/src/List/List.component.jsx
function ListToolbar (line 13) | function ListToolbar({
function List (line 125) | function List({
FILE: packages/components/src/List/List.stories.jsx
function MyCustomRow (line 8) | function MyCustomRow(props) {
function ListColumnChooser (line 21) | function ListColumnChooser({ list, ...rest }) {
function CellWithHello (line 38) | function CellWithHello({ cellData }) {
FILE: packages/components/src/List/ListComposition.stories.jsx
function CustomList (line 17) | function CustomList(props) {
FILE: packages/components/src/List/ListComposition/ColumnChooser/ColumnChooser.component.jsx
function ColumnChooser (line 5) | function ColumnChooser(props) {
FILE: packages/components/src/List/ListComposition/DisplayMode/ListDisplayMode.component.jsx
function ListDisplayMode (line 13) | function ListDisplayMode({ children, displayModesOptions, id, onChange, ...
FILE: packages/components/src/List/ListComposition/ItemsNumber/ItemsNumber.component.jsx
function ItemsNumber (line 4) | function ItemsNumber(props) {
FILE: packages/components/src/List/ListComposition/LazyLoadingList/LazyLoadingList.component.jsx
constant DEFAULT_THRESHOLD (line 8) | const DEFAULT_THRESHOLD = 5;
constant DEFAULT_MIN_BATCH_SIZE (line 9) | const DEFAULT_MIN_BATCH_SIZE = 20;
constant DEFAULT_DEBOUNCE_DELAY (line 10) | const DEFAULT_DEBOUNCE_DELAY = 0;
function LazyLoadingList (line 12) | function LazyLoadingList(props) {
FILE: packages/components/src/List/ListComposition/Manager/ListManager.component.jsx
function Manager (line 13) | function Manager({
FILE: packages/components/src/List/ListComposition/Manager/ListManager.component.test.jsx
function TestConsumer (line 10) | function TestConsumer(props) {
function ContextTestConsumer (line 27) | function ContextTestConsumer(props) {
FILE: packages/components/src/List/ListComposition/Manager/hooks/useCollectionActions.hook.js
function useCollectionActions (line 3) | function useCollectionActions(
FILE: packages/components/src/List/ListComposition/Manager/hooks/useCollectionActions.hook.test.jsx
function ActionComponent (line 5) | function ActionComponent({ collection, actions, persistentActions }) {
FILE: packages/components/src/List/ListComposition/Manager/hooks/useCollectionFilter.hook.js
function normalizeInput (line 5) | function normalizeInput(text) {
function defaultFilterFunction (line 22) | function defaultFilterFunction(value, textFilter) {
function filter (line 26) | function filter(collection, textFilter, filterFunctions, visibleColumns,...
FILE: packages/components/src/List/ListComposition/Manager/hooks/useCollectionFilter.hook.test.jsx
function FilterComponent (line 6) | function FilterComponent({
FILE: packages/components/src/List/ListComposition/Manager/hooks/useCollectionSelection.hook.js
function useCollectionSelection (line 3) | function useCollectionSelection(
FILE: packages/components/src/List/ListComposition/Manager/hooks/useCollectionSelection.hook.test.jsx
function SelectionComponent (line 7) | function SelectionComponent({ collection, initialSelectedIds, idKey, isS...
FILE: packages/components/src/List/ListComposition/Manager/hooks/useCollectionSort.hook.js
function getDefaultSortFunction (line 3) | function getDefaultSortFunction({ sortBy, isDescending }) {
function sort (line 16) | function sort(collection, sortParams, sortFunctions) {
function useCollectionSort (line 33) | function useCollectionSort(collection = [], initialSortParams = {}, sort...
FILE: packages/components/src/List/ListComposition/Manager/hooks/useCollectionSort.hook.test.jsx
function SortComponent (line 8) | function SortComponent({ collection, initialSortParams, sortFunctions, ....
FILE: packages/components/src/List/ListComposition/Manager/hooks/useColumnsVisibility.hook.js
function useColumnsVisibility (line 11) | function useColumnsVisibility(columns = [], initialVisibleColumns = [], ...
FILE: packages/components/src/List/ListComposition/Manager/hooks/useColumnsVisibility.hook.test.jsx
constant STORAGE_KEY (line 5) | const STORAGE_KEY = 'storage-key';
FILE: packages/components/src/List/ListComposition/SortBy/SortBy.component.jsx
function SortBy (line 41) | function SortBy({ id, options, onChange, value }) {
FILE: packages/components/src/List/ListComposition/TextFilter/TextFilter.component.jsx
function TextFilter (line 6) | function TextFilter(props) {
FILE: packages/components/src/List/ListComposition/Toolbar/ListToolbar.component.jsx
function ListToolbar (line 24) | function ListToolbar(props) {
FILE: packages/components/src/List/ListComposition/VList/VList.component.jsx
function VList (line 20) | function VList({ children, columnChooser, ...rest }) {
FILE: packages/components/src/List/ListComposition/constants.js
constant DISPLAY_MODE (line 1) | const DISPLAY_MODE = {
constant SORT (line 6) | const SORT = {
FILE: packages/components/src/List/ListComposition/context.js
function useListContext (line 6) | function useListContext() {
FILE: packages/components/src/List/ListComposition/context.test.jsx
function TestComponent (line 4) | function TestComponent() {
FILE: packages/components/src/List/ListToVirtualizedList/ListToVirtualizedList.component.jsx
function adaptOnSort (line 4) | function adaptOnSort(onChange) {
function HiddenHeader (line 16) | function HiddenHeader(props) {
function compareOrder (line 20) | function compareOrder(a, b) {
function ListToVirtualizedList (line 33) | function ListToVirtualizedList(props) {
FILE: packages/components/src/List/Toolbar/ColumnChooserButton/ColumnChooser/ColumnChooser.component.jsx
function ColumnChooser (line 24) | function ColumnChooser({
FILE: packages/components/src/List/Toolbar/ColumnChooserButton/ColumnChooserButton.component.jsx
function ColumnChooserButton (line 9) | function ColumnChooserButton({
FILE: packages/components/src/List/Toolbar/ColumnChooserButton/service/columnChooser.utils.js
function mergeWithColumnChooserCollection (line 19) | function mergeWithColumnChooserCollection(originalCollection, columnChoo...
function compareOrder (line 26) | function compareOrder(a, b) {
FILE: packages/components/src/List/Toolbar/DisplayModeToggle/DisplayModeToggle.component.jsx
function getLabel (line 13) | function getLabel(selected, t) {
function DisplayModeToggle (line 43) | function DisplayModeToggle({ id, displayModes, onChange, mode, t }) {
FILE: packages/components/src/List/Toolbar/ItemsNumber/ItemsNumber.component.jsx
function ItemsNumber (line 4) | function ItemsNumber({ id, totalItems, selected, label, labelSelected, t...
FILE: packages/components/src/List/Toolbar/Label/Label.component.jsx
function Label (line 4) | function Label({ htmlFor, text }) {
FILE: packages/components/src/List/Toolbar/Pagination/Pagination.component.jsx
constant FIRST (line 10) | const FIRST = 'first';
constant PREV (line 11) | const PREV = 'prev';
constant NEXT (line 12) | const NEXT = 'next';
constant LAST (line 13) | const LAST = 'last';
function getItemsPerPageTitle (line 15) | function getItemsPerPageTitle(option) {
function getMenuItem (line 22) | function getMenuItem(option, index) {
function Pagination (line 30) | function Pagination({ id, startIndex, itemsPerPage, totalResults, onChan...
FILE: packages/components/src/List/Toolbar/SelectAll/SelectAll.component.jsx
function SelectAll (line 8) | function SelectAll({ id, items, isSelected, onToggleAll }) {
FILE: packages/components/src/List/Toolbar/SelectSortBy/SelectSortBy.component.jsx
function SortByItem (line 12) | function SortByItem({ option, id, t, onSelect }) {
function SelectSortBy (line 38) | function SelectSortBy({ field, id, isDescending, onChange, options, t }) {
FILE: packages/components/src/List/Toolbar/Toolbar.component.jsx
function adaptActionsIds (line 21) | function adaptActionsIds(actions, parentId) {
function adaptLeftAndRightActions (line 36) | function adaptLeftAndRightActions(actions, parentId) {
function Toolbar (line 55) | function Toolbar({
FILE: packages/components/src/ListView/Header/Header.component.jsx
function headerClasses (line 11) | function headerClasses() {
function getAction (line 15) | function getAction(action, index) {
function renderActions (line 37) | function renderActions(headerDefault = []) {
function Header (line 44) | function Header({ headerDefault, headerLabel, labelProps, nbItemsSelecte...
FILE: packages/components/src/ListView/Header/HeaderInput.component.jsx
function headerClasses (line 12) | function headerClasses() {
function getAction (line 16) | function getAction(action, index) {
function HeaderInput (line 40) | function HeaderInput({ headerInput, onInputChange, inputPlaceholder, onA...
FILE: packages/components/src/ListView/Items/Item/Item.component.jsx
class Item (line 13) | class Item extends Component {
method componentDidUpdate (line 14) | componentDidUpdate(prevProps) {
method render (line 25) | render() {
FILE: packages/components/src/ListView/Items/Items.component.jsx
function pxToInt (line 24) | function pxToInt(sizeInPixels = '0') {
constant TOGGLE_ALL_ROW_HEIGHT (line 28) | const TOGGLE_ALL_ROW_HEIGHT = 40;
constant ROW_LINE_HEIGHT (line 29) | const ROW_LINE_HEIGHT = pxToInt(theme['row-height']);
constant ROW_VERTICAL_MARGIN (line 30) | const ROW_VERTICAL_MARGIN = pxToInt(theme['row-vertical-margin']);
constant ROW_HEIGHT (line 31) | const ROW_HEIGHT = ROW_LINE_HEIGHT + ROW_VERTICAL_MARGIN;
constant ROW_NESTED_INNER_MARGINS (line 32) | const ROW_NESTED_INNER_MARGINS =
class ItemsComponent (line 35) | class ItemsComponent extends PureComponent {
method constructor (line 36) | constructor(props) {
method getItemByIndex (line 51) | getItemByIndex(index) {
method getRowHeight (line 55) | getRowHeight({ index }) {
method getRowCount (line 87) | getRowCount() {
method oldGetRowHeight (line 94) | oldGetRowHeight({ index }) {
method rowRenderer (line 108) | rowRenderer(props) {
method renderToggleAllOrItem (line 137) | renderToggleAllOrItem(index, measure) {
method renderToggleAll (line 150) | renderToggleAll() {
method renderItem (line 170) | renderItem(item, index, measure) {
method render (line 203) | render() {
FILE: packages/components/src/ListView/ListView.component.jsx
constant DISPLAY_MODE_DEFAULT (line 11) | const DISPLAY_MODE_DEFAULT = 'DISPLAY_MODE_DEFAULT';
constant DISPLAY_MODE_SEARCH (line 12) | const DISPLAY_MODE_SEARCH = 'DISPLAY_MODE_SEARCH';
function listviewClasses (line 14) | function listviewClasses() {
function HeaderListView (line 18) | function HeaderListView(props) {
function ListView (line 56) | function ListView(props) {
FILE: packages/components/src/Loader/Loader.component.jsx
function Loader (line 8) | function Loader({ id, className, size = CircularProgress.SIZE.default }) {
FILE: packages/components/src/MultiSelect/Dropdown.container.jsx
function Dropdown (line 6) | function Dropdown(props) {
FILE: packages/components/src/MultiSelect/ItemOption.component.jsx
class ItemOptionRow (line 9) | class ItemOptionRow extends Component {
method getDerivedStateFromProps (line 10) | static getDerivedStateFromProps(props) {
method constructor (line 14) | constructor(props) {
method shouldComponentUpdate (line 19) | shouldComponentUpdate(nextProps, nextState) {
method render (line 29) | render() {
function ItemOption (line 67) | function ItemOption(props) {
FILE: packages/components/src/MultiSelect/ItemView.component.jsx
class ItemViewRow (line 6) | class ItemViewRow extends Component {
method getDerivedStateFromProps (line 7) | static getDerivedStateFromProps(props) {
method constructor (line 11) | constructor(props) {
method shouldComponentUpdate (line 16) | shouldComponentUpdate(nextProps, nextState) {
method render (line 26) | render() {
function ItemView (line 51) | function ItemView(props) {
FILE: packages/components/src/MultiSelect/MultiSelect.container.jsx
function initSelectedMap (line 20) | function initSelectedMap(selected) {
function isIn (line 27) | function isIn(element, container) {
class MultiSelect (line 37) | class MultiSelect extends Component {
method constructor (line 68) | constructor(props) {
method componentDidMount (line 80) | componentDidMount() {
method componentWillUnmount (line 84) | componentWillUnmount() {
method closeOnOutsideClick (line 88) | closeOnOutsideClick(event) {
method onInputFocus (line 94) | onInputFocus(event) {
method onInputKeyDown (line 101) | onInputKeyDown(event) {
method onClearAll (line 108) | onClearAll(event) {
method onSearchChange (line 112) | onSearchChange(event) {
method onRowClick (line 116) | onRowClick(event, action) {
method getSelectedMap (line 129) | getSelectedMap() {
method getSelectedItems (line 138) | getSelectedItems() {
method getFilteredOptions (line 145) | getFilteredOptions() {
method getListItems (line 177) | getListItems() {
method createNew (line 204) | createNew(event) {
method selectAll (line 215) | selectAll(event) {
method selectOne (line 232) | selectOne(event, id) {
method updateSelection (line 242) | updateSelection(event, selected) {
method render (line 252) | render() {
FILE: packages/components/src/MultiSelect/MultiSelect.stories.jsx
class Photos (line 5) | class Photos extends Component {
method constructor (line 6) | constructor(props) {
method componentDidMount (line 14) | componentDidMount() {
method render (line 25) | render() {
FILE: packages/components/src/MultiSelect/constants.js
constant SELECT_ALL_VALUE (line 1) | const SELECT_ALL_VALUE = 'select-all';
constant CREATE_NEW_VALUE (line 2) | const CREATE_NEW_VALUE = 'create-new';
FILE: packages/components/src/Notification/Notification.component.jsx
constant TYPES (line 13) | const TYPES = {
function CloseButtonComponent (line 19) | function CloseButtonComponent(props) {
function MessageAction (line 47) | function MessageAction({ action }) {
function Message (line 63) | function Message({ notification }) {
function TimerBar (line 82) | function TimerBar({ type, autoLeaveError }) {
function Notification (line 94) | function Notification({ notification, leaveFn, ...props }) {
class Timer (line 137) | class Timer {
method constructor (line 138) | constructor(callback, delay) {
method pause (line 146) | pause() {
method resume (line 151) | resume() {
method cancel (line 157) | cancel() {
class Registry (line 162) | class Registry {
method constructor (line 163) | constructor() {
method isRegistered (line 167) | isRegistered(notification) {
method register (line 171) | register(notification, timer) {
method pause (line 175) | pause(notification) {
method resume (line 181) | resume(notification) {
method cancel (line 187) | cancel(notification) {
function NotificationsContainer (line 196) | function NotificationsContainer({
FILE: packages/components/src/Notification/Notification.stories.jsx
class NotificationWrapper (line 6) | class NotificationWrapper extends Component {
method constructor (line 7) | constructor() {
method leaveFn (line 189) | leaveFn(notification) {
method render (line 197) | render() {
FILE: packages/components/src/ObjectViewer/JSONLike/JSONLike.component.jsx
function noop (line 15) | function noop() {}
constant VALIDE_TYPES (line 17) | const VALIDE_TYPES = ['number', 'string', 'bool'];
constant COMPLEX_TYPES (line 18) | const COMPLEX_TYPES = ['object', 'array'];
constant ARRAY_ABSTRACT (line 20) | const ARRAY_ABSTRACT = '[...]';
constant OBJECT_ABSTRACT (line 21) | const OBJECT_ABSTRACT = '{...}';
function NativeValue (line 35) | function NativeValue({ data, edit, className, onChange, jsonpath, wrap, ...
function getJSONPath (line 77) | function getJSONPath(key, prefix, type) {
function getName (line 84) | function getName(name, t) {
class LineItem (line 96) | class LineItem extends Component {
method getTabIndex (line 97) | getTabIndex(isSelected) {
method isSelected (line 108) | isSelected() {
method render (line 113) | render() {
function getDataInfo (line 213) | function getDataInfo(data, tupleLabel) {
function abstracter (line 256) | function abstracter(acc, item) {
function getDataAbstract (line 283) | function getDataAbstract(data) {
function UntranslatedComplexItem (line 296) | function UntranslatedComplexItem(props) {
function Item (line 431) | function Item(props) {
function JSONLike (line 538) | function JSONLike({ onSubmit, className, style, ...props }) {
FILE: packages/components/src/ObjectViewer/List/List.component.jsx
function List (line 6) | function List({ data, ...props }) {
FILE: packages/components/src/ObjectViewer/List/List.test.jsx
method get (line 8) | get() {
FILE: packages/components/src/ObjectViewer/ObjectViewer.component.jsx
constant DISPLAY_MODES (line 10) | const DISPLAY_MODES = {
function ObjectViewer (line 17) | function ObjectViewer({ displayMode, dataSchema, data, ...props }) {
FILE: packages/components/src/ObjectViewer/ObjectViewer.test.jsx
method get (line 8) | get() {
FILE: packages/components/src/ObjectViewer/Table/Table.component.jsx
function getKeys (line 14) | function getKeys(data, isFlat) {
function getAbsolutePath (line 21) | function getAbsolutePath(index, key, flat) {
function getHeaders (line 28) | function getHeaders(keys, isFlat, baseId) {
function buildContentHeaders (line 53) | function buildContentHeaders(headersDefinitions, schema) {
function Table (line 75) | function Table({ flat, data, title, ...props }) {
FILE: packages/components/src/ObjectViewer/Table/Table.test.jsx
method get (line 14) | get() {
FILE: packages/components/src/ObjectViewer/convertDate.js
constant DATASCHEMATYPES (line 3) | const DATASCHEMATYPES = [
function convertDate (line 31) | function convertDate(data, toConvert) {
function checkDataSchemaToConvert (line 51) | function checkDataSchemaToConvert(dataSchema) {
FILE: packages/components/src/ObjectViewer/toflat.js
function toFlat (line 9) | function toFlat(data, buffer = {}, path = '$') {
FILE: packages/components/src/OverlayTrigger/OverlayTrigger.component.jsx
function getPlacement (line 20) | function getPlacement(initialOverlayElement, triggerElement, currentPlac...
class OverlayTrigger (line 31) | class OverlayTrigger extends Component {
method constructor (line 32) | constructor(props) {
method onExited (line 44) | onExited() {
method onEntering (line 50) | onEntering(initialOverlayElement) {
method setTriggerElement (line 67) | setTriggerElement(element) {
method render (line 71) | render() {
FILE: packages/components/src/OverlayTrigger/OverlayTrigger.forked.jsx
function isOneOf (line 18) | function isOneOf(one, of) {
class OverlayTrigger (line 101) | class OverlayTrigger extends Component {
method constructor (line 102) | constructor(props, context) {
method componentWillUnmount (line 120) | componentWillUnmount() {
method handleDelayedHide (line 126) | handleDelayedHide() {
method handleDelayedShow (line 150) | handleDelayedShow() {
method handleHide (line 174) | handleHide() {
method handleMouseOverOut (line 183) | handleMouseOverOut(handler, e, relatedNative) {
method handleToggle (line 192) | handleToggle() {
method hide (line 200) | hide() {
method makeOverlay (line 204) | makeOverlay(overlay, props) {
method show (line 212) | show() {
method renderOverlay (line 216) | renderOverlay(overlay, props) {
method render (line 220) | render() {
FILE: packages/components/src/OverlayTrigger/overlay.js
constant OVERLAY_PLACEMENT_TOP (line 1) | const OVERLAY_PLACEMENT_TOP = 'top';
constant OVERLAY_PLACEMENT_BOTTOM (line 2) | const OVERLAY_PLACEMENT_BOTTOM = 'bottom';
constant BODY (line 3) | const BODY = 'BODY';
constant OVERLAY_CONTAINER_CLASS_NAME (line 4) | const OVERLAY_CONTAINER_CLASS_NAME = 'tc-dropdown-container';
constant REACT_BOOSTRAP_OVERLAY_CLASS_NAME (line 5) | const REACT_BOOSTRAP_OVERLAY_CLASS_NAME = 'popover';
function getOverlayElement (line 13) | function getOverlayElement(innerElement) {
function getContainerElement (line 27) | function getContainerElement(overlayElement) {
function canInsertElementInWrapper (line 46) | function canInsertElementInWrapper(insertRect, containerRect) {
function getReverseElement (line 59) | function getReverseElement(triggerRect, overlayRect, initialPlacement) {
function getAdaptedPlacement (line 89) | function getAdaptedPlacement(triggerRect, overlayRect, containerRect, cu...
FILE: packages/components/src/OverlayTrigger/overlay.test.js
function getDOMRect (line 10) | function getDOMRect(top, bottom, height) {
FILE: packages/components/src/PieChart/PieChart.component.jsx
function decorateWithTooltip (line 14) | function decorateWithTooltip(tooltip, label, tooltipPlacement, Component...
function getPieChartComponent (line 28) | function getPieChartComponent(onClick) {
function PieChart (line 32) | function PieChart({ tooltip, tooltipPlacement, ...props }) {
FILE: packages/components/src/PieChart/PieChart.stories.jsx
class WithLayout (line 181) | class WithLayout extends Component {
method constructor (line 182) | constructor() {
method changeState (line 188) | changeState() {
method render (line 194) | render() {
FILE: packages/components/src/PieChart/PieChartButton.component.jsx
function decorateWithOverlay (line 20) | function decorateWithOverlay(
function wrapMouseEvent (line 53) | function wrapMouseEvent(mouseEvent, overlayComponent, label, rest, model) {
function PieChartButtonComponent (line 64) | function PieChartButtonComponent({
FILE: packages/components/src/PieChart/PieChartButton.test.jsx
function OverlayCmp (line 152) | function OverlayCmp() {
FILE: packages/components/src/PieChart/PieChartIcon.component.jsx
constant PIECHART_CONSTANTS (line 12) | const PIECHART_CONSTANTS = {
constant PIECHART_SIZES (line 24) | const PIECHART_SIZES = {
function getAngle (line 47) | function getAngle(percentage) {
function getShowedValue (line 56) | function getShowedValue(model, index) {
function sortElements (line 68) | function sortElements(a, b) {
function getEmptyPartCircle (line 79) | function getEmptyPartCircle(values, size, minimumPercentage) {
function distributePercentages (line 109) | function distributePercentages(values, minimumPercentage, amountToSubtra...
function setMinimumPercentage (line 143) | function setMinimumPercentage(model, minimumPercentage) {
function getPercentageToIndex (line 166) | function getPercentageToIndex(values, index) {
function getPercentageAndPrefix (line 179) | function getPercentageAndPrefix(percentage) {
function getLabel (line 194) | function getLabel(hideLabel, labelValue, t) {
function getCircle (line 213) | function getCircle(value, index, values, size) {
function getDisplaySize (line 239) | function getDisplaySize(size, display) {
function PieChartIconComponent (line 263) | function PieChartIconComponent({
FILE: packages/components/src/Progress/Progress.component.jsx
function normalize (line 8) | function normalize(percent) {
function Progress (line 18) | function Progress({ id, percent, tooltip, infinite, contained }) {
FILE: packages/components/src/QualityBar/QualityBar.component.tsx
type QualityBarProps (line 7) | type QualityBarProps = QualityCommonProps & {
FILE: packages/components/src/RadarChart/RadarChart.component.jsx
function RadarChart (line 34) | function RadarChart({
function LabelWithClick (line 97) | function LabelWithClick(props) {
function Dot (line 124) | function Dot(props) {
function DotWithClick (line 145) | function DotWithClick(props) {
FILE: packages/components/src/RatioBar/RatioBar.component.tsx
type RatioBarProps (line 6) | type RatioBarProps = {
FILE: packages/components/src/ResourceList/Resource/Resource.component.jsx
constant FLAGS (line 16) | const FLAGS = {
function getDateLabel (line 21) | function getDateLabel(t, date) {
function getAuthorLabel (line 28) | function getAuthorLabel(t, author, date) {
function Resource (line 36) | function Resource({ parent, index, style, className, as, t, ...rest }) {
FILE: packages/components/src/ResourceList/ResourceList.component.jsx
function isFiltered (line 19) | function isFiltered({ state } = {}) {
function ResourceList (line 23) | function ResourceList({
FILE: packages/components/src/ResourceList/ResourceList.stories.jsx
function Preparation (line 180) | function Preparation({ name, createdBy, path }) {
function Pipeline (line 211) | function Pipeline({ name, createdBy, usedAs }) {
function FilteredResourceList (line 247) | function FilteredResourceList(props) {
FILE: packages/components/src/ResourceList/Toolbar/NameFilter/NameFilter.component.jsx
function NameFilter (line 12) | function NameFilter({ label, value, onChange }) {
FILE: packages/components/src/ResourceList/Toolbar/SortOptions/OrderChooser/OrderChooser.component.jsx
function OrderChooser (line 11) | function OrderChooser({ icon, asc, label, tooltipPlacement, onClick, ......
FILE: packages/components/src/ResourceList/Toolbar/SortOptions/SortOptions.component.jsx
constant TYPES (line 10) | const TYPES = {
constant ORDERS (line 15) | const ORDERS = {
function inverse (line 20) | function inverse(order) {
function SortOptions (line 27) | function SortOptions({ t, types, onChange, orders }) {
FILE: packages/components/src/ResourceList/Toolbar/StateFilter/StateFilter.component.jsx
constant TYPES (line 10) | const TYPES = {
function StateFilter (line 16) | function StateFilter({ t, types, onChange, selection, favorites, certifi...
FILE: packages/components/src/ResourceList/Toolbar/Toolbar.component.jsx
function Toolbar (line 13) | function Toolbar({ name, nameFilerAsInput, sort, state }) {
FILE: packages/components/src/ResourcePicker/ResourcePicker.component.jsx
function ResourcePicker (line 11) | function ResourcePicker(props) {
FILE: packages/components/src/ResourcePicker/index.js
constant TOOLBAR_OPTIONS (line 4) | const TOOLBAR_OPTIONS = {
FILE: packages/components/src/Rich/Error/RichError.component.jsx
function RichError (line 7) | function RichError(props) {
FILE: packages/components/src/Rich/HeaderTitle/HeaderTitle.component.jsx
function HeaderTitle (line 6) | function HeaderTitle(props) {
FILE: packages/components/src/SidePanel/SidePanel.component.jsx
constant DOCKED_MIN_WIDTH (line 17) | const DOCKED_MIN_WIDTH = '3.75rem';
constant LARGE_DOCKED_MIN_WIDTH (line 18) | const LARGE_DOCKED_MIN_WIDTH = '4.375rem';
function getInitialWidth (line 20) | function getInitialWidth(docked, large) {
function SidePanel (line 48) | function SidePanel({
FILE: packages/components/src/SidePanel/SidePanel.stories.jsx
class WithLayout (line 201) | class WithLayout extends Component {
method constructor (line 202) | constructor() {
method render (line 207) | render() {
FILE: packages/components/src/Skeleton/Skeleton.component.tsx
constant TYPES (line 9) | const TYPES = {
constant SIZES (line 16) | const SIZES = {
function getTranslatedType (line 23) | function getTranslatedType(t: TFunction, type: (typeof TYPES)[keyof type...
type SkeletonProps (line 37) | type SkeletonProps = {
function Skeleton (line 56) | function Skeleton({
FILE: packages/components/src/Skeleton/Skeleton.test.jsx
function t (line 5) | function t(msgid, options = {}) {
FILE: packages/components/src/Slider/Slider.component.tsx
function isIconsAvailable (line 29) | function isIconsAvailable(icons: string[]) {
function getSelectedIconPosition (line 36) | function getSelectedIconPosition(
function getCaptionsValue (line 55) | function getCaptionsValue(captionsLength: number, min: number, max: numb...
function renderActions (line 70) | function renderActions(
function renderIcons (line 96) | function renderIcons(icons: string[], min: number, max: number, value?: ...
function renderTextCaptions (line 125) | function renderTextCaptions(
function getCaption (line 152) | function getCaption(
function getHandle (line 179) | function getHandle(captionsFormat: ((value?: number) => string) | undefi...
type SliderCaptionAction (line 197) | type SliderCaptionAction =
type SliderProps (line 213) | type SliderProps = {
FILE: packages/components/src/Status/Status.component.jsx
constant STATUS (line 34) | const STATUS = {
function getbsStyleFromStatus (line 43) | function getbsStyleFromStatus(status) {
function renderIcon (line 62) | function renderIcon(status, icon, progress) {
function renderLabel (line 83) | function renderLabel(status, label) {
function Status (line 97) | function Status({ status, label, icon, actions, progress, tooltip }) {
FILE: packages/components/src/Stepper/Stepper.component.jsx
constant SHOW_COMPLETED_TRANSITION_TIMER (line 14) | const SHOW_COMPLETED_TRANSITION_TIMER = 1000;
constant TRANSITION_STATE (line 16) | const TRANSITION_STATE = {
constant LOADING_STEP_STATUSES (line 22) | const LOADING_STEP_STATUSES = {
function getStatusText (line 55) | function getStatusText(t, status) {
function getIconByStatus (line 70) | function getIconByStatus(status) {
function changeTransitionState (line 88) | function changeTransitionState(newTransitionState, setTransitionState, t...
function showStep (line 103) | function showStep(t, step, index, steps) {
function transition (line 137) | function transition(transitionState, timer = 0) {
function Stepper (line 152) | function Stepper({ steps, title, renderActions, children }) {
FILE: packages/components/src/Stepper/Stepper.stories.jsx
function renderActions (line 18) | function renderActions(isInError) {
function GetSteps (line 119) | function GetSteps(props) {
FILE: packages/components/src/Stepper/StepperTransition.component.jsx
constant DEFAULT_TRANSITION_DURATION (line 4) | const DEFAULT_TRANSITION_DURATION = 300;
function StepperTransition (line 21) | function StepperTransition({ children, active }) {
FILE: packages/components/src/SubHeaderBar/SubHeaderBar.component.jsx
function SubHeaderBarActions (line 19) | function SubHeaderBarActions({ children, tag, left, right, center, hasRi...
function CustomInject (line 48) | function CustomInject({ getComponent, left, right, center, nowrap, ...pr...
function SubHeaderBar (line 66) | function SubHeaderBar({
FILE: packages/components/src/SubHeaderBar/SubHeaderBar.test.jsx
function getComponent (line 9) | function getComponent(name) {
FILE: packages/components/src/SubHeaderBar/TitleSubHeader/SubTitle.component.jsx
function DefaultSubTitle (line 11) | function DefaultSubTitle({ subTitle, subTitleProps }) {
function SubTitle (line 26) | function SubTitle({
FILE: packages/components/src/SubHeaderBar/TitleSubHeader/TitleSubHeader.component.jsx
function TitleSubHeader (line 16) | function TitleSubHeader({
FILE: packages/components/src/TabBar/TabBar.component.jsx
function TabBar (line 25) | function TabBar(props) {
FILE: packages/components/src/TabBar/Tabs.stories.jsx
function generateChildId (line 117) | function generateChildId(key, kind) {
function renderContent (line 147) | function renderContent() {
FILE: packages/components/src/Toggle/LabelToggle/LabelToggle.component.jsx
function LabelToggle (line 27) | function LabelToggle({ id, values, name, value, onChange, disabled, auto...
FILE: packages/components/src/Toggle/Toggle.component.jsx
function Toggle (line 19) | function Toggle({ className, ...props }) {
FILE: packages/components/src/TooltipTrigger/Tooltip.stories.jsx
function generateButtonWithTooltip (line 8) | function generateButtonWithTooltip(label, tooltipPlacement) {
FILE: packages/components/src/TooltipTrigger/TooltipTrigger.component.jsx
constant DEFAULT_OFFSET_X (line 9) | const DEFAULT_OFFSET_X = 300;
constant DEFAULT_OFFSET_Y (line 10) | const DEFAULT_OFFSET_Y = 50;
function getAdjustedTooltipPlacement (line 19) | function getAdjustedTooltipPlacement(tooltipPlacement, dimensions, offse...
function getTop (line 52) | function getTop(placement, dimensions) {
function getLeft (line 62) | function getLeft(placement, dimensions, tooltipWidth) {
function getBottom (line 81) | function getBottom(placement, dimensions) {
function TooltipTrigger (line 102) | function TooltipTrigger({
FILE: packages/components/src/TreeView/TreeView.component.jsx
function TreeView (line 47) | function TreeView(props) {
FILE: packages/components/src/TreeView/TreeViewItem/TreeViewItem.component.jsx
constant BASE_PADDING (line 12) | const BASE_PADDING = 30;
constant CARET_WIDTH (line 13) | const CARET_WIDTH = 12;
constant PADDING (line 14) | const PADDING = 20;
function getItemIcon (line 23) | function getItemIcon(iconName = 'talend-folder', isOpened) {
function TreeViewIcon (line 34) | function TreeViewIcon({ icon, isOpened }) {
class TreeViewItem (line 69) | class TreeViewItem extends Component {
method constructor (line 103) | constructor(props) {
method onMouseEnter (line 114) | onMouseEnter() {
method onMouseLeave (line 120) | onMouseLeave() {
method getTabIndex (line 126) | getTabIndex() {
method hasChildren (line 137) | hasChildren() {
method isSelected (line 141) | isSelected() {
method isOpened (line 152) | isOpened() {
method renderTreeViewChildren (line 160) | renderTreeViewChildren() {
method renderIconAction (line 186) | renderIconAction({ action, id, ...actionProps }) {
method render (line 207) | render() {
FILE: packages/components/src/TreeView/TreeViewItem/TreeViewItem.test.jsx
function getIcon (line 88) | function getIcon() {
FILE: packages/components/src/Typeahead/Typeahead.component.jsx
function getItems (line 22) | function getItems(items, dataFeature) {
function Typeahead (line 42) | function Typeahead({ onToggle, icon, position, docked, items, ...rest }) {
FILE: packages/components/src/Typeahead/Typeahead.component.renderers.jsx
function renderInputComponent (line 19) | function renderInputComponent(props) {
function renderItemsContainerFactory (line 93) | function renderItemsContainerFactory(
function renderSectionTitle (line 193) | function renderSectionTitle(section) {
function renderItem (line 210) | function renderItem(item, { value, valueId, ...rest }) {
FILE: packages/components/src/Typeahead/Typeahead.test.jsx
function getHeaders (line 6) | function getHeaders() {
FILE: packages/components/src/VirtualizedList/CellActions/ActionsColumn.component.jsx
function ActionsColumn (line 11) | function ActionsColumn() {
FILE: packages/components/src/VirtualizedList/CellActions/CellActions.component.jsx
constant LIST_ACTION_CLASS_NAME (line 9) | const LIST_ACTION_CLASS_NAME = 'tc-list-actions';
class CellActions (line 14) | class CellActions extends Component {
method shouldComponentUpdate (line 15) | shouldComponentUpdate(nextProps) {
method render (line 19) | render() {
FILE: packages/components/src/VirtualizedList/CellBadge/BadgeColumn.component.jsx
function BadgeColumn (line 11) | function BadgeColumn() {
FILE: packages/components/src/VirtualizedList/CellBadge/CellBadge.component.jsx
class CellBadge (line 8) | class CellBadge extends Component {
method shouldComponentUpdate (line 9) | shouldComponentUpdate(nextProps) {
method render (line 17) | render() {
FILE: packages/components/src/VirtualizedList/CellBoolean/BooleanColumn.component.jsx
function BooleanColumn (line 11) | function BooleanColumn() {
FILE: packages/components/src/VirtualizedList/CellBoolean/CellBoolean.component.jsx
constant DISPLAY_MODE (line 13) | const DISPLAY_MODE = {
class CellBoolean (line 21) | class CellBoolean extends Component {
method shouldComponentUpdate (line 22) | shouldComponentUpdate(nextProps) {
method render (line 26) | render() {
FILE: packages/components/src/VirtualizedList/CellCheckbox/CellCheckbox.component.jsx
class CellCheckbox (line 11) | class CellCheckbox extends Component {
method shouldComponentUpdate (line 12) | shouldComponentUpdate(nextProps) {
method render (line 21) | render() {
FILE: packages/components/src/VirtualizedList/CellCheckbox/CheckboxColumn.component.jsx
function CheckboxColumn (line 11) | function CheckboxColumn() {
FILE: packages/components/src/VirtualizedList/CellDatetime/CellDatetime.component.jsx
constant DATE_TIME_FORMAT (line 22) | const DATE_TIME_FORMAT = 'yyyy-MM-dd HH:mm:ss';
function computeValue (line 24) | function computeValue(cellData, columnData, t) {
function getTooltipLabel (line 52) | function getTooltipLabel(cellData, columnData, t) {
class CellDatetimeComponent (line 83) | class CellDatetimeComponent extends Component {
method shouldComponentUpdate (line 84) | shouldComponentUpdate(nextProps) {
method render (line 92) | render() {
FILE: packages/components/src/VirtualizedList/CellDatetime/DatetimeColumn.component.jsx
function DatetimeColumn (line 11) | function DatetimeColumn() {
FILE: packages/components/src/VirtualizedList/CellIconText/CellIconText.component.jsx
constant DEFAULT_TOOLTIP_PLACEMENT (line 10) | const DEFAULT_TOOLTIP_PLACEMENT = 'top';
function getCellIcon (line 12) | function getCellIcon({ cellData, rowData, columnData = {} }) {
function getCellLabel (line 20) | function getCellLabel({ cellData }) {
function getCellLabelTooltip (line 27) | function getCellLabelTooltip({ cellData, rowData, columnData = {} }) {
function getCellIconTooltip (line 38) | function getCellIconTooltip({ cellData, rowData, columnData = {} }) {
class CellIconText (line 52) | class CellIconText extends Component {
method shouldComponentUpdate (line 53) | shouldComponentUpdate(nextProps) {
method render (line 57) | render() {
FILE: packages/components/src/VirtualizedList/CellIconText/IconTextColumn.component.jsx
function IconTextColumn (line 11) | function IconTextColumn() {
FILE: packages/components/src/VirtualizedList/CellLabel/CellLabel.component.jsx
function CellLabel (line 7) | function CellLabel({ cellData, rowIndex }) {
FILE: packages/components/src/VirtualizedList/CellLabel/LabelColumn.component.jsx
function LabelColumn (line 11) | function LabelColumn() {
FILE: packages/components/src/VirtualizedList/CellLink/CellLink.component.jsx
function CellLink (line 9) | function CellLink({ cellData, rowData, columnData, className }) {
FILE: packages/components/src/VirtualizedList/CellLink/LinkColumn.component.jsx
function LinkColumn (line 11) | function LinkColumn() {
FILE: packages/components/src/VirtualizedList/CellMappedData/CellMappedData.component.jsx
function CellMappedData (line 7) | function CellMappedData(props) {
FILE: packages/components/src/VirtualizedList/CellMappedData/MappedDataColumn.component.jsx
function MappedDataColumn (line 11) | function MappedDataColumn() {
FILE: packages/components/src/VirtualizedList/CellQualityBar/QualityBarColumn.component.jsx
function QualityBarColumn (line 11) | function QualityBarColumn() {
FILE: packages/components/src/VirtualizedList/CellTextIcon/CellWithIcon.component.jsx
class CellWithIcon (line 11) | class CellWithIcon extends Component {
method shouldComponentUpdate (line 12) | shouldComponentUpdate(nextProps) {
method render (line 20) | render() {
FILE: packages/components/src/VirtualizedList/CellTextIcon/TextIconColumn.component.jsx
function TextIconColumn (line 11) | function TextIconColumn() {
FILE: packages/components/src/VirtualizedList/CellTitle/CellTitle.component.jsx
class CellTitle (line 23) | class CellTitle extends Component {
method shouldComponentUpdate (line 24) | shouldComponentUpdate(nextProps) {
method render (line 35) | render() {
FILE: packages/components/src/VirtualizedList/CellTitle/CellTitle.test.jsx
function getComponent (line 245) | function getComponent() {
FILE: packages/components/src/VirtualizedList/CellTitle/CellTitleActions.component.jsx
constant MAX_DIRECT_NB_ICON (line 17) | const MAX_DIRECT_NB_ICON = 4;
function isDropdown (line 19) | function isDropdown(actionDef) {
function renderActionsGroup (line 23) | function renderActionsGroup(getComponent) {
function getLargeDisplayActions (line 36) | function getLargeDisplayActions(actions, getComponent) {
function getDefaultDisplayActions (line 48) | function getDefaultDisplayActions(actions, getComponent, t, id) {
function getPersistentActions (line 119) | function getPersistentActions(actions, getComponent) {
function isAvailable (line 135) | function isAvailable(actionDef) {
function CellTitleActionsComponent (line 139) | function CellTitleActionsComponent({
FILE: packages/components/src/VirtualizedList/CellTitle/CellTitleInput.component.jsx
class CellTitleInput (line 12) | class CellTitleInput extends Component {
method constructor (line 13) | constructor(props) {
method componentDidMount (line 20) | componentDidMount() {
method onKeyUp (line 24) | onKeyUp(event) {
method onBlur (line 30) | onBlur(event) {
method onSubmit (line 34) | onSubmit(event) {
method render (line 42) | render() {
FILE: packages/components/src/VirtualizedList/CellTitle/CellTitleSelector.component.jsx
function CellTitleSelector (line 13) | function CellTitleSelector(props) {
FILE: packages/components/src/VirtualizedList/CellTitle/TitleColumn.component.jsx
function TitleColumn (line 13) | function TitleColumn() {
FILE: packages/components/src/VirtualizedList/Content.component.jsx
function DefaultRenderer (line 6) | function DefaultRenderer({ cellData, columnData, rowData }) {
function Content (line 44) | function Content() {
FILE: packages/components/src/VirtualizedList/HeaderCheckbox/HeaderCheckbox.component.jsx
function HeaderCheckbox (line 12) | function HeaderCheckbox({ columnData }) {
FILE: packages/components/src/VirtualizedList/HeaderIcon/HeaderIcon.component.jsx
function HeaderIcon (line 12) | function HeaderIcon({ label, sortBy, dataKey, sortDirection, columnData ...
FILE: packages/components/src/VirtualizedList/HeaderResizable/HeaderResizable.component.jsx
class HeaderResizable (line 27) | class HeaderResizable extends Component {
method render (line 56) | render() {
FILE: packages/components/src/VirtualizedList/ListGrid/ListGrid.component.jsx
function ListGrid (line 13) | function ListGrid(props) {
FILE: packages/components/src/VirtualizedList/ListTable/ListTable.component.jsx
function SkeletonRow (line 19) | function SkeletonRow({ columns }) {
function ListTableRowRenderer (line 27) | function ListTableRowRenderer(props) {
function ListTable (line 42) | function ListTable(props) {
FILE: packages/components/src/VirtualizedList/NoRows/NoRows.component.jsx
function NoRowsComponent (line 10) | function NoRowsComponent(props) {
FILE: packages/components/src/VirtualizedList/RendererSelector.component.jsx
function getRowRenderer (line 18) | function getRowRenderer(type, renderers = {}) {
class RendererSelector (line 34) | class RendererSelector extends Component {
method constructor (line 35) | constructor(props) {
method noRowsRenderer (line 40) | noRowsRenderer() {
method render (line 48) | render() {
FILE: packages/components/src/VirtualizedList/RendererSelector.test.jsx
function NoRowsRenderer (line 40) | function NoRowsRenderer() {
function Custom (line 248) | function Custom() {
FILE: packages/components/src/VirtualizedList/RowCollapsiblePanel/RowCollapsiblePanel.component.jsx
function LoadingCollapsiblePanel (line 23) | function LoadingCollapsiblePanel() {
class RowCollapsiblePanel (line 49) | class RowCollapsiblePanel extends Component {
method constructor (line 50) | constructor(props) {
method onToggle (line 55) | onToggle(event) {
method render (line 62) | render() {
FILE: packages/components/src/VirtualizedList/RowLarge/RowLarge.component.jsx
constant SKELETON_SIZES (line 29) | const SKELETON_SIZES = [Skeleton.SIZES.xlarge, Skeleton.SIZES.large, Ske...
constant LOADING_ROW_COLUMNS_COUNT (line 30) | const LOADING_ROW_COLUMNS_COUNT = 3;
function RandomSizeSkeleton (line 32) | function RandomSizeSkeleton() {
function LargeInnerRowLoading (line 38) | function LargeInnerRowLoading({ columns, rows }) {
class RowLarge (line 66) | class RowLarge extends Component {
method constructor (line 67) | constructor(props) {
method renderKeyValue (line 72) | renderKeyValue(field, fieldIndex) {
method render (line 96) | render() {
FILE: packages/components/src/VirtualizedList/RowLarge/RowThemes.js
constant ROW_CLASS_NAME (line 4) | const ROW_CLASS_NAME = 'tc-list-large';
FILE: packages/components/src/VirtualizedList/RowSelection/RowSelection.component.jsx
function getRowSelectionRenderer (line 9) | function getRowSelectionRenderer(
FILE: packages/components/src/VirtualizedList/RowSelection/RowSelection.test.jsx
function RowRenderer (line 4) | function RowRenderer(props) {
function isSelected (line 10) | function isSelected(rowData) {
function isActive (line 13) | function isActive(rowData) {
function getRowData (line 20) | function getRowData() {
function getRowData (line 33) | function getRowData() {
function getRowData (line 55) | function getRowData() {
function getRowData (line 78) | function getRowData() {
FILE: packages/components/src/VirtualizedList/VirtualizedList.component.jsx
function VirtualizedList (line 20) | function VirtualizedList(props) {
FILE: packages/components/src/VirtualizedList/VirtualizedList.stories.jsx
function MyCustomRow (line 11) | function MyCustomRow(props) {
function NoRowsRenderer (line 24) | function NoRowsRenderer() {
function CollapsiblePanels (line 398) | function CollapsiblePanels(props) {
FILE: packages/components/src/VirtualizedList/event/rowclick.js
function decorateRowDoubleClick (line 7) | function decorateRowDoubleClick(onRowDoubleClick) {
function decorateRowClick (line 27) | function decorateRowClick(onRowClick) {
FILE: packages/components/src/VirtualizedList/utils/constants.js
constant SORT_BY (line 12) | const SORT_BY = {
constant SELECTION_MODE (line 17) | const SELECTION_MODE = {
FILE: packages/components/src/VirtualizedList/utils/gridrow.js
function getCellRenderer (line 16) | function getCellRenderer(field) {
function getCellType (line 24) | function getCellType(field) {
function getId (line 32) | function getId(parent) {
function getColumnData (line 40) | function getColumnData(field) {
function getDataKey (line 48) | function getDataKey(field) {
function getLabel (line 56) | function getLabel(field) {
function getRowData (line 65) | function getRowData(parent, index) {
function getCellData (line 75) | function getCellData(field, parent, index) {
function extractSpecialFields (line 87) | function extractSpecialFields(parent) {
function renderCell (line 102) | function renderCell(index, parent, field, type) {
FILE: packages/components/src/VirtualizedList/utils/gridrow.test.jsx
function cellRenderer (line 202) | function cellRenderer(props) {
FILE: packages/components/src/VirtualizedList/utils/resizable.js
constant MINIMUM_COLUMN_WIDTH (line 6) | const MINIMUM_COLUMN_WIDTH = 40;
FILE: packages/components/src/VirtualizedList/utils/tablerow.jsx
function insertSelectionConfiguration (line 14) | function insertSelectionConfiguration(props) {
function toColumns (line 65) | function toColumns({ id, theme, children, columnsWidths, getRowState }) {
FILE: packages/components/src/VirtualizedList/virtualizedListContext.jsx
function useVirtualizedListContext (line 6) | function useVirtualizedListContext() {
function ConsumerVirtualizedList (line 16) | function ConsumerVirtualizedList({ children }) {
FILE: packages/components/src/WithDrawer/WithDrawer.component.jsx
function WithDrawer (line 26) | function WithDrawer({ drawers, children, ...rest }) {
FILE: packages/components/src/constants.js
constant I18N_DOMAIN_COMPONENTS (line 1) | const I18N_DOMAIN_COMPONENTS = 'tui-components';
constant CIRCULAR_PROGRESS_SIZE (line 3) | const CIRCULAR_PROGRESS_SIZE = {
FILE: packages/components/src/i18n/DateFnsLocale/formatters.js
function buildFormattingTokensRegExp (line 35) | function buildFormattingTokensRegExp(formatters) {
function masculineOrdinal (line 55) | function masculineOrdinal() {
function feminineOrdinal (line 59) | function feminineOrdinal() {
function buildFormatLocale (line 63) | function buildFormatLocale(t) {
FILE: packages/components/src/i18n/DateFnsLocale/locale.js
function getLocale (line 9) | function getLocale() {
FILE: packages/components/src/theme.ts
type THEMES (line 3) | type THEMES = Record<string, string>;
type ParamType (line 4) | type ParamType = string | string[] | Record<string, boolean> | undefined;
function getTheme (line 25) | function getTheme(...cssThemes: THEMES[]) {
FILE: packages/components/src/translate.js
function getI18nInstance (line 12) | function getI18nInstance() {
function getDefaultT (line 19) | function getDefaultT() {
function getCurrentLanguage (line 27) | function getCurrentLanguage() {
FILE: packages/components/src/utils/getPropsFrom.js
constant NATIVE_PROPS (line 1) | const NATIVE_PROPS = [
constant NATIVE_PROPS_GROUPS (line 13) | const NATIVE_PROPS_GROUPS = ['aria-', 'data-'];
function extractComponentProps (line 15) | function extractComponentProps(Component, props) {
function extractNativeProps (line 28) | function extractNativeProps(props) {
function getPropsFrom (line 41) | function getPropsFrom(Component, props) {
FILE: packages/components/src/utils/getTabBarBadgeLabel.js
function getTabBarBadgeLabel (line 1) | function getTabBarBadgeLabel(label) {
FILE: packages/components/src/wrap.tsx
type ToTextProps (line 7) | type ToTextProps = {
type Component (line 11) | type Component = Record<string, any> & {
function toText (line 17) | function toText(props: ToTextProps) {
constant OMIT_PROPS (line 24) | const OMIT_PROPS = [
constant BLACK_LISTED_ATTR (line 36) | const BLACK_LISTED_ATTR = [
constant COMPONENT_EXCEPTIONS (line 41) | const COMPONENT_EXCEPTIONS = {
function isNotBlackListedAttr (line 45) | function isNotBlackListedAttr(attr: string) {
type WrapperProps (line 49) | type WrapperProps = {
function wrap (line 56) | function wrap(Component: Component, key: string) {
FILE: packages/components/test/storageMock.js
class StorageMock (line 1) | class StorageMock {
method constructor (line 2) | constructor() {
method mock (line 6) | mock(fn, name) {
method mockGet (line 13) | mockGet(getItem) {
method mockSet (line 17) | mockSet(setItem) {
method mockRemove (line 21) | mockRemove(removeItem) {
method clear (line 25) | clear(name) {
method clearAll (line 28) | clearAll() {
FILE: packages/containers/.storybook/cmfModule/components.js
function ComponentOverlay (line 6) | function ComponentOverlay(props) {
FILE: packages/containers/.storybook/cmfModule/reducers.js
constant TOGGLE_FLAG_TYPE (line 3) | const TOGGLE_FLAG_TYPE = 'TOGGLE_FLAG_TYPE';
function flagToggleReducer (line 5) | function flagToggleReducer(state = {}, { type, flagId }) {
function appReducer (line 14) | function appReducer(state = {}, action) {
function routerReducer (line 21) | function routerReducer(state = {}, action) {
FILE: packages/containers/src/AboutDialog/AboutDialog.container.jsx
constant DEFAULT_STATE (line 9) | const DEFAULT_STATE = new Map({
class AboutDialog (line 13) | class AboutDialog extends RComponent {
method constructor (line 22) | constructor(props) {
method toggle (line 28) | toggle() {
method hide (line 32) | hide() {
method render (line 36) | render() {
FILE: packages/containers/src/Action/Action.connect.js
function mapStateToProps (line 4) | function mapStateToProps(state, ownProps) {
function mergeProps (line 19) | function mergeProps(stateProps, dispatchProps, ownProps) {
FILE: packages/containers/src/ActionBar/ActionBar.connect.js
function getAction (line 16) | function getAction(actionId) {
function mapStateToProps (line 23) | function mapStateToProps(state, { actionIds }) {
function mergeProps (line 40) | function mergeProps(stateProps, dispatchProps, ownProps) {
FILE: packages/containers/src/ActionButton/ActionButton.connect.jsx
function mapStateToProps (line 5) | function mapStateToProps(state, ownProps) {
function mergeProps (line 21) | function mergeProps(stateProps, dispatchProps, ownProps) {
function ContainerActionButton (line 27) | function ContainerActionButton(props) {
FILE: packages/containers/src/ActionDropdown/ActionDropdown.connect.jsx
function mapStateToProps (line 9) | function mapStateToProps(state, ownProps = {}) {
function mergeProps (line 29) | function mergeProps(stateProps, dispatchProps, ownProps) {
function ContainerActionDropdown (line 40) | function ContainerActionDropdown({ items, ...props }) {
FILE: packages/containers/src/ActionDropdown/ActionDropdown.stories.jsx
function Default (line 14) | function Default({ onSelect }) {
FILE: packages/containers/src/ActionFile/ActionFile.connect.jsx
function mapStateToProps (line 5) | function mapStateToProps(state, ownProps) {
function mergeProps (line 20) | function mergeProps(stateProps, dispatchProps, ownProps) {
function ContainerActionFile (line 27) | function ContainerActionFile({ onChange, ...props }) {
FILE: packages/containers/src/ActionIconToggle/ActionIconToggle.connect.jsx
function mapStateToProps (line 5) | function mapStateToProps(state, ownProps) {
function mergeProps (line 21) | function mergeProps(stateProps, dispatchProps, ownProps) {
function ContainerActionIconToggle (line 27) | function ContainerActionIconToggle(props) {
FILE: packages/containers/src/ActionIconToggle/ActionIconToggle.stories.jsx
function mapStateToProps (line 12) | function mapStateToProps(state) {
function MyDrawer (line 18) | function MyDrawer({ opened }) {
FILE: packages/containers/src/ActionSplitDropdown/ActionSplitDropdown.connect.jsx
function mapStateToProps (line 7) | function mapStateToProps(state, { actionId, actionIds } = {}) {
function mergeProps (line 27) | function mergeProps(stateProps, dispatchProps, ownProps) {
function ContainerActionSplitDropdown (line 39) | function ContainerActionSplitDropdown(props) {
FILE: packages/containers/src/ActionSplitDropdown/ActionSplitDropdown.stories.jsx
function Default (line 7) | function Default() {
FILE: packages/containers/src/Actions/Actions.connect.js
function mapStateToProps (line 11) | function mapStateToProps(state, { actionIds, names, actions }) {
function mergeProps (line 20) | function mergeProps(stateProps, dispatchProps, ownProps) {
FILE: packages/containers/src/Actions/Actions.stories.jsx
function Default (line 42) | function Default() {
FILE: packages/containers/src/AppLoader/AppLoader.connect.jsx
function AppLoaderContainer (line 25) | function AppLoaderContainer({ loading, renderer = appLoaderRenderer, chi...
function mapStateToProps (line 52) | function mapStateToProps(state, ownProps) {
FILE: packages/containers/src/AppLoader/AppLoader.saga.js
constant ACTION_CREATORS (line 5) | const ACTION_CREATORS = 'actionCreators';
constant SAGAS (line 6) | const SAGAS = 'sagas';
constant WAIT_FOR (line 7) | const WAIT_FOR = 'waitFor';
constant TAKE_ACTION (line 8) | const TAKE_ACTION = 'takeAction';
FILE: packages/containers/src/AppLoader/AppLoader.stories.jsx
constant ICON (line 5) | const ICON =
FILE: packages/containers/src/Breadcrumbs/Breadcrumbs.connect.jsx
constant DEFAULT_STATE (line 5) | const DEFAULT_STATE = Map();
function ContainerBreadcrumbs (line 7) | function ContainerBreadcrumbs({ state = DEFAULT_STATE, dispatchActionCre...
FILE: packages/containers/src/Breadcrumbs/Breadcrumbs.stories.jsx
function Default (line 21) | function Default() {
FILE: packages/containers/src/ComponentForm/ComponentForm.actions.js
constant COMPONENT_FORM_SET_DIRTY (line 1) | const COMPONENT_FORM_SET_DIRTY = 'COMPONENT_FORM_SET_DIRTY';
function setComponentFormDirtyState (line 8) | function setComponentFormDirtyState(componentId, dirty) {
FILE: packages/containers/src/ComponentForm/ComponentForm.component.jsx
constant TO_OMIT (line 12) | const TO_OMIT = [
constant DEFAULT_STATE (line 23) | const DEFAULT_STATE = new Map({
function toJS (line 31) | function toJS(immutableObject) {
function resolveNameForTitleMap (line 45) | function resolveNameForTitleMap({ schema, properties, value }) {
class TCompForm (line 87) | class TCompForm extends Component {
method constructor (line 88) | constructor(props) {
method componentDidUpdate (line 104) | componentDidUpdate(prevProps) {
method onChange (line 125) | onChange(_, payload) {
method onTrigger (line 146) | onTrigger(event, payload) {
method onSubmit (line 174) | onSubmit(_, properties) {
method onReset (line 186) | onReset() {
method setupTrigger (line 199) | setupTrigger(props) {
method getUISpec (line 213) | getUISpec() {
method render (line 221) | render() {
FILE: packages/containers/src/ComponentForm/ComponentForm.saga.test.jsx
function getReduxStore (line 174) | function getReduxStore() {
FILE: packages/containers/src/ComponentForm/ComponentForm.sagas.js
function getReduxState (line 72) | function getReduxState() {
function checkFormComponentId (line 103) | function checkFormComponentId(componentId, actionType) {
FILE: packages/containers/src/ComponentForm/ComponentForm.selectors.js
function isComponentFormDirty (line 3) | function isComponentFormDirty(state, componentName) {
FILE: packages/containers/src/ComponentForm/ComponentForm.test.jsx
function trigger (line 11) | function trigger() {
FILE: packages/containers/src/ComponentForm/fields/MultiSelect/MultiSelect.component.jsx
class MultiSelectField (line 8) | class MultiSelectField extends Component {
method constructor (line 9) | constructor(props) {
method componentDidMount (line 18) | componentDidMount() {
method onTrigger (line 22) | onTrigger(event) {
method onTriggerResult (line 32) | onTriggerResult(event, trigger) {
method onChange (line 41) | onChange(event, selected) {
method getTitleMap (line 50) | getTitleMap() {
method getChildrenErrorMessage (line 68) | getChildrenErrorMessage() {
method render (line 81) | render() {
FILE: packages/containers/src/ComponentForm/fields/MultiSelect/displayMode/TextMode.component.jsx
function renderItem (line 6) | function renderItem(props) {
function MultiSelectTextMode (line 17) | function MultiSelectTextMode(props) {
FILE: packages/containers/src/ComponentForm/fields/NameResolver/NameResolver.component.jsx
function withNameResolver (line 4) | function withNameResolver(WrappedComponent) {
FILE: packages/containers/src/ComponentForm/kit/createTriggers.js
constant DEFAULT_HEADERS (line 27) | const DEFAULT_HEADERS = {
function passthroughTrigger (line 32) | function passthroughTrigger({ error, trigger, body }) {
function getPathWithArrayIndex (line 46) | function getPathWithArrayIndex(specPath, schema) {
function extractParameters (line 78) | function extractParameters(parameters, properties, schema) {
function createCacheKey (line 99) | function createCacheKey(trigger) {
function toJSON (line 108) | function toJSON(resp) {
function toQueryParam (line 123) | function toQueryParam(obj) {
function createTriggers (line 131) | function createTriggers({
FILE: packages/containers/src/ComponentForm/kit/defaultRegistry.js
function getNewErrors (line 32) | function getNewErrors(errors, schema, errorMessage) {
function validation (line 48) | function validation({ schema, body, errors = {} }) {
function schemaReducer (line 53) | function schemaReducer(acc, entry) {
function updateSchema (line 68) | function updateSchema({ schema, body, properties, trigger, errors }) {
function suggestions (line 94) | function suggestions({ body }) {
function extractErrorMessage (line 107) | function extractErrorMessage(error) {
function onError (line 126) | function onError({ errors, error, schema }) {
function updateProperties (line 153) | function updateProperties({ body, trigger, properties }) {
FILE: packages/containers/src/ComponentForm/kit/flatten.js
function step (line 18) | function step(anything, key, payload, options = {}) {
function flatten (line 68) | function flatten(obj, options) {
FILE: packages/containers/src/ConfirmDialog/ConfirmDialog.connect.js
function mapStateToProps (line 5) | function mapStateToProps(state, props, cmfProps) {
FILE: packages/containers/src/ConfirmDialog/ConfirmDialog.container.jsx
constant DEFAULT_STATE (line 8) | const DEFAULT_STATE = new Map({
function ConfirmDialog (line 13) | func
Copy disabled (too large)
Download .json
Condensed preview — 4582 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (17,241K chars).
[
{
"path": ".changeset/README.md",
"chars": 510,
"preview": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that wo"
},
{
"path": ".changeset/config.json",
"chars": 359,
"preview": "{\n \"$schema\": \"https://unpkg.com/@changesets/config@1.6.0/schema.json\",\n \"changelog\": \"@changesets/cli/changelog\",\n \""
},
{
"path": ".editorconfig",
"chars": 322,
"preview": "# http://editorconfig.org\nroot = true\n[*]\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_"
},
{
"path": ".github/ISSUE_TEMPLATE/architecture_decision_record.md",
"chars": 693,
"preview": "---\nname: Architecture Decision Record\nabout: Create an architecture decision record to capture an important architectur"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 834,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 595,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 1125,
"preview": "**What is the problem this PR is trying to solve?**\n\n**What is the chosen solution to this problem?**\n\n**Please check if"
},
{
"path": ".github/actions/lint-merge-report/action.yml",
"chars": 485,
"preview": "name: 'Lint merge report'\ndescription: 'Merge eslint and stylelint reports filtered by git diff'\nauthor: 'Talend'\ninputs"
},
{
"path": ".github/actions/lint-merge-report/merge-lint-reports.mjs",
"chars": 2881,
"preview": "#!/usr/bin/env node\n/* eslint-disable no-console */\nimport { spawn } from 'child_process';\nimport fs from 'fs';\nimport p"
},
{
"path": ".github/actions/setup-node/action.yml",
"chars": 1027,
"preview": "name: 'Setup nodejs'\ndescription: 'Setup nodejs'\nauthor: 'Talend'\ninputs:\n NPM_TOKEN:\n description: 'Token used for "
},
{
"path": ".github/copilot-instructions.md",
"chars": 13828,
"preview": "# Talend/UI — AI Coding Instructions\n\n## Repository Overview\n\nThis is **Talend/UI**, a Yarn workspaces monorepo containi"
},
{
"path": ".github/dependabot.yml",
"chars": 698,
"preview": "version: 2\nupdates:\n - package-ecosystem: \"npm\"\n directory: \"/\"\n schedule:\n interval: \"weekly\"\n ignore:\n "
},
{
"path": ".github/workflows/changeset.yml",
"chars": 2642,
"preview": "name: Changeset (Release)\n\non:\n push:\n branches:\n - master\n\npermissions:\n contents: write\n deployments: read\n"
},
{
"path": ".github/workflows/clean-demo.yml",
"chars": 849,
"preview": "name: Delete PR folder in gh-pages\non:\n pull_request:\n types: [closed]\n\npermissions:\n contents: write\n pull-reques"
},
{
"path": ".github/workflows/demo.yml",
"chars": 2424,
"preview": "name: Demo CI\non:\n push:\n branches:\n - master\n\npermissions:\n contents: write\n pull-requests: write\n statuses"
},
{
"path": ".github/workflows/dependencies.yml",
"chars": 1436,
"preview": "name: Upgrade dependencies\n\non:\n workflow_dispatch:\n schedule:\n - cron: \"0 10 * * WED\"\n\npermissions:\n contents: wr"
},
{
"path": ".github/workflows/icons.yml",
"chars": 2008,
"preview": "name: Download icons from Figma\n\non:\n repository_dispatch:\n workflow_dispatch:\n\npermissions:\n contents: write\n deplo"
},
{
"path": ".github/workflows/pr-demo.yml",
"chars": 3286,
"preview": "name: PR Demo CI\non:\n pull_request:\n\npermissions:\n contents: write\n pull-requests: write\n statuses: write\n checks: "
},
{
"path": ".github/workflows/pr-lint.yml",
"chars": 1575,
"preview": "name: PR lint\n\non:\n pull_request:\n\npermissions:\n contents: write\n deployments: read\n pull-requests: write # needed t"
},
{
"path": ".github/workflows/pr-test.yml",
"chars": 2302,
"preview": "name: PR tests\n\non:\n pull_request:\n\n# This allows a subsequently queued workflow run to interrupt previous runs\nconcurr"
},
{
"path": ".github/workflows/pre-release.yml",
"chars": 1837,
"preview": "name: pre-release\n\non:\n pull_request:\n types:\n - labeled\n\njobs:\n integration-publish:\n if: github.event.pul"
},
{
"path": ".github/workflows/visual-testing.yml",
"chars": 2213,
"preview": "name: Visual testing\n\non:\n workflow_dispatch:\n pull_request:\n # By default, a workflow only runs when a pull_reques"
},
{
"path": ".github/workflows/yarn-deduplicate.yml",
"chars": 1518,
"preview": "name: yarn-deduplicate\n\non:\n pull_request:\n paths:\n - \"yarn.lock\"\n\n# This allows a subsequently queued workflow"
},
{
"path": ".gitignore",
"chars": 655,
"preview": "/.static\n# Log files #\n*.log\n\n# Mac OS index files #\n.DS_Store\n\n# Eclipse project files #\n.project\n.settings\nbin/\n# Inte"
},
{
"path": ".husky/pre-commit",
"chars": 62,
"preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\nnpm run lint-staged\n"
},
{
"path": ".nojekyll",
"chars": 0,
"preview": ""
},
{
"path": ".npmignore",
"chars": 596,
"preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\n\n# Runtime data\npids\n*.pid\n*.seed\n\n# Directory for instrumented libs generated by jscov"
},
{
"path": ".npmrc",
"chars": 45,
"preview": "@talend:registry=https://npm.pkg.github.com/\n"
},
{
"path": ".prettierignore",
"chars": 140,
"preview": ".changeset\n.github\n.husky\n.idea\n.surge\nbuild\ndist\nnode_modules\n__fixtures__\ntools/scripts-config-storybook-lib/.storyboo"
},
{
"path": ".prettierrc.js",
"chars": 70,
"preview": "module.exports = {\n\t...require('@talend/scripts-config-prettier'),\n};\n"
},
{
"path": ".sass-lint.yml",
"chars": 3025,
"preview": "options:\n merge-default-rules: false\n# formatter: html\n# output-file: 'linters/sass-lint.html'\n\n# File Options\nfiles:"
},
{
"path": ".semgrepignore",
"chars": 1353,
"preview": "# Items added to this file will be ignored by Semgrep.\n#\n# This file uses .gitignore syntax:\n#\n# To ignore a file anywhe"
},
{
"path": ".tool-versions",
"chars": 28,
"preview": "nodejs 24.14.0\nyarn 1.22.22\n"
},
{
"path": ".vscode/settings.json",
"chars": 305,
"preview": "{\n \"prettier.prettierPath\": \"./node_modules/prettier/index.cjs\",\n \"eslint.workingDirectories\": [\n {\n \"pattern\""
},
{
"path": "CONTRIBUTING.md",
"chars": 370,
"preview": "# Contributing to the project\n\n[Contribution guide](https://github.com/Talend/tools/blob/master/tools-root-github/CONTRI"
},
{
"path": "I18n.md",
"chars": 3468,
"preview": "# I18n\n\nUI uses [react-i18n](https://react.i18next.com/) to make the components internationalizable. This is based on [i"
},
{
"path": "LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 1754,
"preview": "# UI\n\nThat repository was created in an effort to simplify the development of Talend's front-end stack.\n\n## Goals\n\n- Sin"
},
{
"path": "SECURITY.md",
"chars": 835,
"preview": "# Security Policy\n\n## Supported Versions\n\nWe use `changeset` to provide versioning for our packages with fixes, features"
},
{
"path": "babel.config.js",
"chars": 97,
"preview": "// this file is needed by vscode\nmodule.exports = {\n\textends: '@talend/scripts-config-babel',\n};\n"
},
{
"path": "dependencies-latest.txt",
"chars": 14675,
"preview": "yarn run v1.22.22\n$ /home/runner/work/ui/ui/node_modules/.bin/talend-upgrade-deps --latest --dry\n\ncheck versions of /hom"
},
{
"path": "docs/adr-2024-04-add-support-to-esm.md",
"chars": 3284,
"preview": "# ADR: Add support to ECMAScript Modules (ESM)\n\n## Context\n\nOur build and bundling setup currently uses CommonJS modules"
},
{
"path": "docs/adr-composition-vs-api.md",
"chars": 9199,
"preview": "# CSS Modules\n\n## Composition vs closed component APIs\n\n## Problems and definitions\n\n**Composition** is what we do when "
},
{
"path": "docs/adr-css-modules.md",
"chars": 2000,
"preview": "# CSS Modules\n\n[^1]: tl;dr.\n\n## Context\n\n[Styled Components](https://styled-components.com/) are great for managing a de"
},
{
"path": "docs/adr-data-test.md",
"chars": 3370,
"preview": "# Use [data-testid] attributes for generic automated tests\n\n## Context\n\nQuality Assurance teams perform automated tests "
},
{
"path": "docs/adr-dependencies.md",
"chars": 3498,
"preview": "# Usage of dependencies, peerDependencies, devDependencies in package.json\n\n## Context\n\nDependencies are specified using"
},
{
"path": "docs/adr-rework-talend-scripts.md",
"chars": 1415,
"preview": "# Rework Talend scripts\n\n## Context\n\nIt would be nide to add a new preset for node applications.\nWhile creating it, it w"
},
{
"path": "eslint.config.mjs",
"chars": 68,
"preview": "import config from '@talend/eslint-config';\n\nexport default config;\n"
},
{
"path": "fork/bootstrap-sass/.gitignore",
"chars": 282,
"preview": "*.gem\n.sass-cache\nbootstrap.css\nbootstrap-responsive.css\nGemfile.lock\n*.gemfile.lock\n.rvmrc\n.rbenv-version\n\n# Ignore bun"
},
{
"path": "fork/bootstrap-sass/CHANGELOG.md",
"chars": 10169,
"preview": "# Changelog\n\n## 5.6.2\n\n### Patch Changes\n\n- 4408b98: chore: upgrade dependencies\n\n## 5.6.1\n\n### Patch Changes\n\n- 6181519"
},
{
"path": "fork/bootstrap-sass/CONTRIBUTING.md",
"chars": 3468,
"preview": "# Contributing to bootstrap-sass\n\n## Asset Changes\n\nAny changes to `bootstrap-sass` assets (scss, javascripts, fonts) sh"
},
{
"path": "fork/bootstrap-sass/LICENSE",
"chars": 1130,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2011-2016 Twitter, Inc\nCopyright (c) 2011-2016 The Bootstrap Authors\n\nPermission is"
},
{
"path": "fork/bootstrap-sass/README.md",
"chars": 12236,
"preview": "# Bootstrap 3 for Sass\n\nNote: this is a fork for [Talend/ui](https://github.com/Talend/ui) maintainance reasons. We fix "
},
{
"path": "fork/bootstrap-sass/assets/images/.keep",
"chars": 0,
"preview": ""
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap/affix.js",
"chars": 4961,
"preview": "/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://get"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap/alert.js",
"chars": 2336,
"preview": "/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://get"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap/button.js",
"chars": 3834,
"preview": "/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://ge"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap/carousel.js",
"chars": 7292,
"preview": "/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap/collapse.js",
"chars": 6031,
"preview": "/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js",
"chars": 4782,
"preview": "/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap/modal.js",
"chars": 10614,
"preview": "/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://get"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap/popover.js",
"chars": 3445,
"preview": "/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://g"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js",
"chars": 4717,
"preview": "/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https:/"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap/tab.js",
"chars": 3920,
"preview": "/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbo"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js",
"chars": 21137,
"preview": "/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://g"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap/transition.js",
"chars": 1839,
"preview": "/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https:"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap-sprockets.js",
"chars": 381,
"preview": "//= require ./bootstrap/affix\n//= require ./bootstrap/alert\n//= require ./bootstrap/button\n//= require ./bootstrap/carou"
},
{
"path": "fork/bootstrap-sass/assets/javascripts/bootstrap.js",
"chars": 75484,
"preview": "/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under the MIT licen"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/_bootstrap-compass.scss",
"chars": 178,
"preview": "@function twbs-font-path($path) {\n @return font-url($path, true);\n}\n\n@function twbs-image-path($path) {\n @return image"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/_bootstrap-mincer.scss",
"chars": 757,
"preview": "// Mincer asset helper functions\n//\n// This must be imported into a .css.ejs.scss file.\n// Then, <% %>-interpolations wi"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/_bootstrap-sprockets.scss",
"chars": 168,
"preview": "@function twbs-font-path($path) {\n @return font-path($path);\n}\n\n@function twbs-image-path($path) {\n @return image-path"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/_bootstrap.scss",
"chars": 1488,
"preview": "/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_alerts.scss",
"chars": 1546,
"preview": "//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_badges.scss",
"chars": 1228,
"preview": "//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n m"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_breadcrumbs.scss",
"chars": 700,
"preview": "//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: $breadcrumb-padding-v"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_button-groups.scss",
"chars": 5764,
"preview": "//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-gro"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_buttons.scss",
"chars": 3819,
"preview": "//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_carousel.scss",
"chars": 5759,
"preview": "//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_close.scss",
"chars": 835,
"preview": "//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: ($font-s"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_code.scss",
"chars": 1417,
"preview": "//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\nco"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_component-animations.scss",
"chars": 820,
"preview": "//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `."
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_dropdowns.scss",
"chars": 4847,
"preview": "//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display:"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_forms.scss",
"chars": 16057,
"preview": "//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_glyphicons.scss",
"chars": 20445,
"preview": "//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus a"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_grid.scss",
"chars": 1569,
"preview": "//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container wi"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_input-groups.scss",
"chars": 4310,
"preview": "//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.i"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_jumbotron.scss",
"chars": 1165,
"preview": "//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: $jumbotron-padding;\n"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_labels.scss",
"chars": 1121,
"preview": "//\n// Labels\n// --------------------------------------------------\n\n.label {\n\tdisplay: inline;\n\tpadding: 0.2em 0.6em 0.3"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_list-group.scss",
"chars": 3151,
"preview": "//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_media.scss",
"chars": 900,
"preview": ".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_mixins.scss",
"chars": 986,
"preview": "// Mixins\n// --------------------------------------------------\n\n// Utilities\n@import \"mixins/hide-text\";\n@import \"mixin"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_modals.scss",
"chars": 3575,
"preview": "//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scr"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_navbar.scss",
"chars": 14749,
"preview": "//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static n"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_navs.scss",
"chars": 4950,
"preview": "//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// ------------------------------------"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_normalize.scss",
"chars": 7707,
"preview": "/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-s"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_pager.scss",
"chars": 855,
"preview": "//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: $li"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_pagination.scss",
"chars": 2073,
"preview": "//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_panels.scss",
"chars": 6388,
"preview": "//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: $line-heigh"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_popovers.scss",
"chars": 3476,
"preview": "//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_print.scss",
"chars": 1682,
"preview": "/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// =============================="
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_progress-bars.scss",
"chars": 1998,
"preview": "//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -----------------------"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_responsive-embed.scss",
"chars": 546,
"preview": "// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display:"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_responsive-utilities.scss",
"chars": 4421,
"preview": "//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n/"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_scaffolding.scss",
"chars": 2955,
"preview": "//\n// Scaffolding\n// --------------------------------------------------\n\n// Reset the box-sizing\n//\n// Heads up! This re"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_tables.scss",
"chars": 4662,
"preview": "//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: $table-bg;\n\n // Table "
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_theme.scss",
"chars": 8620,
"preview": "/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_thumbnails.scss",
"chars": 892,
"preview": "//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.th"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_tooltip.scss",
"chars": 3023,
"preview": "//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n "
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_type.scss",
"chars": 6100,
"preview": "//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_utilities.scss",
"chars": 765,
"preview": "//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.c"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_variables.scss",
"chars": 31614,
"preview": "$bootstrap-sass-asset-helper: false !default;\n//\n// Variables\n// --------------------------------------------------\n\n\n//"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/_wells.scss",
"chars": 541,
"preview": "//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding:"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_alerts.scss",
"chars": 264,
"preview": "// Alerts\n\n@mixin alert-variant($background, $border, $text-color) {\n color: $text-color;\n background-color: $backgrou"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_background-variant.scss",
"chars": 233,
"preview": "// Contextual backgrounds\n\n// [converter] $parent hack\n@mixin bg-variant($parent, $color) {\n #{$parent} {\n backgroun"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_border-radius.scss",
"chars": 484,
"preview": "// Single side border-radius\n\n@mixin border-top-radius($radius) {\n border-top-left-radius: $radius;\n border-top-right-"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_buttons.scss",
"chars": 1375,
"preview": "// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_center-block.scss",
"chars": 126,
"preview": "// Center-align a block level element\n\n@mixin center-block() {\n display: block;\n margin-right: auto;\n margin-left: au"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_clearfix.scss",
"chars": 611,
"preview": "// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contentedi"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_forms.scss",
"chars": 2780,
"preview": "// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and succ"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_gradients.scss",
"chars": 4381,
"preview": "\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and pos"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_grid-framework.scss",
"chars": 2379,
"preview": "// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any va"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_grid.scss",
"chars": 3348,
"preview": "// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n@mixin container-f"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_hide-text.scss",
"chars": 590,
"preview": "// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being r"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_image.scss",
"chars": 1107,
"preview": "// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n@mixin img-responsive($display: bl"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_labels.scss",
"chars": 167,
"preview": "// Labels\n\n@mixin label-variant($color) {\n background-color: $color;\n\n &[href] {\n &:hover,\n &:focus {\n back"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_list-group.scss",
"chars": 672,
"preview": "// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n .list-group-item-#{$state} {\n color: "
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_nav-divider.scss",
"chars": 245,
"preview": "// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: #e5e5"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss",
"chars": 390,
"preview": "// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_opacity.scss",
"chars": 148,
"preview": "// Opacity\n\n@mixin opacity($opacity) {\n $opacity-ie: ($opacity * 100); // IE8 filter\n filter: alpha(opacity=$opacity-"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_pagination.scss",
"chars": 507,
"preview": "// Pagination\n\n@mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) "
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_panels.scss",
"chars": 543,
"preview": "// Panels\n\n@mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) {\n border-color: $bor"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_progress-bar.scss",
"chars": 200,
"preview": "// Progress bars\n\n@mixin progress-bar-variant($color) {\n background-color: $color;\n\n // Deprecated parent class requir"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_reset-filter.scss",
"chars": 246,
"preview": "// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the I"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_reset-text.scss",
"chars": 473,
"preview": "@mixin reset-text() {\n font-family: $font-family-base;\n // We deliberately do NOT reset font-size.\n font-style: norma"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_resize.scss",
"chars": 202,
"preview": "// Resize anything\n\n@mixin resizable($direction) {\n overflow: auto; // Per CSS3 UI, `resize` only applies when `overflo"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss",
"chars": 417,
"preview": "// [converter] $parent hack\n@mixin responsive-visibility($parent) {\n #{$parent} {\n display: block !important;\n }\n "
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_size.scss",
"chars": 147,
"preview": "// Sizing shortcuts\n\n@mixin size($width, $height) {\n width: $width;\n height: $height;\n}\n\n@mixin square($size) {\n @inc"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_tab-focus.scss",
"chars": 338,
"preview": "// WebKit-style focus\n\n@mixin tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_table-row.scss",
"chars": 715,
"preview": "// Tables\n\n@mixin table-row-variant($state, $background) {\n // Exact selectors below required to override `.table-strip"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss",
"chars": 210,
"preview": "// Typography\n\n// [converter] $parent hack\n@mixin text-emphasis-variant($parent, $color) {\n #{$parent} {\n color: $co"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_text-overflow.scss",
"chars": 168,
"preview": "// Text overflow\n// Requires inline-block or block for proper styling\n\n@mixin text-overflow() {\n overflow: hidden;\n te"
},
{
"path": "fork/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss",
"chars": 6645,
"preview": "// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our"
},
{
"path": "fork/bootstrap-sass/composer.json",
"chars": 854,
"preview": "{\n \"name\": \"twbs/bootstrap-sass\",\n \"description\": \"bootstrap-sass is a Sass-powered version of Bootstrap 3, ready "
},
{
"path": "fork/bootstrap-sass/eslint.config.mjs",
"chars": 68,
"preview": "import config from '@talend/eslint-config';\n\nexport default config;\n"
},
{
"path": "fork/bootstrap-sass/package.json",
"chars": 1187,
"preview": "{\n \"name\": \"@talend/bootstrap-sass\",\n \"version\": \"5.6.2\",\n \"description\": \"bootstrap-sass is a Sass-powered version o"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/.all-contributorsrc",
"chars": 1429,
"preview": "{\n \"projectName\": \"dynamic-cdn-webpack-plugin\",\n \"projectOwner\": \"mastilver\",\n \"files\": [\n \"readme.md\"\n ],\n \"ima"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/.gitattributes",
"chars": 29,
"preview": "* text=auto\n*.js text eol=lf\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/.gitignore",
"chars": 103,
"preview": "/node_modules\n/lib\ntest/fixtures/output\nyarn.lock\n.nyc_output\ncoverage\n!test/fixtures/app/node_modules\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/CHANGELOG.md",
"chars": 7299,
"preview": "# CHANGELOG\n\n## 14.5.2\n\n### Patch Changes\n\n- 4408b98: chore: upgrade dependencies\n- Updated dependencies [4408b98]\n - @"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/__mocks__/fs.js",
"chars": 1256,
"preview": "const path = require('path');\n\nconst fs = {};\n\n// This is a custom function that our tests can use during setup to speci"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/eslint.config.mjs",
"chars": 525,
"preview": "import js from '@eslint/js';\nimport globals from 'globals';\nimport prettierPlugin from 'eslint-plugin-prettier';\nimport "
},
{
"path": "fork/dynamic-cdn-webpack-plugin/index.js",
"chars": 43,
"preview": "module.exports = require('./src').default;\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/license",
"chars": 1117,
"preview": "The MIT License (MIT)\n\nCopyright (c) Thomas Sileghem <th.sileghem@gmail.com> (mastilver.com)\n\nPermission is hereby grant"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/package.json",
"chars": 1444,
"preview": "{\n \"name\": \"@talend/dynamic-cdn-webpack-plugin\",\n \"version\": \"14.5.2\",\n \"description\": \"Dynamically get your dependen"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/readme.md",
"chars": 7762,
"preview": "# dynamic-cdn-webpack-plugin\n\n[![NPM][npm-icon] ][npm-url]\n\n[npm-icon]: https://img.shields.io/npm/v/@talend/dynamic-cdn"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/src/find.js",
"chars": 3921,
"preview": "const fs = require('fs');\nconst path = require('path');\nconst readPkgUp = require('read-pkg-up');\nconst semver = require"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/src/find.test.js",
"chars": 4125,
"preview": "/* eslint-disable global-require */\n/* eslint-disable no-underscore-dangle */\nconst path = require('path');\nconst fs = r"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/src/get-resolver.js",
"chars": 264,
"preview": "/* eslint-disable global-require */\n/* eslint-disable import/no-dynamic-require */\nfunction getResolver(resolver = '@tal"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/src/index.js",
"chars": 15698,
"preview": "/* eslint-disable no-await-in-loop */\n/* eslint-disable consistent-return */\n/* eslint-disable no-param-reassign */\n/* e"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/src/resolve-pkg.js",
"chars": 640,
"preview": "const { findPackage } = require('./find');\n\n/* eslint-disable no-empty */\n/**\n *\n * @param {string} moduleId use to requ"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/core.test.js",
"chars": 19063,
"preview": "/* eslint-disable no-console */\nconst path = require('path');\nconst fs = require('fs');\n\nconst runWebpack = require('./h"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/app/async.js",
"chars": 37,
"preview": "import('react').then(react => {\n\n});\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/app/dir/single.js",
"chars": 27,
"preview": "import React from 'react';\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/app/mix.js",
"chars": 82,
"preview": "import a from 'a';\nimport React from 'react';\n\nimport single from './dir/single';\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/app/multiple.js",
"chars": 88,
"preview": "import '@babel/polyfill';\n\nimport React from 'react';\nimport ReactDom from 'react-dom';\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/app/no-export.js",
"chars": 26,
"preview": "import '@babel/polyfill';\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/app/package.json",
"chars": 512,
"preview": "{\n \"name\": \"app\",\n \"version\": \"1.0.0\",\n \"description\": \"\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"echo \\\"E"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/app/peer-dependencies.js",
"chars": 32,
"preview": "import ng from '@angular/core';\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/app/require-file.js",
"chars": 38,
"preview": "import React from 'react/dist/react';\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/app/single.js",
"chars": 27,
"preview": "import React from 'react';\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/app/submodule.js",
"chars": 71,
"preview": "import { call, put, takeEvery, takeLatest } from 'redux-saga/effects';\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/duplicate-dependencies/index.js",
"chars": 158,
"preview": "const a = require('react-ace');\nconst rb = require('react-bootstrap');\nconst ra = require('react-autowhatever');\n\nmodule"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/duplicate-dependencies/package.json",
"chars": 208,
"preview": "{\n \"name\": \"duplicate\",\n \"version\": \"1.0.0\",\n \"dependencies\": {\n \"react-autowhatever\": \"^6.0.0\",\n \"react-bootst"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/nested-dependencies/index.js",
"chars": 14,
"preview": "require('a');\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/nested-dependencies/package.json",
"chars": 275,
"preview": "{\n \"name\": \"nested-dependencies\",\n \"version\": \"1.0.0\",\n \"description\": \"\",\n \"main\": \"index.js\",\n \"scripts\": {\n \""
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/optional-peer-deps/index.js",
"chars": 94,
"preview": "const a = require('react-dnd');\nconst b = require('react-redux');\n\nmodule.exports = { a, b };\n"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/fixtures/optional-peer-deps/package.json",
"chars": 163,
"preview": "{\n \"name\": \"optional-peer-deps\",\n \"version\": \"1.0.0\",\n \"dependencies\": {\n \"react-dnd\": \"^14.0.3\",\n \"react-redux"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/helpers/clean-dir.js",
"chars": 167,
"preview": "// eslint-disable-next-line import/no-extraneous-dependencies\nconst { rimraf } = require('rimraf');\n\nmodule.exports = fu"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/helpers/run-webpack.js",
"chars": 485,
"preview": "/* eslint-disable no-param-reassign */\nconst webpack = require('webpack');\n\nmodule.exports = function runWebpack(config)"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/html-webpack-plugin.test.js",
"chars": 1300,
"preview": "const path = require('path');\nconst fs = require('fs');\n\nconst HtmlWebpackPlugin = require('html-webpack-plugin');\nconst"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/optional-peer-dep.test.js",
"chars": 1299,
"preview": "const path = require('path');\n\nconst runWebpack = require('./helpers/run-webpack');\nconst cleanDir = require('./helpers/"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/test/webpack-manifest-plugin.test.js",
"chars": 1516,
"preview": "const path = require('path');\nconst fs = require('fs');\n\nconst { WebpackManifestPlugin } = require('webpack-manifest-plu"
},
{
"path": "fork/dynamic-cdn-webpack-plugin/vitest.config.ts",
"chars": 265,
"preview": "import { defineConfig } from 'vitest/config';\n\nexport default defineConfig({\n\ttest: {\n\t\tglobals: true,\n\t\tenvironment: 'n"
},
{
"path": "fork/json-schema-form-core/.gitignore",
"chars": 409,
"preview": "# See http://help.github.com/ignore-files/ for more about ignoring files.\n\n# compiled output\n/dist\n/tmp\n\n# dependencies\n"
},
{
"path": "fork/json-schema-form-core/.jscsrc",
"chars": 387,
"preview": "{\n \"preset\": \"google\",\n \"disallowSpacesInsideObjectBrackets\": null,\n \"requireSpacesInsideObjectBrackets\": {\n \"allE"
},
{
"path": "fork/json-schema-form-core/.mocharc.json",
"chars": 224,
"preview": "{\n \"diff\": true,\n \"extension\": [\"js\", \"ts\"],\n \"package\": \"./package.json\",\n \"reporter\": \"spec\",\n \"slow\": \"75\",\n \"t"
},
{
"path": "fork/json-schema-form-core/.travis.yml",
"chars": 49,
"preview": "language: node_js\nnode_js:\n - node\n\nsudo: false\n"
},
{
"path": "fork/json-schema-form-core/CHANGELOG.md",
"chars": 2952,
"preview": "# @talend/json-schema-form-core\n\n## 2.1.2\n\n### Patch Changes\n\n- 4408b98: chore: upgrade dependencies\n\n## 2.1.1\n\n### Patc"
},
{
"path": "fork/json-schema-form-core/LICENSE",
"chars": 1083,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2016 JSON Schema Form\n\nPermission is hereby granted, free of charge, to any person "
},
{
"path": "fork/json-schema-form-core/README.md",
"chars": 2998,
"preview": "# JSON Schema Form Core\n\n[ {\n\tlet promise = new Promise(function "
},
{
"path": "fork/json-schema-form-core/src/resolve.spec.js",
"chars": 3325,
"preview": "import chai from 'chai';\nimport { describe, it } from 'mocha';\n\nimport { jsonref } from './resolve';\n\nchai.should();\n\nde"
}
]
// ... and 4382 more files (download for full content)
About this extraction
This page contains the full source code of the Talend/ui GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4582 files (14.8 MB), approximately 4.2M tokens, and a symbol index with 4127 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.