Import flow for Excel (.xlsx) and CSV file with automated column matching and validation.

Overview

RSI react-spreadsheet-import โšก๏ธ

GitHub Workflow Status GitHub npm


A component used for importing XLS / XLSX / CSV documents built with Chakra UI. Import flow combines:

  • ๐Ÿ“ฅ Uploader
  • โš™๏ธ Parser
  • ๐Ÿ“Š File preview
  • ๐Ÿงช UI for column mapping
  • โœ UI for validating and editing data

โœจ Demo โœจ

Features

  • Custom styles - edit Chakra UI theme to match your project's styles ๐ŸŽจ
  • Custom validation rules - make sure valid data is being imported, easily spot and correct errors
  • Hooks - alter raw data after upload or make adjustments on data changes
  • Auto-mapping columns - automatically map most likely value to your template values, e.g. name -> firstName

rsi-preview

Figma

We provide full figma designs. You can copy the designs here

Getting started

npm i react-spreadsheet-import

Using the component: (it's up to you when the flow is open and what you do on submit with the imported data)

import { ReactSpreadsheetImport } from "react-spreadsheet-import";

<ReactSpreadsheetImport
  isOpen={isOpen}
  onClose={onClose}
  onSubmit={onSubmit}
  fields={fields}
/>

Required Props

  // Determines if modal is visible.
  isOpen: Boolean
  // Called when flow is closed without reaching submit.
  onClose: () => void 
  // Called after user completes the flow. Provides data array, where data keys matches your field keys.
  onSubmit: (data) => void 

Fields

Fields describe what data you are trying to collect.

const fields = [
  {
    // Visible in table header and when matching columns.
    label: "Name",
    // This is the key used for this field when we call onSubmit.
    key: "name",
    // Allows for better automatic column matching. Optional.
    alternateMatches: ["first name", "first"],
    // Used when editing and validating information.
    fieldType: {
      // There are 3 types - "input" / "checkbox" / "select".
      type: "input",
    },
    // Used in the first step to provide an example of what data is expected in this field. Optional.
    example: "Stephanie",
    // Can have multiple validations that are visible in Validation Step table.
    validations: [
      {
        // Can be "required" / "unique" / "regex"
        rule: "required",
        errorMessage: "Name is required",
        // There can be "info" / "warning" / "error" levels. Optional. Default "error".
        level: "error",
      },
    ],
  },
] as const

Optional Props

Hooks

You can transform and validate data with custom hooks. There are 3 hooks that have different performance tradeoffs:

  • initialHook - runs only once after column matching. Operations that should run once should be done here.
  • tableHook - runs at the start and on any change. Runs on all rows. Very expensive, but can change rows that depend on other rows.
  • rowHook - runs at the start and on any row change. Runs only on the rows changed. Fastest, most validations and transformations should be done here.

Example:

<ReactSpreadsheetImport
  rowHook={(data, addError) => {
    // Validation
    if (data.name === "John") {
      addError("name", { message: "No Johns allowed", level: "info" })
    }
    // Transformation
    return { ...data, name: "Not John" }
    // Sorry John
  }}
/>

Other optional props

  // Allows submitting with errors. Default: true
  allowInvalidSubmit?: boolean
  // Translations for each text. See customisation bellow
  translations?: object
  // Theme configuration passed to underlying Chakra-UI. See customisation bellow
  customTheme?: object
  // Specifies maximum number of rows for a single import
  maxRecords?: number
  // Maximum upload filesize (in bytes)
  maxFileSize?: number
  // Automatically map imported headers to specified fields if possible. Default: true
  autoMapHeaders?: boolean
  // Headers matching accuracy: 1 for strict and up for more flexible matching. Default: 2
  autoMapDistance?: number

Customisation

Customising styles (colors, fonts)

You can see default theme we use here. Your override should match this object's structure.

There are 3 ways you can style the component:

1.) Change theme colors globally

    <ReactSpreadsheetImport
        {...mockRsiValues}
        isOpen={isOpen}
        onClose={onClose}
        onSubmit={setData}
        customTheme={{
          colors: {
            background: 'white',
            ...
            rsi: {
              // your brand colors should go here
              50: '...'
              ...
              500: 'teal',
              ...
              900: "...",
            },
          },
        }}
      />

Screenshot 2022-04-13 at 10 24 34

2.) Change all components of the same type, like all Buttons, at the same time

    <ReactSpreadsheetImport
        {...mockRsiValues}
        isOpen={isOpen}
        onClose={onClose}
        onSubmit={setData}
        customTheme={{
          components: {
            Button: {
              baseStyle: {
                borderRadius: "none",
              },
              defaultProps: {
                colorScheme: "yellow",
              },
            },
          },
        }}
      />

Screenshot 2022-04-13 at 11 04 30

3.) Change components specifically in each Step.

    <ReactSpreadsheetImport
        {...mockRsiValues}
        isOpen={isOpen}
        onClose={onClose}
        onSubmit={setData}
        customTheme={{
          components: {
            UploadStep: {
              baseStyle: {
                dropzoneButton: {
                  bg: "red",
                },
              },
            },
          },
        }}
      />

Screenshot 2022-04-13 at 10 21 58

Underneath we use Chakra-UI, you can send in a custom theme for us to apply. Read more about themes here

Changing text (translations)

You can change any text in the flow:

<ReactSpreadsheetImport
  translations={{
    uploadStep: {
      title: "Upload Employees",
    },
  }}
/>

You can see all the translation keys here

VS other libraries

Flatfile vs react-spreadsheet-import and Dromo vs react-spreadsheet-import:

RSI Flatfile Dromo
Licence MIT Proprietary Proprietary
Price Free Paid Paid
Support Github Issues Enterprise Enterprise
Self-host Yes Paid Paid
Hosted solution In development Yes No
On-prem deployment N/A Yes Yes
Hooks Yes Yes Yes
Automatic header matching Yes Yes Yes
Data validation Yes Yes Yes
Custom styling Yes Yes Yes
Translations Yes Yes No
Trademarked words Data Hooks No Yes No

React-spreadsheet-import can be used as a free and open-source alternative to Flatfile and Dromo.

Contributing

Feel free to open issues if you have any questions or notice bugs. If you want different component behaviour, consider forking the project.

Credits

Created by Ugnis. Julita Kriauciunaite and Karolis Masiulis. You can contact us at [email protected]

Comments
  • Phone number getting parsed as a date

    Phone number getting parsed as a date

    Have a field called phone number in this format 564-564-5644.

    After getting parsed it is replaced with a date string 1900-01-00.

    This only happening for .csv files if i convert csv to xlsx then it is showing correct result.

    opened by abhishek-butola 9
  • framer-motion package version not compatible with react-app

    framer-motion package version not compatible with react-app

    I get this error while installing RSI on a brand new react-app (with create react-app) or when installing on an existing project (pure JS, no TS installed) :

    Can't import the named export 'Children' from non EcmaScript module (only default export is available)

    Reproduction Node : v16.15.0 package.json :

    "dependencies": {
        "react": "^17.0.2",
        "react-dom": "17.0.2",
        "react-scripts": "^4.0.3",
        "react-spreadsheet-import": "^2.0.3"
      }
    

    Possible Solution I've already seen this PR that proposed a fix by downgrading framer-motion : https://github.com/UgnisSoftware/react-spreadsheet-import/pull/93 I tried it by forking project, changing lib version to 4.1.17 and importing on my project the new builded lib. It works perfectly

    More about the error This is a known issue due to ReactCreateApp not working with ESmodule since version5 : https://github.com/reactioncommerce/reaction-component-library/issues/399

    • A fix was proposed but still in alpha
    • A workaround is proposed but not really easy and little bit compelling while using RCA out of the box)

    Downgrading framer-motion doesn't seems to have impact and may allow to easily install RSI (it should be upgraded when RCA fixed this issue) I'd be glad to discuss it further / to propose a PR :)

    PS : thx for this awesome lib, i'm considering to contribute to it ! Cheers !

    opened by JulienGasparLopes 6
  • Free-form

    Free-form "custom" fields?

    Howdy! This is a super interesting library ๐Ÿ˜„

    I'm wondering if it's possible to define fields "on the fly"? Basically, I want someone with a header of "Some Field X" to create a mapping of "Some Field X" => "data in that field". The use case is to support custom fields that don't need to be defined in advance.

    opened by sb8244 6
  • WIP: Explicitly set border style for the match icon

    WIP: Explicitly set border style for the match icon

    Your storybook includes a reset style border-style: solid. I'm working on integrating this import flow into a project which does not have such a reset style, and therefore the orange circle icon is not visible.

    PS: Thanks for open sourcing this component, it will save us a lot of time as opposed to implementing something similar from scratch! It's working really well out of the box with only a few minor tweaks being needed for our use case.

    Update: More style "fixes" coming if you are interested in supporting users not using the default chakra ui reset.

    opened by ineentho 4
  • Deleting rows results in future updates

    Deleting rows results in future updates

    I seem to have stumbled across a bug that results after deleting a row and then editing a row further in the import.

          const changes = changedData?.indexes.reduce((acc, val) => {
            const realIndex = rows[val].__index
            acc[realIndex] = rows[val]
            return acc
          }, {} as Record<number, typeof data[number]>)
          const newData = Object.assign([], data, changes)
          updateData(newData)
    

    Let's say that there are 3 rows [0, 1, 2]. Row 0 is deleted. If 1 is changed, then data[0] should be updated because the old first record is deleted. However, acc[realIndex]= causes the changes to reference the old __index value, so data[1] gets updated and overwrites the data stored there.

    opened by sb8244 4
  • Buggy Table scrollbars

    Buggy Table scrollbars

    Problem:

    When I import some files I have the scrollbars of the Table on SelectHeaderStep and ValidationStep that keep appearing and disappearing. So the component keeps resizing and looks like it's glitching

    Reproduction:

    Here is the content of the file I'm importing (this is not a use case but at least I can reproduce the bug with it): {"file_uuid":"46c42960-8bb7-4209-b6a6-218b190c146e","message":"success"} I'm on Google Chrome Version 103.0.5060.53 (official build) (x86_64) on MacOs 12.2.1 Screen resolution doesn't seem to have any influence

    Investigation:

    The value of grid-columns-template is constantly changing for the component Table on SelectHeaderStep (class name rdg-static) I don't have a lot of clues of what is happening, just hoping chakra-ui is not the cause

    Thx for reading ! If you need any help I'd be glad to contribute, I'll keep checking this bug on my own

    opened by JulienGasparLopes 3
  • Excel file with accent not supported

    Excel file with accent not supported

    Hi ! I was never able to import my Excel files (had to use GoogleSheet to convert to CSV file, Excel export uses ";" as separator)

    Problem

    I just figured out accents characters aren't supported (such as รฉ, รจ or ร )

    Reproduction

    I joined a simple file with an accent to allow you to reproduce. FileWithAccent.xlsx

    Solution

    For now I don't have any solution, I'll dig into your code. But my first guest is that the lib RSI uses to parse XSLX and CSV files doesn't support accents by default. Maybe a little bit of configuration should do the trick

    Thx for reading !

    opened by JulienGasparLopes 2
  • CSV support for Hebrew

    CSV support for Hebrew

    Hey guys:) First, this package is amazing. Really, beautiful execution solving the problem.

    I tried uploading a csv containing text in Hebrew and the it parsed to gibberish. From some exploration I did its some encoding problem. Important to say that when uploading xlsx file it works perfectly! image

    Any idea what causes this and how can I fix this?

    opened by eelior 2
  • What combination of React, Chakra, and etc versions should I have to be able to use this project?

    What combination of React, Chakra, and etc versions should I have to be able to use this project?

    Hello, this project is awesome, however, I'm struggling to find the right combination of frontend library versions to use in order to use this project.

    First, I found out that the project has a potentially unlisted dependency: Chakra. So, I added that.

    Now, I'm getting the following error in a view that imports this library:

    chakra-ui-hooks.esm.js:235 Uncaught TypeError: react__WEBPACK_IMPORTED_MODULE_0__.useId is not a function
        at useId (chakra-ui-hooks.esm.js:235:1)
        at useIds (chakra-ui-hooks.esm.js:261:1)
        at useModal (chakra-ui-modal.esm.js:145:1)
        at Modal (chakra-ui-modal.esm.js:326:1)
        at renderWithHooks (react-dom.development.js:14985:1)
        at mountIndeterminateComponent (react-dom.development.js:17811:1)
        at beginWork (react-dom.development.js:19049:1)
        at HTMLUnknownElement.callCallback (react-dom.development.js:3945:1)
        at Object.invokeGuardedCallbackDev (react-dom.development.js:3994:1)
        at invokeGuardedCallback (react-dom.development.js:4056:1)
        at beginWork$1 (react-dom.development.js:23964:1)
        at performUnitOfWork (react-dom.development.js:22776:1)
        at workLoopSync (react-dom.development.js:22707:1)
        at renderRootSync (react-dom.development.js:22670:1)
        at performSyncWorkOnRoot (react-dom.development.js:22293:1)
        at react-dom.development.js:11327:1
        at unstable_runWithPriority (scheduler.development.js:468:1)
        at runWithPriority$1 (react-dom.development.js:11276:1)
        at flushSyncCallbackQueueImpl (react-dom.development.js:11322:1)
        at workLoop (scheduler.development.js:417:1)
        at flushWork (scheduler.development.js:390:1)
        at MessagePort.performWorkUntilDeadline (scheduler.development.js:157:1)
    

    I'm wondering if I'm perhaps missing some other dependencies or actions I should take in order to use this library?

    Thank you.

    Our package.json:

    {
        "name": "app",
        "version": "3.1.0",
        "private": true,
        "dependencies": {
            "@auth0/auth0-spa-js": "^1.19.4",
            "@babel/core": "^7.17.2",
            "@chakra-ui/react": "^2.2.1",
            "@emotion/cache": "^11.7.1",
            "@emotion/react": "^11.7.1",
            "@emotion/styled": "^11.6.0",
            "@fullcalendar/daygrid": "^5.10.1",
            "@fullcalendar/interaction": "^5.10.1",
            "@fullcalendar/list": "^5.10.1",
            "@fullcalendar/react": "^5.10.1",
            "@fullcalendar/timegrid": "^5.10.1",
            "@fullcalendar/timeline": "^5.10.1",
            "@hookform/resolvers": "^2.8.8",
            "@mui/icons-material": "^5.4.1",
            "@mui/lab": "^5.0.0-alpha.68",
            "@mui/material": "^5.4.1",
            "@mui/styles": "^5.4.1",
            "@mui/system": "^5.4.1",
            "@mui/utils": "^5.4.1",
            "@mui/x-data-grid": "^5.10.0",
            "@mui/x-data-grid-pro": "^5.10.0",
            "@mui/x-date-pickers": "^5.0.0-alpha.3",
            "@mui/x-license-pro": "^5.10.0",
            "@pmmmwh/react-refresh-webpack-plugin": "0.4.3",
            "@reduxjs/toolkit": "^1.7.2",
            "@svgr/webpack": "5.5.0",
            "@tabler/icons": "^1.53.0",
            "@types/chance": "^1.1.3",
            "@types/draft-js": "^0.11.9",
            "@types/image-to-base64": "^2.1.0",
            "@types/jsonwebtoken": "^8.5.8",
            "@types/react": "^17.0.39",
            "@types/react-beautiful-dnd": "^13.1.2",
            "@types/react-copy-to-clipboard": "^5.0.2",
            "@types/react-currency-format": "^1.0.0",
            "@types/react-dom": "^17.0.11",
            "@types/react-draft-wysiwyg": "^1.13.4",
            "@types/react-google-recaptcha": "^2.1.3",
            "@types/react-redux": "^7.1.22",
            "@types/react-router-dom": "^5.3.3",
            "@types/react-slick": "^0.23.8",
            "@types/react-syntax-highlighter": "^13.5.2",
            "@types/react-window": "^1.8.5",
            "@types/uuid": "^8.3.4",
            "@types/webpack-env": "^1.16.3",
            "@typescript-eslint/eslint-plugin": "4.4.1",
            "@typescript-eslint/parser": "^4.24.0",
            "amazon-cognito-identity-js": "^5.2.6",
            "apexcharts": "^3.33.1",
            "axios": "^0.25.0",
            "axios-mock-adapter": "^1.20.0",
            "babel-eslint": "^10.1.0",
            "babel-jest": "^26.6.0",
            "babel-loader": "8.1.0",
            "babel-plugin-named-asset-import": "^0.3.7",
            "babel-preset-react-app": "^10.0.0",
            "bfj": "^7.0.2",
            "camelcase": "^6.1.0",
            "case-sensitive-paths-webpack-plugin": "2.3.0",
            "chance": "^1.1.8",
            "css-loader": "4.3.0",
            "csstype": "^3.0.10",
            "date-fns": "^2.28.0",
            "dotenv": "8.2.0",
            "dotenv-expand": "5.1.0",
            "draft-js": "^0.11.7",
            "emoji-picker-react": "^3.5.1",
            "eslint": "^7.27.0",
            "eslint-config-airbnb-typescript": "^12.3.1",
            "eslint-config-prettier": "^8.3.0",
            "eslint-config-react-app": "6.0.0",
            "eslint-import-resolver-typescript": "^2.5.0",
            "eslint-plugin-flowtype": "^5.7.2",
            "eslint-plugin-import": "^2.25.4",
            "eslint-plugin-jsx-a11y": "^6.5.1",
            "eslint-plugin-prettier": "^3.4.0",
            "eslint-plugin-react": "^7.28.0",
            "eslint-plugin-react-hooks": "^4.3.0",
            "eslint-plugin-testing-library": "^3.9.2",
            "eslint-webpack-plugin": "^2.5.2",
            "file-loader": "6.1.1",
            "firebase": "^9.6.6",
            "formik": "^2.2.9",
            "framer-motion": "^4.1.13",
            "fs-extra": "^9.0.1",
            "history": "^5.2.0",
            "html-webpack-plugin": "4.5.0",
            "identity-obj-proxy": "3.0.0",
            "image-to-base64": "^2.2.0",
            "jest": "26.6.0",
            "jest-circus": "26.6.0",
            "jest-resolve": "26.6.0",
            "jest-watch-typeahead": "0.6.1",
            "jsonwebtoken": "^8.5.1",
            "jwt-decode": "^3.1.2",
            "lodash": "^4.17.21",
            "logrocket": "^3.0.0",
            "material-ui-popup-state": "^2.0.0",
            "mini-css-extract-plugin": "0.11.3",
            "optimize-css-assets-webpack-plugin": "5.0.4",
            "pnp-webpack-plugin": "1.6.4",
            "postcss-flexbugs-fixes": "4.2.1",
            "postcss-loader": "3.0.0",
            "postcss-normalize": "8.0.1",
            "postcss-preset-env": "6.7.0",
            "postcss-safe-parser": "5.0.2",
            "prettier": "^2.5.1",
            "prompts": "2.4.0",
            "react": "^17.0.2",
            "react-apexcharts": "^1.3.9",
            "react-app-polyfill": "^2.0.0",
            "react-beautiful-dnd": "^13.1.0",
            "react-copy-to-clipboard": "^5.0.4",
            "react-currency-format": "^1.1.0",
            "react-dev-utils": "^11.0.3",
            "react-dom": "^17.0.2",
            "react-draft-wysiwyg": "^1.14.7",
            "react-draggable": "^4.4.4",
            "react-dropzone": "^12.0.2",
            "react-error-overlay": "6.0.9",
            "react-google-recaptcha": "^2.1.0",
            "react-hook-form": "^7.26.1",
            "react-images": "^1.2.0-beta.7",
            "react-intersection-observer": "^8.33.1",
            "react-intl": "^5.24.6",
            "react-markdown": "^8.0.0",
            "react-number-format": "^4.9.1",
            "react-organizational-chart": "^2.1.1",
            "react-otp-input-rc-17": "^2.4.1-minor",
            "react-perfect-scrollbar": "^1.5.8",
            "react-quill": "^2.0.0-beta.4",
            "react-redux": "^7.2.6",
            "react-refresh": "^0.8.3",
            "react-router-dom": "^6.2.1",
            "react-slick": "^0.28.1",
            "react-spreadsheet-import": "^2.0.6",
            "react-syntax-highlighter": "^15.4.5",
            "react-timer-hook": "^3.0.5",
            "react-to-print": "^2.14.4",
            "react-window": "^1.8.6",
            "redux": "^4.1.2",
            "redux-persist": "^6.0.0",
            "remark-gfm": "^3.0.1",
            "resolve": "1.18.1",
            "resolve-url-loader": "^3.1.2",
            "sass": "^1.49.7",
            "sass-loader": "^10.0.5",
            "semver": "7.3.2",
            "slick-carousel": "^1.8.1",
            "style-loader": "1.3.0",
            "stylis-plugin-rtl": "^2.1.1",
            "terser-webpack-plugin": "4.2.3",
            "ts-pnp": "1.2.0",
            "typescript": "^4.5.5",
            "url-loader": "4.1.1",
            "uuid": "^8.3.2",
            "web-vitals": "^2.1.4",
            "webpack": "4.44.2",
            "webpack-dev-server": "3.11.1",
            "webpack-env": "^0.8.0",
            "webpack-manifest-plugin": "2.2.0",
            "workbox-webpack-plugin": "5.1.4",
            "yup": "^0.32.11"
        },
        "resolutions": {
            "@types/react": "17.0.39",
            "@types/react-dom": "17.0.11"
        },
        "scripts": {
            "start": "node scripts/start.js",
            "build": "node scripts/build.js",
            "test": "node scripts/test.js",
            "lint": "eslint . src/ --ext .js,.jsx,.ts,.tsx",
            "lint:fix": "npm run lint -- --fix"
        },
        "eslintConfig": {
            "extends": [
                "react-app",
                "react-app/jest"
            ]
        },
        "babel": {
            "presets": [
                "react-app"
            ]
        },
        "browserslist": {
            "production": [
                ">0.2%",
                "not dead",
                "not op_mini all"
            ],
            "development": [
                ">0.2%",
                "not dead",
                "not op_mini all"
            ]
        },
        "devDependencies": {},
        "jest": {
            "roots": [
                "<rootDir>/src"
            ],
            "collectCoverageFrom": [
                "src/**/*.{js,jsx,ts,tsx}",
                "!src/**/*.d.ts"
            ],
            "setupFiles": [
                "react-app-polyfill/jsdom"
            ],
            "setupFilesAfterEnv": [],
            "testMatch": [
                "<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
                "<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"
            ],
            "testEnvironment": "jsdom",
            "testRunner": "/home/caleb/src/xxx/ui/node_modules/jest-circus/runner.js",
            "transform": {
                "^.+\\.(js|jsx|mjs|cjs|ts|tsx)$": "<rootDir>/config/jest/babelTransform.js",
                "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
                "^(?!.*\\.(js|jsx|mjs|cjs|ts|tsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
            },
            "transformIgnorePatterns": [
                "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs|cjs|ts|tsx)$",
                "^.+\\.module\\.(css|sass|scss)$"
            ],
            "modulePaths": [
                "/home/caleb/src/xxx/ui/src"
            ],
            "moduleNameMapper": {
                "^react-native$": "react-native-web",
                "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy"
            },
            "moduleFileExtensions": [
                "web.js",
                "js",
                "web.ts",
                "ts",
                "web.tsx",
                "tsx",
                "json",
                "web.jsx",
                "jsx",
                "node"
            ],
            "watchPlugins": [
                "jest-watch-typeahead/filename",
                "jest-watch-typeahead/testname"
            ],
            "resetMocks": true
        }
    }
    
    
    opened by komali2 2
  • Default date format for worksheet parsing

    Default date format for worksheet parsing

    Fix for this issue : #110 Date 02/02/1923 and 02/02/2023 were both formatted to 2/2/23

    • Added parameter dateFormat with default value YYYY-MM-DD (ISO 8601 format)
    opened by JulienGasparLopes 2
  • Improvements for unique field validations

    Improvements for unique field validations

    This should be two separate PRs, but since they are closely related I decided to submit them as one.

    Performance The current O(n^2) implementation of checking for unique values is quite slow on larger datasets. For my test file with 11k rows, this change brings down the time to 5ms from over a second.

    allowEmpty For our use case, we need some way to specify that a field is optional, but if it is specified the values have to be unique. This is useful for for example an id field, where we can generate ids if not specified.

    IMO the optimal solution would be to set allowEmpty to the default behaviour, and let users combine required and unique to get the current behaviour. But since that would be breaking, I simply opted to add an allowEmpty setting that skips the unique check for empty fields.

    opened by ineentho 2
  • MultiSelect for sheet

    MultiSelect for sheet

    I really liked this library, and I would love if was possible to select multiple worksheets (the tabs) each time, in my use case this is the most important part to decide to use this library.

    opened by ujorgeleite 0
  • Customization of ValidateDataStep

    Customization of ValidateDataStep

    Hi there, Just wondering is there anyway to modify the ValidateDataStep as attached screenshot? Basically I need to add a check All checkbox and move the "Delete Selected Rows" button to the bottom. Thanks, Quentin modify

    opened by SuperQ8 0
  • Umlauts not displayed correctly when importing .csv file

    Umlauts not displayed correctly when importing .csv file

    When importing a .csv file all "umlauts", like "รค, รผ, รถ, ..." gets display incorrect.

    image-20221201-102047

    I tested this with different sources, like hubspot .csv export, excel .csv export and test-data-generator csv. All have the same outcome regarding the โ€œumlautsโ€. Maybe there's a problem with the charset?

    opened by loeffelr 0
  • Can't resolve '@chakra-ui/react' , framer-motion, @chakra-ui/theme-tools

    Can't resolve '@chakra-ui/react' , framer-motion, @chakra-ui/theme-tools

    Hey ! I'm using node version 14.19.3 and npm v 6.14.17

    I'm getting lots of errors in my page while compiling my react code :

    Module not found: Error: Can't resolve 'framer-motion' or 'chakra-ui' in '/home/XXX/XXX/app/node_modules/@chakra-ui/menu/dist' These errors only appears with version 14 of node, if I use version 16 it is working. However for aws servors purposes, I can't use version 16 at the moment. Is there a way to make it work ?

    Also I can see a folder chakra ui being in my node-modules which is weird because the errors says it can't be found.

    Thanks :)

    opened by gjeanne-lecab 1
Releases(v2.0.8)
  • v2.0.8(Aug 4, 2022)

    ๐Ÿ’ฌ Other

    • Merge pull request #121 from abhishek-butola/master
      • PR: #0
    • Merge pull request #125 from UgnisSoftware/dependabot/npm_and_yarn/terser-4.8.1
      • PR: #0
    • Merge pull request #126 from UgnisSoftware/UGN-360
      • PR: #0
    • chore UGN-361 - update docs and set parseRaw: true as default
      • PR: #0
    • Merge pull request #127 from UgnisSoftware/UGN-361
      • PR: #0
    Uncategorized
    • add parseRaw parameter
      • PR: #0
    • Bump terser from 4.8.0 to 4.8.1
      • PR: #0
    • UGN-360 - parseRaw:true parameter tests
      • PR: #0
    • 2.0.8
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v2.0.7(Jul 19, 2022)

    ๐Ÿ’ฌ Other

    • Merge pull request #123 from UgnisSoftware/UGN-359
      • PR: #0
    Uncategorized
    • bug UGN-359 - fix trimmed rows if header.length < row.length. Show all data in SelectHeaderStep, but trim after header is selected
      • PR: #0
    • 2.0.7
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v2.0.6(Jun 17, 2022)

    ๐Ÿ› Fixes

    • fix typo
      • PR: #0

    ๐Ÿ’ฌ Other

    • Merge pull request #111 from JulienGasparLopes/default-date-format-for-worksheet-parsing
      • PR: #0
    • chore UGN-356 - add tests and update readme for new prop dateFormat
      • PR: #0
    • Merge pull request #112 from UgnisSoftware/UGN-356
      • PR: #0
    Uncategorized
    • add dateFormat parameter
      • PR: #0
    • 2.0.6
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v2.0.5(Jun 2, 2022)

    ๐Ÿ› Fixes

    • Fix UGN-314 make RSI usable on mobile
      • PR: #0
    • fix UGN-329 - use userEvent instead of fireEvent
      • PR: #0

    ๐Ÿ’ฌ Other

    • Merge pull request #106 from UgnisSoftware/UGN-314
      • PR: #0
    • chore UGN-329 - add tests to each hook
      • PR: #0
    • Merge branch 'master' into UGN-329
      • PR: #0
    • Merge pull request #107 from UgnisSoftware/UGN-329
      • PR: #0
    • chore UGN-354 - update readme to include initialStepState
      • PR: #0
    • Merge pull request #108 from UgnisSoftware/UGN-354
      • PR: #0
    • chore UGN-355 - render error toast if error is thrown in async hook
      • PR: #0
    • chore UGN-355 - fix prettier
      • PR: #0
    • Merge pull request #109 from UgnisSoftware/UGN-355
      • PR: #0
    Uncategorized
    • Update README.md
      • PR: #0
    • 2.0.5
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v2.0.4(May 17, 2022)

    ๐Ÿ› Fixes

    • Fix UGN-352 add peer dependencies for framer-motion
      • PR: #0

    ๐Ÿ’ฌ Other

    • Merge pull request #105 from UgnisSoftware/UGN-352
      • PR: #0
    Uncategorized
    • Update package lock
      • PR: #0
    • 2.0.4
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v2.0.3(May 16, 2022)

    ๐Ÿ› Fixes

    • Fix - calc for 'will become' title in a single column
      • PR: #0

    ๐Ÿ’ฌ Other

    • Merge pull request #103 from jtordgeman/fix-title_on_single_column
      • PR: #0
    Uncategorized
    • 2.0.3
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v2.0.2(May 12, 2022)

    ๐Ÿ’ฌ Other

    • Merge pull request #101 from ineentho/unique-allow-empty
      • PR: #0
    Uncategorized
    • Improve performance of unique validation rule
      • PR: #0
    • Add option "allowEmpty" for unique validations
      • PR: #0
    • 2.0.2
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(May 11, 2022)

    ๐Ÿ’ฌ Other

    • Merge pull request #100 from ineentho/allow-regexes-to-match-empty-fields
      • PR: #0
    Uncategorized
    • Allow regex validations to match empty fields
      • PR: #0
    • 2.0.1
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(May 11, 2022)

    ๐Ÿšจ Breaking change

    • initialHook was renamed to matchColumnsStepHook to keep consistency with the new hooks

    ๐Ÿ› ๏ธ New features

    • added uploadStepHook and selectHeaderStepHook hooks

    ๐Ÿ› Fixes

    • Fix table styles in uploadStep
      • PR: #0
    • Fix fade effect in safari and firefox
      • PR: #0
    • Fix UGN-330 add documentation for new hooks
      • PR: #0
    • Fix README formatting
      • PR: #0
    • Fix README formatting
      • PR: #0

    ๐Ÿ’ฌ Other

    • Merge pull request #87 from UgnisSoftware/UGN-328
      • PR: #0
    • Merge pull request #92 from UgnisSoftware/UGN-346
      • PR: #0
    • Merge pull request #95 from UgnisSoftware/UGN-300
      • PR: #0
    • Added wrappers to enable firefox/safari showing headers and validation steps
      • PR: #0
    • Merge pull request #96 from jtordgeman/master
      • PR: #0
    • Merge pull request #97 from jtordgeman/fix-firefox_not_showing_modal_tables
      • PR: #0
    • Merge pull request #98 from UgnisSoftware/jtordgeman
      • PR: #0
    • Merge pull request #99 from UgnisSoftware/UGN-330
      • PR: #0
    Uncategorized
    • feat UGN-328 UGN-331 - add hooks to each step, make them async, add loading states
      • PR: #0
    • feat UGN-328 - rename validationStepHook to matchColumnsStepHook
      • PR: #0
    • bug UGN-346 - add missing useCallback dependency
      • PR: #0
    • Refactor UGN-300 Add eslint
      • PR: #0
    • Refactor UGN-300 Add eslint for hooks
      • PR: #0
    • Refactor UGN-300 Run lint on PRs
      • PR: #0
    • Refactor UGN-300 use LF line end
      • PR: #0
    • replaced crypto with uuid
      • PR: #0
    • Refactor Remove crypto polyfill
      • PR: #0
    • Refactor Update packagelock
      • PR: #0
    • 2.0.0
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v1.0.8(Apr 14, 2022)

    ๐Ÿ’ฌ Other

    • Merge remote-tracking branch 'origin/master'
      • PR: #0
    Uncategorized
    • Update README.md
      • PR: #0
    • Update packages
      • PR: #0
    • 1.0.8
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v1.0.7(Apr 13, 2022)

    ๐Ÿ› Fixes

    • Fix UGN-337 remove enforced button color in dropzone
      • PR: #0

    ๐Ÿ’ฌ Other

    • Merge pull request #89 from UgnisSoftware/UGN-337
      • PR: #0
    Uncategorized
    • 1.0.7
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v1.0.6(Apr 6, 2022)

    ๐Ÿ› Fixes

    • Fix UGN-318 fix indexes messing up after delete
      • PR: #0
    • Fix UGN-318 find inxed by __index
      • PR: #0
    • Fix UGN-318 make index uuid instead of number
      • PR: #0

    ๐Ÿ’ฌ Other

    • chore UGN-280 - update readme
      • PR: #0
    • chore UGN-280 - edit readme
      • PR: #0
    • Merge pull request #86 from UgnisSoftware/UGN-318
      • PR: #0
    Uncategorized
    • Update storybook.yaml
      • PR: #0
    • Update storybook.yaml
      • PR: #0
    • Update storybook.yaml
      • PR: #0
    • Update README.md
      • PR: #0
    • Update README.md
      • PR: #0
    • Add crypto to jsdom
      • PR: #0
    • Add test for changing row after previous rows were deleted
      • PR: #0
    • 1.0.6
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v1.0.5(Mar 22, 2022)

    ๐Ÿ’ฌ Other

    • Merge pull request #82 from UgnisSoftware/UGN-302
      • PR: #0
    Uncategorized
    • bug UGN-302 - added selected row hover color for tables
      • PR: #0
    • 1.0.5
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v1.0.4(Mar 22, 2022)

    ๐Ÿ› Fixes

    • Fix UGN-301 fix data reverting after change
      • PR: #0

    ๐Ÿ’ฌ Other

    • Merge pull request #81 from UgnisSoftware/UGN-301
      • PR: #0
    Uncategorized
    • 1.0.4
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v1.0.3(Mar 18, 2022)

    ๐Ÿ› Fixes

    • Fix download button in stories
      • PR: #0
    • Fix UGN-284 table losing data on filter
      • PR: #0

    ๐Ÿ’ฌ Other

    • Merge pull request #80 from UgnisSoftware/UGN-284
      • PR: #0
    Uncategorized
    • 1.0.3
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v1.0.2(Mar 18, 2022)

    ๐Ÿ› Fixes

    • Fix UGN-281 Make dropdown above scrollbar
      • PR: #0
    • fix UGN-283 - fix select dropdown not dissappearing on scroll
      • PR: #0
    • Fix react-select tests
      • PR: #0

    ๐Ÿ’ฌ Other

    • Merge pull request #77 from UgnisSoftware/UGN-282
      • PR: #0
    • Merge pull request #79 from UgnisSoftware/UGN-283
      • PR: #0
    • Merge branch 'master' into UGN-281
      • PR: #0
    • Merge pull request #78 from UgnisSoftware/UGN-281
      • PR: #0
    Uncategorized
    • bug UGN-282 - fixed switch label alignment, fixed validation step heading theming
      • PR: #0
    • Update README.md
      • PR: #0
    • 1.0.2
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Mar 17, 2022)

    ๐Ÿš€ Features

    • Feature Add commonjs bundle
      • PR: #0

    ๐Ÿ› Fixes

    • Fix badge in README
      • PR: #0

    ๐Ÿ’ฌ Other

    • chore UGN-279 - update modules
      • PR: #0
    • Merge pull request #76 from UgnisSoftware/UGN-279
      • PR: #0
    Uncategorized
    • Add link to npm
      • PR: #0
    • Add link to npm
      • PR: #0
    • Add link to demo
      • PR: #0
    • Add types to npm
      • PR: #0
    • 1.0.1
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Mar 17, 2022)

    ๐Ÿš€ Features

    • feature UGN-200 - added overlay
      • PR: #0
    • feature UGN-201 - added card style to modal
      • PR: #0
    • feature UGN-213 improve validations
      • PR: #0
    • feature UGN-218 - set up css grid template for ColumnMatch component
      • PR: #0
    • feature UGN-218 - add keys to react nodes
      • PR: #0
    • Feature UGN-214 - add hooks
      • PR: #0
    • Feature UGN-225 remove number column
      • PR: #0
    • Feature UGN-209 display tooltips with error messages
      • PR: #0
    • Feature UGN-227 Select header table
      • PR: #0
    • Feature UGN-233 align tables with figma
      • PR: #0
    • Feature UGN-238 integrate select header step
      • PR: #0
    • Feature UGN-229 show warning modal after clicking close
      • PR: #0
    • Feature UGN-236 use css.gg icons
      • PR: #0
    • Feature UGN-240 upload step example table
      • PR: #0
    • Feature UGN-242 added delete and filter buttons to validation step
      • PR: #0
    • Feature UGN-241 tooltips in tables that show descriptions
      • PR: #0
    • Feature UGN-251 send correct data to onSubmit
      • PR: #0
    • Feature UGN-252 show alert when submitting with errors
      • PR: #0
    • Feature UGN-254 return Meta information in onSubmit's all
      • PR: #0
    • Feature UGN-256 filtering by errors should not include warnings and info
      • PR: #0
    • Feature UGN-262 move all text constants into configurable prop
      • PR: #0
    • Feature UGN-263 use react-select
      • PR: #0
    • Feature UGN-264 add translations to alerts
      • PR: #0
    • Feature UGN-260 Validation step tests
      • PR: #0
    • Feature UGN-239 update README
      • PR: #0
    • Feature UGN-239 update README
      • PR: #0
    • Feature UGN-269 move table styles into global theme
      • PR: #0
    • Feature UGN-271 deploy storybook
      • PR: #0
    • Feature UGN-265 improve validation tests
      • PR: #0
    • Feature UGN-276 throw error if no fields were provided
      • PR: #0
    • Feature UGN-268 truncate text everywhere
      • PR: #0

    ๐Ÿ› Fixes

    • fix - git action that runs ts
      • PR: #0
    • fix UGN-218 - fix types
      • PR: #0
    • Fix merging errors
      • PR: #0
    • Fix merge error
      • PR: #0
    • Fix simplify
      • PR: #0
    • Fix TS error
      • PR: #0
    • Fix story
      • PR: #0
    • Fix css to remove height hacks
      • PR: #0
    • Fix on continue in match header step
      • PR: #0
    • Fix stories
      • PR: #0
    • Fix types in verification step
      • PR: #0
    • Fix title
      • PR: #0
    • Fix UGN-267 fix subselect in column matching
      • PR: #0
    • Fix ts error
      • PR: #0
    • Fix UGN-275 missing dropdown border
      • PR: #0
    • Fix storybook action
      • PR: #0
    • Fix table select styles
      • PR: #0
    • Fix UGN-278 too deep TS recursion
      • PR: #0
    • Fix test
      • PR: #0

    ๐Ÿ’ฌ Other

    • Merge pull request #4 from UgnisSoftware/UGN-198
      • PR: #0
    • Merge pull request #5 from UgnisSoftware/UGN-200
      • PR: #0
    • Merge pull request #6 from UgnisSoftware/UGN-201
      • PR: #0
    • Merge pull request #7 from UgnisSoftware/UGN-202
      • PR: #0
    • Merge branch 'master' into UGN-203
      • PR: #0
    • Merge pull request #8 from UgnisSoftware/UGN-203
      • PR: #0
    • Merge pull request #9 from UgnisSoftware/UGN-204
      • PR: #0
    • Merge pull request #10 from UgnisSoftware/UGN-208
      • PR: #0
    • Merge branch 'master' into UGN-205
      • PR: #0
    • Merge pull request #11 from UgnisSoftware/UGN-205
      • PR: #0
    • Merge pull request #12 from UgnisSoftware/UGN-210
      • PR: #0
    • Merge branch 'master' into UGN-206
      • PR: #0
    • Merge pull request #13 from UgnisSoftware/UGN-206
      • PR: #0
    • Merge pull request #14 from UgnisSoftware/UGN-216
      • PR: #0
    • Merge pull request #15 from UgnisSoftware/UGN-207
      • PR: #0
    • Merge branch 'master' into UGN-213
      • PR: #0
    • Merge pull request #17 from UgnisSoftware/UGN-218
      • PR: #0
    • Merge pull request #16 from UgnisSoftware/UGN-213
      • PR: #0
    • Merge pull request #18 from UgnisSoftware/UGN-226
      • PR: #0
    • Merge branch 'master' into UGN-219
      • PR: #0
    • Merge pull request #19 from UgnisSoftware/UGN-219
      • PR: #0
    • Merge pull request #20 from UgnisSoftware/UGN-214
      • PR: #0
    • Merge pull request #21 from UgnisSoftware/UGN-225
      • PR: #0
    • Merge pull request #22 from UgnisSoftware/UGN-234
      • PR: #0
    • Merge pull request #23 from UgnisSoftware/UGN-209
      • PR: #0
    • Merge pull request #24 from UgnisSoftware/UGN-227
      • PR: #0
    • Merge branch 'master' into UGN-221
      • PR: #0
    • Merge pull request #25 from UgnisSoftware/UGN-221
      • PR: #0
    • Merge pull request #26 from UgnisSoftware/UGN-233
      • PR: #0
    • Merge pull request #27 from UgnisSoftware/UGN-220
      • PR: #0
    • Merge pull request #29 from UgnisSoftware/UGN-229
      • PR: #0
    • Merge pull request #28 from UgnisSoftware/UGN-238
      • PR: #0
    • Merge pull request #30 from UgnisSoftware/UGN-236
      • PR: #0
    • Merge pull request #31 from UgnisSoftware/UGN-237
      • PR: #0
    • Merge branch 'master' into UGN-222
      • PR: #0
    • Merge pull request #32 from UgnisSoftware/UGN-240
      • PR: #0
    • Merge branch 'master' into UGN-222
      • PR: #0
    • Merge branch 'UGN-245' into UGN-222
      • PR: #0
    • Merge pull request #33 from UgnisSoftware/UGN-222
      • PR: #0
    • Merge pull request #35 from UgnisSoftware/UGN-222.2
      • PR: #0
    • Merge pull request #36 from UgnisSoftware/UGN-242
      • PR: #0
    • Merge pull request #37 from UgnisSoftware/UGN-244
      • PR: #0
    • Merge branch 'master' into UGN-235
      • PR: #0
    • Merge pull request #38 from UgnisSoftware/UGN-235
      • PR: #0
    • Merge pull request #39 from UgnisSoftware/UGN-253
      • PR: #0
    • Merge pull request #40 from UgnisSoftware/UGN-241
      • PR: #0
    • Merge pull request #41 from UgnisSoftware/UGN-251
      • PR: #0
    • Merge pull request #42 from UgnisSoftware/UGN-252
      • PR: #0
    • Merge pull request #43 from UgnisSoftware/UGN-254
      • PR: #0
    • chore (UGN-224) - fix typescript errors
      • PR: #0
    • Merge pull request #44 from UgnisSoftware/UGN-224
      • PR: #0
    • Merge pull request #45 from UgnisSoftware/UGN-246
      • PR: #0
    • Merge pull request #46 from UgnisSoftware/UGN-256
      • PR: #0
    • Merge pull request #47 from UgnisSoftware/UGN-262
      • PR: #0
    • Merge pull request #48 from UgnisSoftware/UGN-250
      • PR: #0
    • Merge pull request #49 from UgnisSoftware/UGN-263
      • PR: #0
    • Merge pull request #50 from UgnisSoftware/UGN-255
      • PR: #0
    • Merge pull request #51 from UgnisSoftware/UGN-247
      • PR: #0
    • Merge pull request #52 from UgnisSoftware/UGN-257
      • PR: #0
    • Merge pull request #53 from UgnisSoftware/UGN-258
      • PR: #0
    • Merge pull request #54 from UgnisSoftware/UGN-259
      • PR: #0
    • Merge pull request #55 from UgnisSoftware/UGN-261
      • PR: #0
    • Merge branch 'master' into UGN-231
      • PR: #0
    • Merge pull request #56 from UgnisSoftware/UGN-231
      • PR: #0
    • Merge branch 'master' into UGN-264
      • PR: #0
    • Merge pull request #57 from UgnisSoftware/UGN-264
      • PR: #0
    • Merge branch 'master' into UGN-232
      • PR: #0
    • Merge pull request #58 from UgnisSoftware/UGN-232
      • PR: #0
    • Merge pull request #59 from UgnisSoftware/UGN-260
      • PR: #0
    • Merge pull request #60 from UgnisSoftware/UGN-239
      • PR: #0
    • Merge pull request #61 from UgnisSoftware/UGN-248
      • PR: #0
    • Merge pull request #62 from UgnisSoftware/UGN-248-1
      • PR: #0
    • Merge pull request #63 from UgnisSoftware/UGN-248-2
      • PR: #0
    • Merge pull request #64 from UgnisSoftware/UGN-267
      • PR: #0
    • Merge pull request #65 from UgnisSoftware/UGN-275
      • PR: #0
    • Merge pull request #66 from UgnisSoftware/UGN-269
      • PR: #0
    • Merge branch 'master' into UGN-248-4
      • PR: #0
    • Merge pull request #67 from UgnisSoftware/UGN-248-4
      • PR: #0
    • Merge pull request #68 from UgnisSoftware/UGN-271
      • PR: #0
    • Merge pull request #72 from UgnisSoftware/UGN-248-5
      • PR: #0
    • Merge pull request #70 from UgnisSoftware/UGN-276
      • PR: #0
    • Merge pull request #69 from UgnisSoftware/UGN-265
      • PR: #0
    • Merge branch 'master' into UGN-268
      • PR: #0
    • Merge pull request #71 from UgnisSoftware/UGN-268
      • PR: #0
    • Merge pull request #73 from UgnisSoftware/UGN-272
      • PR: #0
    • Merge pull request #74 from UgnisSoftware/UGN-277
      • PR: #0
    • Merge pull request #75 from UgnisSoftware/UGN-278
      • PR: #0
    Uncategorized
    • UGN-198 - add docusaurus
      • PR: #0
    • feat UGN-202 - added stepper component
      • PR: #0
    • feat UGN-203 - implemented drop-zone
      • PR: #0
    • feat UGN-204 - cleanup, added dynamic title, context for config
      • PR: #0
    • Update packages
      • PR: #0
    • feat UGN-208 - setup table component
      • PR: #0
    • feat UGN-205 - added workbook sheet selection
      • PR: #0
    • feat UGN-205 - move check for multiple sheets from DropZone to UploadFlow
      • PR: #0
    • feat UGN-210 - add boolean / string / select components
      • PR: #0
    • feat UGN-206 - added continue button to select sheet screen
      • PR: #0
    • feat UGN-216 - allow selecting rows in table
      • PR: #0
    • feat UGN-207 - add loading state to DropZone
      • PR: #0
    • feat UGN-213 - add validations
      • PR: #0
    • refactor UGN-226 - remove lape, improve types, refactor table component
      • PR: #0
    • Rename field alternate matches
      • PR: #0
    • feat UGN-219 - added gradient to user's table example
      • PR: #0
    • Refactor UGN-234 move validation table into component and improve types
      • PR: #0
    • Refactor UGN-234 split validation table into separate files
      • PR: #0
    • Refactor UGN-227 remove unnecessary code
      • PR: #0
    • feat UGN-221 - add column matching
      • PR: #0
    • Remove unnecessary config
      • PR: #0
    • feat UGN-220 - added column ignoring and reverting functionality
      • PR: #0
    • Rename modals to alerts
      • PR: #0
    • Rename modals to alerts
      • PR: #0
    • Center dialog
      • PR: #0
    • Move text into constants
      • PR: #0
    • Change scroll to auto
      • PR: #0
    • Revert unnecessary change
      • PR: #0
    • Refactor UGN-237 change project structure
      • PR: #0
    • feat UGN-222 - [WIP] colum matching with fieldType === 'select'
      • PR: #0
    • feat UGN-222 - refactor grid into a separate component and remove unnecessary component - MatchColumnFields
      • PR: #0
    • feat UGN-222 - fix selects' styles
      • PR: #0
    • feat UGN-222 - manage type === 'select' column options matches
      • PR: #0
    • Refactor UGN-245 cleanup storybook, flow, and types
      • PR: #0
    • feat UGN-222 - fix ts error
      • PR: #0
    • Refactor UGN-245 make matching step use real data
      • PR: #0
    • feat UGN-222 - fix column type === 'select' options
      • PR: #0
    • Move strings to constants
      • PR: #0
    • Refactor UGN-244 improve useMemo dependencies, change nested ternary to switch statement, wrap functions in useCallback
      • PR: #0
    • feat UGN-235 - normalize data after matchColumn step and use as table input
      • PR: #0
    • Refactor UGN-253 remove outline to stop modal from rerendering on scroll, use theme instead of styled boxes for header/body/footer
      • PR: #0
    • Refactor output
      • PR: #0
    • Format
      • PR: #0
    • Refactor UGN-224 typescript generics
      • PR: #0
    • feat UGN-246 - added auto column matching, made it optional
      • PR: #0
    • feat UGN-246 - simplify TS type
      • PR: #0
    • feat UGN-246 - fix ts type
      • PR: #0
    • Remove commented code
      • PR: #0
    • feat UGN-250 - added booleanMatches prop and whitelist of alternate boolean matches
      • PR: #0
    • Testing UGN-255 add upload step test
      • PR: #0
    • Use popper for menu in matching columns
      • PR: #0
    • feat UGN-263 - add maxRecords and maxFileSize validations
      • PR: #0
    • Cleanup
      • PR: #0
    • Allow flipping
      • PR: #0
    • Tests UGN-257 select sheet step test
      • PR: #0
    • Tests UGN-258 select header row test and bugfix
      • PR: #0
    • Tests UGN-259 match columns test
      • PR: #0
    • Tests UGN-261 test modal closing, fix console warnings
      • PR: #0
    • UGN-231 - warning modal for unmached required fields
      • PR: #0
    • feat UGN-231 - remove unnecessary render prop
      • PR: #0
    • feat UGN-231 - fix test
      • PR: #0
    • Move unmatched fields alert translations
      • PR: #0
    • format
      • PR: #0
    • feat UGN-232 - added toast that warns about matching one field twice
      • PR: #0
    • feat UGN-232 - remove unnecessary period from translations
      • PR: #0
    • feat UGN-248 pt.1 - centralize all styles to theme object, UploadFile step
      • PR: #0
    • feat UGN-248 - remove comment
      • PR: #0
    • feat UGN-248 - fix failing import
      • PR: #0
    • feat UGN-248 - centralized theme in SelectSheet step
      • PR: #0
    • feat UGN-248 pt.2 - centralize theme in SelectHeader step
      • PR: #0
    • Update README.md
      • PR: #0
    • Update Readme
      • PR: #0
    • Remove comment
      • PR: #0
    • Remove forced bg on header
      • PR: #0
    • Use theme
      • PR: #0
    • feat UFN-248 - centralize MatchColumn styles to theme
      • PR: #0
    • feat UGN-248 - add missing ignored column styles
      • PR: #0
    • feat UGN-248 - remove unused import
      • PR: #0
    • Increase timout
      • PR: #0
    • Change storybook main to TS
      • PR: #0
    • feat UGN-248 pt.5 centralize custom styling for table and alerts
      • PR: #0
    • feat(UGN-258) - cleanup
      • PR: #0
    • Tests UGN-272 add column matching tests
      • PR: #0
    • bug UGN-277 - fix automatching when lavenstein distance === 0
      • PR: #0
    • Revert vertical blur
      • PR: #0
    • Revert tsconfig changes
      • PR: #0
    • 1.0.0
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
  • v0.0.4(Feb 9, 2022)

  • v0.0.3(Feb 9, 2022)

    ๐Ÿ› Fixes

    • fix - npm release:minor script
      • PR: #0

    ๐Ÿ’ฌ Other

    • Merge pull request #2 from UgnisSoftware/UGN-176
      • PR: #0
    Uncategorized
    • UGN-176 chore - open component as a modal, tie chakra provider to modal only (overlay excluded)
      • PR: #0
    • 0.0.3
      • PR: #0
    Source code(tar.gz)
    Source code(zip)
Boost is a Microsoft Excel Add-in to help developers import large excel workbooks into their database using SQL queries

Microsoft Excel Add-in for Developers About Us Boost is a Microsoft Excel Add-in to help developers import large excel workbooks into their database u

OSLabs Beta 30 Sep 30, 2022
Mind Mapping to excel, or excel to .xmind file

Mind Mapping To Excel Project setup Prepare project npm install 1ใ€Fetch data and generate excel Open the Mind Mapping like this Process On Mind Mappi

xuzelin995 3 May 5, 2022
jsonrawtoxlsx is library to convert json raw (array) into xlsx file

Welcome to jsonrawtoxlsx ?? โœจ What is jsonrawtoxlsx? jsonrawtoxlsx is library to convert json raw (array) into xlsx file โšก๏ธ Installation using npm npm

M Arie Syukron 17 Dec 23, 2022
Grupprojekt fรถr kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet fรถr kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide Fรถr information om hur utv

Svante Jonsson IT-Hรถgskolan 3 May 18, 2022
Hemsida fรถr personer i Sverige som kan och vill erbjuda boende till mรคnniskor pรฅ flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo fรถr kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
A table component for your Mantine data-rich applications, supporting asynchronous data loading, column sorting, custom cell data rendering, row context menus, dark theme, and more.

Mantine DataTable A "dark-theme aware" table component for your Mantine UI data-rich applications, featuring asynchronous data loading support, pagina

Ionut-Cristian Florescu 331 Jan 4, 2023
tb-grid is a super simple and lightweight 12 column responsive grid system utilizing css grid.

tb-grid Lightweight (<1kb gzipped) 12 column grid system, built with css grid. ?? Demos & Playground Have a look at those examples: Main Demo: https:/

Taskbase 26 Dec 28, 2022
Scrape tweets from Twitter search results based on keywords and date range using Playwright. Save scraped tweets in a CSV file for easy analysis

Tweet Harvest (Twitter Crawler) Tweet Harvest is a command-line tool that uses Playwright to scrape tweets from Twitter search results based on specif

Helmi Satria 33 Aug 9, 2023
Yunisdev-table2csv - Lightweight library to convert HTML table to CSV file

Installation Add following HTML before body end: <script src="https://yunisdev.github.io/table2csv/table2csv.min.js"></script> <!-- or --> <script src

Yunis Huseynzade 2 Oct 19, 2020
CancerDB: A public domain knowledge graph about cancer treatments that compiles to a CSV file.

CancerDB: A public domain csv file to help build the next great cure CancerDB is a public domain database and website containing facts about all types

Breck Yunits 21 Dec 15, 2022
๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๊ธฐ From DataServer, Csv File

Node.js ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๊ธฐ From DataServer, Csv File ์‹คํ–‰ ๋ฐฉ๋ฒ• ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์‹คํ–‰๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. npm run dev ์‹คํ–‰ or npm run build ํ›„ npm run start http://localhost:3000/api-docs ๋กœ ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค

Dominic Kim 1 Oct 10, 2022
RenderIf is a function that receives a validation as a parameter, and if that validation is true, the content passed as children will be displayed. Try it!

RenderIf RenderIf is a function that receives a validation as a parameter, and if that validation is true, the content passed as children will be disp

Oscar Cornejo Aguila 6 Jul 12, 2022
JSON Visio is data visualization tool for your json data which seamlessly illustrates your data on graphs without having to restructure anything, paste directly or import file.

JSON Visio is data visualization tool for your json data which seamlessly illustrates your data on graphs without having to restructure anything, paste directly or import file.

Aykut Saraรง 20.6k Jan 4, 2023
A quickstart AWS Lambda function code generator. Downloads a template function code file, test harness file, sample SAM deffiniation and appropriate file structure.

Welcome to function-stencil ?? A quickstart AWS Lambda function code generator. Downloads a template function code file, test harness file, sample SAM

Ben Smith 21 Jun 20, 2022
Serve file server with single zip file as file system in Deno.

zipland Serve file server with one-single zip file in Deno. Support zip just zip32 with deflated or uncompressed serving plaintext deflate Examples Yo

Yongwook Choi 18 Nov 2, 2022
Feel free to create new file, don't hesitate to pull your code, the most important thing is that the file name here must match your nickname so that file does not conflict with other people.

Hacktoberfest Indonesia Apa Itu Hacktoberfest ? Hacktoberfest adalah acara tahunan yang bertujuan untuk mendorong berkontribusi kedalam ekosistem open

Juan Daniel 5 Dec 15, 2022
Venni backend - The backend of the Venni client apps implementing the credit card payments, matching algorithms, bank transfers, trip rating system, and more.

Cloud Functions Description This repository contains the cloud functions used in the Firebase backend of the Venni apps. Local Development Setup For t

Abrantes 1 Jan 3, 2022
Automaticly parses known pocket ips patch resources, scans folders or zip files for matching roms and applies the patches.

Pocket Automaton Automaticly parses known pocket ips patch resources, scans folders or zip files for matching roms and applies the patches. Usage pock

null 3 Nov 27, 2022