{"id":24652274,"url":"https://github.com/laclys/drag-select-rc","last_synced_at":"2025-06-12T15:38:15.713Z","repository":{"id":38984047,"uuid":"237640744","full_name":"laclys/drag-select-rc","owner":"laclys","description":"A React Drag \u0026 Drop Selection Component for Table  (headless UI component)","archived":false,"fork":false,"pushed_at":"2024-08-28T16:24:07.000Z","size":6589,"stargazers_count":3,"open_issues_count":4,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-01T08:51:43.983Z","etag":null,"topics":["headlessui","react","react-component","rollup","typescript"],"latest_commit_sha":null,"homepage":"https://laclys.github.io/drag-select-rc/storybook-static/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/laclys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-02-01T16:12:56.000Z","updated_at":"2024-10-01T01:54:12.000Z","dependencies_parsed_at":"2023-02-18T01:00:40.271Z","dependency_job_id":null,"html_url":"https://github.com/laclys/drag-select-rc","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/laclys/drag-select-rc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laclys%2Fdrag-select-rc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laclys%2Fdrag-select-rc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laclys%2Fdrag-select-rc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laclys%2Fdrag-select-rc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/laclys","download_url":"https://codeload.github.com/laclys/drag-select-rc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/laclys%2Fdrag-select-rc/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259494803,"owners_count":22866573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["headlessui","react","react-component","rollup","typescript"],"created_at":"2025-01-25T19:14:27.578Z","updated_at":"2025-06-12T15:38:15.686Z","avatar_url":"https://github.com/laclys.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# drag-select-rc\n\n  [![](https://img.shields.io/github/license/laclys/drag-select-rc)](https://github.com/laclys/drag-select-rc)\n  [![](https://img.shields.io/bundlephobia/min/drag-select-rc)](https://www.npmjs.com/package/drag-select-rc)\n  [![](https://img.shields.io/npm/dm/drag-select-rc)](https://www.npmjs.com/package/drag-select-rc)\n\n\n\n- A drag-select react component(v1.1.0)\n[Storybook Demo](https://laclys.github.io/drag-select-rc/storybook-static/)\n![](./pic/demo.jpg)\n\n### Installation\n- `npm i drag-select-rc --save`\n\n   or\n\n- `npm instal https://github.com/laclys/drag-select-rc.git --save`\n\n### Usage\n\n``` javascript\nimport React, { useState } from \"react\";\nimport DragSelect from \"drag-select-rc\";\nimport \"./table.scss\";\n\nconst WEEK_S = [\"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"];\n\nexport const index = () =\u003e {\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  const [cells, setCells] = useState(initCellsFunc());\n  const changeDrag = (val) =\u003e {\n    action('draged!')\n    setCells(val)\n  };\n\n  return (\n    \u003cDragSelect value={cells} onChange={changeDrag}\u003e\n      \u003ctr\u003e\n        \u003ctd disabled\u003e星期/时段\u003c/td\u003e\n        {Array(24)\n          .fill(null)\n          .map((item, index) =\u003e (\n            \u003ctd disabled key={index}\u003e{`${index}-${index + 1}`}\u003c/td\u003e\n          ))}\n      \u003c/tr\u003e\n      {Array(7)\n        .fill(null)\n        .map((item, index) =\u003e {\n          return (\n            \u003ctr key={`${index}__TR`}\u003e\n              \u003ctd disabled\u003e{WEEK_S[index]}\u003c/td\u003e\n              {Array(24)\n                .fill(null)\n                .map((ele, idx) =\u003e (\n                  \u003ctd key={idx} /\u003e\n                ))}\n            \u003c/tr\u003e\n          );\n        })}\n    \u003c/DragSelect\u003e\n  );\n};\n\n// helpers\nconst initCellsFunc = () =\u003e {\n  let arr = new Array(8); // 25rows\n  for (let i = 0; i \u003c arr.length; i++) {\n    arr[i] = new Array(25).fill(true);\n  }\n  return arr;\n};\n\n```\n```scss\n// table.scss\n$border-color: #d9d9d9;\n$disabled-color: #efefef;\n$selected-color: #fff6de;\n$being-selected-color: #defbff;\n\n.table-drag-select {\n  width: 100%;\n  word-break: break-word;\n  border: 1px solid $border-color;\n  font-size: 10px;\n}\n\n.table-drag-select td {\n  min-width: 30px;\n  min-height: 30px;\n  border-right: 1px solid $border-color;\n  border-bottom: 1px solid $border-color;\n}\n\n.table-drag-select td.cell-enabled {\n  background: white;\n  cursor: cell;\n}\n\n.table-drag-select td.cell-disabled {\n  text-align: center;\n  background: $disabled-color;\n}\n\n.table-drag-select td.cell-selected {\n  background-color: $selected-color;\n}\n\n.table-drag-select td.cell-being-selected {\n  background-color: $being-selected-color;\n}\n\n```\n\n\n### Dev\n- `npm run storybook` run storybook server on http://localhost:6006/\n- `npm run build-storybook` build storybook-static\n- `npm run build`\n\n### License\n- MIT\n\nHave fun 👿\n\n\n----\n\n### Changelog\n1.1.0 (2023.05.15)\n\n- Update `demo page` storybook version(5 -\u003e 7 (Built via @storybook/react-vite)) \u0026\u0026 refactor `.storybook files` \u0026\u0026 rebuild `storybook-static`\n- Update core npm package(react -\u003e 18..)\n- rebuild npm version 1.1.0\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaclys%2Fdrag-select-rc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flaclys%2Fdrag-select-rc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaclys%2Fdrag-select-rc/lists"}