Git Product home page Git Product logo

Comments (7)

alex-gla avatar alex-gla commented on August 16, 2024 1

i used your example, but i faced with another issue. if i set cellRenderer = EditableCell for columns i do not have any problems and i do not need to have autoFocus. but when i start use:

  const components = {
    TableCell: EditableCell,
  };

i need to have autoFocus and code seems to be broken:

const { Overlay } = ReactOverlays;
const CellContainer = styled.div`
  display: flex;
  flex: 1 0 100%;
  align-items: center;
  height: 100%;
  width: 100%;
  overflow: hidden;
  margin: 0 -5px;
  padding: 5px;
  border: 1px dashed transparent;
`
const GlobalStyle = createGlobalStyle`
  .BaseTable__row:hover,
  .BaseTable__row--hover {
    ${CellContainer} {
      border: 1px dashed #ccc;
    }
  }
`
const Input = styled.input`
  width: 100%;
  height: 30px;
  margin-top: 10px;
`

export default () => {
  const [getColumns, setColumns] = React.useState([]);
  const [getData, setData] = React.useState([]);
  const [isLoading, setLoading] = React.useState(true);

  React.useEffect(() => {
    if (isLoading) {
      const columns = generateColumns(2);
      const data = generateData(columns, 4);
      setColumns(columns);
      setData(data);
      //   columns.forEach(column => {
      //   column.cellRenderer  = EditableCell
      //   });
      setLoading(false);
    }
  }, [isLoading])


  const updateCell = (value, cellProps) => {
    setData(data => data.map(cell => cell.id == cellProps.rowData.id ?
      {
        ...cell,
        [cellProps.column.key]: value
      }
      : cell
    ));
  }

  const EditableCell = (cellProps) => {
    handleChange = e => {
      updateCell(e.target.value, cellProps)
    }
    return (
      <Input autoFocus type="text" value={cellProps.cellData}
        onChange={this.handleChange} />
    );
  };


  if (isLoading)
    return (<h1>loading...</h1>)

  const components = {
    TableCell: EditableCell,
  };

  return (
    <>
      <GlobalStyle />
      <Table fixed
        columns={getColumns}
        data={getData}
        components={components}
      />
    </>
  )
}

from react-base-table.

nihgwu avatar nihgwu commented on August 16, 2024

You should not end editing on text change, try this one https://autodesk.github.io/react-base-table/playground#MYewdgzgLgBA3jA8gNwKYCcA2BDAnjAXxgF4YAlVbYKFDHXCAKEdElgGFVNN3wpsAlmAwkY0XJlQATAHRSByAAaMYMeRAAO9AFwwAZpIAeAbhX6jugIwwADDEs2bAUlOrsmAQHMwAWgFRUAFsIXWBUMAD0VxgAC1QvGKgrRxczAHcBKSgY5OdokDR0AxA03RjMqXDowOx0TyFdOx8AVg0TMw1sKXkwT11W9tUAIxB0SvQrNrVsCDipGCh0bEhO9HCoU2UWcGgYAHFMECH3AGUoCVRRYDXsAIOj0-PJZVUZACEZ1AAVbCHJAH1-ugStoYgUMAAaMzvT4-P6oQHAtI+HxgwrwMyqAAkcE43F4EUEwnQRDgmNUMBGYwwk0M01m0hgAGJgKzoqoCGZOVtWLsTlxUNRROJJLIIALqC8YBksjl7ClonEEkkYABmGxtaq1eq+KAgDTJTWMHk4CAQGAAUXk-HheMwMFQhgCYCk5ooVCgMgACgBXNa8QIacDrDGqaC3S6kMkUmDIdw+1C6bICCAyDTAjSpsLcAAit2wUJj0n8Qj6+nc4sLhGYYdQUB+dTrFD0ojWLeIAD4YAAKZOp-iNqDN1uoPQAShrME8dYb06Ho9E3bHJC7fZkA7nzcnMWWUkk7A8wAA1ovl52FuVU+KoGcI92EMWoKWk+gE4QJ2Ydy7JAAJTKRnsz1XS8ZGvW8AnvB1rWfctMHFd9t13fcv2nURIw7ck1zA-gIOjGNY3jRMHXXbU6xkONMATKsOQnGMzEnNYXQwJdQwpXlYAQVh+CESEYCRABJJjDAhGBQEowIwEEyo6SIUg13TfUmBjdj4AIyjUBEx9SxE7NMDzfhCFELCcNQZhyTWKA-TAHtyVUAAeO0CW44k+NHYg4CwmdSPnPQiHAA8BGPdy1y-PdUAC48CAw-CKTgABCLTehgAAyZK1ITTkYtUOBEs8FK0rXDcmwXVKbKyik7NoLA8FsrLZhKWqYoMAQNEa-DgRAKADxAcU2uUvgiQwdyuMGkk+opIqoGCkC51nYrfPG1RwD-SpppTGRQt-f9MvKmBot27LIIUzMRK0KgghDAggLKg6KvkZBFvwuAZBe46IB226KRFVB3Lwz6YxetMMyvJ4NMemKZWyJMQMm5sZBAPQ9GvAB1TJsmo-7VD1A1ways6wkCENiGJmAAHJsdJ3HyoAfgvdbYdHeHEevH94k8RIqay3QfEK7y4YRpG61Z5UMc+ggPtu-bMbsoQNB9WBsHlkAADEQGAH1zXODQfoAIgCJ0ddUCiE3c43UD8sB2BQn6PJAzbwutogAHopduuynfu13yrHCWYvdqr6C9ikfdq93HIGnj0Fd2jq05bY2FEkBxMgURp2JCNeGTiBuwAJgnFSpHzVPwgwCN9OwbsxJ9CSIBEhwPyrmuAG0bAAXRkXSKCYtZ0FEK1-F+fcuEwbYs5b9vIZiUR1RsZhHSDdBYEqPRFcwWAWPPbszDs127PuY5MDOC4YBd8k7LhSR9AEQxGUbyBhqT6vICIQv+Hc1-sGd-b3YwscgA

BTW, for input you don't need to use Overlay actually unless you need to show validation message

from react-base-table.

alex-gla avatar alex-gla commented on August 16, 2024

@nihgwu ^

from react-base-table.

nihgwu avatar nihgwu commented on August 16, 2024

what do mean broken? it works https://autodesk.github.io/react-base-table/playground#MYewdgzgLgBA3jA8gNwKYCcA2BDAnjAXxgF4YAlVbYKFDHXCAbgChRJYBhVTTD8KbAEswGEjGi5MqACYA6aYOQADZjBgKIAB3oAuGADMpADxZrDqI3oCMMAAwwrt2wFJTMbJkEBzMAFpBUKgAthB6wKhggehuABao3jFQ1k6uqjAA7oLSUDHJLm4gaOiGIOl6MVnSEW5B2Ohewnr2vgCsmiZpmtjSCmBeem0dagBGIOhV6Nbt6tgQcdIwUOjYkF3oEVAsKmzQMADimCDDHgDKUJKoYsDr2IEHR6fnUipqsgBCs6gAKtjDUgD6-3QpR0MUKGAANGl3p8fn9UIDgelfL4wUV4Gk1AASOBcHh8SJCEToIhwTFqGCjcYYKZGGZzGQwADEwFZbjUBDSnO24F2AEkwJoAK6wUgSKRyYTCqAvDJZHJ5VJqOIJJIwADMtnaNTqDT8UBAmmS2uYKmYFk0Y1gVX02CFmFgAAoAJQkAB8GLUO1gAG0vKgoHxMEKgpAIeIA0GQ5AALpiChUKCyIUQVBnW6oR0+mPOtzemB+gMAEVu2HDqagJYEcdICeoydT6cCWZzed5vsEEAAMiBusIvOWAz2+30a+RKPWU2mBM2lkLULnmGk60mpwBRfT6VDUR0u92eimCfQwR2d4e9LyuskUin50DB0MQMT+4kZqOPx0AJkXN697ZmAjPhEGAZlW2COve0YQOGAAsP6-hW76QBBIAPpA8E3hWYGOtIpYYRSAD0BG3qhUGyPoYxrlQMQoWh+7Xr+REkWhsjhDwFBgBMohiGuCgCPCeKYOSahMRy+FqBW579o6tqYKm+Gchy4Y+mevYXjmS5pPmQqaLhgSCWIjrIB487hmxmAAArApoECusQHoMRJxaljhpb7np2CyLUmgQdwmD7uZshZCQpDmVZhoQLISJgUFCwAPzCQev4wLIqXmVCyVqD6YXWZFkGhrIADWqC4DGejGcGqCJYpv5hH55LOvBnJaf+vEBL8UgGaQvk8OFNl2Q55IxCs0idcNfSXKQk2DclOl6aggmOqgsgCPUAayBVpkwDlEXOuSNVqOsUBCugYAnolAA8ArSu4IogAAYiAwAposuCaKgxAAESBEYUCfTAm0fXAO02axflgQdv7gBw43+sQcA5J2sjjaNC2w6gRAEW6DVuAQLBLmoR4nqpI6XuSR0nWdjoXTEVhuocpOpbIF0EbTbp7S17DbSAQSWiIkRPqQjkwHCnV+XobX8WLPAZYQ+OHQGlPnTeF3Y8lF33McmBnBcMBY5douXPoghGDIiV-mhEDw-6gakY+kM3h51vOQIDskbz4AbFbwM83zXtu-rKuBzAe0EEAA

from react-base-table.

alex-gla avatar alex-gla commented on August 16, 2024

@nihgwu could you try to change some value at text input and then press tab

test`

from react-base-table.

nihgwu avatar nihgwu commented on August 16, 2024

https://autodesk.github.io/react-base-table/playground#MYewdgzgLgBA3jA8gNwKYCcA2BDAnjAXxgF4YAlVbYKFDHXCAbgChRJYBhVTTD8KbAEswGEjGi5MqACYA6aYOQADZjBgKIAB3oAuGADMpADxZrDqI3oCMMAAwwrt2wFJTMbJkEBzMAFpBUKgAthB6wKhggehuABao3jFQ1k6uqjAA7oLSUDHJLm4gaOiGIOl6MVnSEW5B2Ohewnr2vgCsmiZpmtjSCmBeem0dagBGIOhV6Nbt6tgQcdIwUOjYkF3oEVAsKmzQMADimCDDHgDKUJKoYsDr2IEHR6fnUipqsgBCs6gAKtjDUgD6-3QpR0MUKGAANGl3p8fn9UIDgelfL4wUV4Gk1AASOBcHh8SJCEToIhwTFqGCjcYYKZGGZzGQwADEwFZbjUBDSnO24F2AEkwJoAK6wUgSKRyYTCqAvDJZHJ5VJqOIJJIwADMtnaNTqDT8UBAmmS2uYKmYUlg0lu2Ah4lQUAAItaWKxebAhZorYE8ZgxAAKZAeIWoW3hHgABWBmggAEoSAA+DFqCD2p0CP1e7AJmYCWS1TR+sO+4iJouyLIkUhFyOGiCyJFp7DlhYAfnJZIpFNk3aLUM7agA2tWo3XQJghUEwLIANaoXAAXT0gfHqHJnM7YW4mDSMZjLE5rvYMAAogoBPCff7h7W4yWkzAYitpFIOI++pdSB-Ex2KR6vagfT9VBZAEep7VkZdg1DLca2jGMuTSdYoCFdAwBgP1yQAHgFaVFlwTRUGIAAiQIjCgIiYEgwi4GvaNZCLRt137cBXxWLxqJyQQ6zfZ8ALfdiiAAenjHd9xdHZYFAIJNHADYIDEH84RfLc9FPAJfmUngoQIF0LBk9BLVQfRsCFTBYD9W9vzSCSYAHdioD4cdJwgW0UwckAnMgecxAoKgoFkIUUzOW5UD9Ad5z3NIB0zVzU2tbzSF86gAqCgRAjCiKXTUGyBy4gAZEBumELxYqgAqir6BLyEoZLAtQYL0qWYNIrSJL-Lq499H0VBqD9Czsx-NRBH0dD8sK3ovDjQaKRsscJ0gMR2OJELHPmiA-QAJki-sYBszNFoiDAQsbQsPLW20ABZtv7NzVuc07PNjdkKTck7M2uztBMEmazuc2R9DGY8qBiB75oG8k1C+n7PPorcKDACZRDENTz007cdqhjkPpe+1yomv1jMwFNsaYghbVyiA8eKiLmDSYbRsp8birjJCULQv1MJiKx40OCqvG7WRMMErn43gxD7TZ9CsJEnbMPuY5MDOC4YGEiGYEwpTLn0QQjBkNXst+yBiDgey7sgJidszY3Mwt-spJkkRIggY37dkp3bchmWKSFr34IIIA

autoFocus makes no sense here, it's used if the cell is plain text in normal mode and input in editing mode, and components is considered to be a constant, but in your version it's changing all the time
BTW, I just modified your code to make it work, but actually it should not be implemented in that way

from react-base-table.

alex-gla avatar alex-gla commented on August 16, 2024

it works, thank you for your help

from react-base-table.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.