From 7544549e109c21837ff44ca5495c571e9b1e841f Mon Sep 17 00:00:00 2001 From: Patrick Fic Date: Wed, 22 Apr 2020 15:53:22 -0700 Subject: [PATCH] BOD-71 Added dependencies and pages for kanban production board. --- bodyshop_translations.babel | 42 ++++++ client/package.json | 1 + .../production-board-kanban.component.jsx | 52 ++++++++ .../production-board-kanban.container.jsx | 17 +++ .../pages/manage/manage.page.component.jsx | 8 ++ .../production-board.component.jsx | 6 + .../production-board.container.jsx | 45 +++++++ client/src/translations/en_us/common.json | 2 + client/src/translations/es/common.json | 2 + client/src/translations/fr/common.json | 2 + client/yarn.lock | 120 ++++++++++++++++-- 11 files changed, 289 insertions(+), 8 deletions(-) create mode 100644 client/src/components/production-board-kanban/production-board-kanban.component.jsx create mode 100644 client/src/components/production-board-kanban/production-board-kanban.container.jsx create mode 100644 client/src/pages/production-board/production-board.component.jsx create mode 100644 client/src/pages/production-board/production-board.container.jsx diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 8e1022741..b4aaee9da 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -11980,6 +11980,27 @@ + + productionboard + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + productionlist false @@ -12360,6 +12381,27 @@ + + productionboard + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + productionlist false diff --git a/client/package.json b/client/package.json index 802da011c..0d2424469 100644 --- a/client/package.json +++ b/client/package.json @@ -40,6 +40,7 @@ "react-redux": "^7.2.0", "react-router-dom": "^5.1.2", "react-scripts": "3.4.1", + "react-trello": "^2.2.5", "redux": "^4.0.5", "redux-persist": "^6.0.0", "redux-saga": "^1.1.3", diff --git a/client/src/components/production-board-kanban/production-board-kanban.component.jsx b/client/src/components/production-board-kanban/production-board-kanban.component.jsx new file mode 100644 index 000000000..06507f545 --- /dev/null +++ b/client/src/components/production-board-kanban/production-board-kanban.component.jsx @@ -0,0 +1,52 @@ +import React from "react"; +import Board from "react-trello"; +import { Card } from "antd"; +import LoadingSpinner from "../loading-spinner/loading-spinner.component"; + +export default function ProductionBoardKanbanComponent({ + loading, + data, + columnState, +}) { + console.log("data", data); + const data2 = { + lanes: [ + { + id: "lane1", + title: "Planned Tasks", + label: "2/2", + cards: [ + { + id: "Card1", + title: "Write Blog", + description: "Can AI make memes", + label: "30 mins", + }, + { + id: "Card2", + title: "Pay Rent", + description: "Transfer via NEFT", + label: "5 mins", + metadata: { sha: "be312a1" }, + }, + ], + }, + { + id: "lane2", + title: "Completed", + label: "0/0", + cards: [], + }, + ], + }; + + const kanbanCard = (card) => {card.title}; + + if (loading) return ; + + return ( +
+ +
+ ); +} diff --git a/client/src/components/production-board-kanban/production-board-kanban.container.jsx b/client/src/components/production-board-kanban/production-board-kanban.container.jsx new file mode 100644 index 000000000..8365cf8c9 --- /dev/null +++ b/client/src/components/production-board-kanban/production-board-kanban.container.jsx @@ -0,0 +1,17 @@ +import { useSubscription } from "@apollo/react-hooks"; +import React from "react"; +import { SUBSCRIPTION_JOBS_IN_PRODUCTION } from "../../graphql/jobs.queries"; +import ProductionBoardKanbanComponent from "./production-board-kanban.component"; + +export default function ProductionBoardKanbanContainer({ columnState }) { + const { loading, data } = useSubscription(SUBSCRIPTION_JOBS_IN_PRODUCTION); + + return ( + + ); +} diff --git a/client/src/pages/manage/manage.page.component.jsx b/client/src/pages/manage/manage.page.component.jsx index 4a862c8ec..32bd51ae2 100644 --- a/client/src/pages/manage/manage.page.component.jsx +++ b/client/src/pages/manage/manage.page.component.jsx @@ -80,6 +80,9 @@ const TimeTicketModalContainer = lazy(() => const ProductionListPage = lazy(() => import("../production-list/production-list.container") ); +const ProductionBoardPage = lazy(() => + import("../production-board/production-board.container") +); const { Header, Content, Footer } = Layout; export default function Manage({ match }) { @@ -173,6 +176,11 @@ export default function Manage({ match }) { path={`${match.path}/production/list`} component={ProductionListPage} /> + ; +} diff --git a/client/src/pages/production-board/production-board.container.jsx b/client/src/pages/production-board/production-board.container.jsx new file mode 100644 index 000000000..f021cfbb5 --- /dev/null +++ b/client/src/pages/production-board/production-board.container.jsx @@ -0,0 +1,45 @@ +import React, { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import { setBreadcrumbs } from "../../redux/application/application.actions"; +import { selectBodyshop } from "../../redux/user/user.selectors"; +import ProductionBoardComponent from "./production-board.component"; +import ProductionListColumns from "../../components/production-list-columns/production-list-columns.data"; + +const mapStateToProps = createStructuredSelector({ + bodyshop: selectBodyshop, +}); + +const mapDispatchToProps = (dispatch) => ({ + setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), +}); + +export function ProductionBoardContainer({ setBreadcrumbs, bodyshop }) { + const { t } = useTranslation(); + const columnState = useState( + (bodyshop.production_config && + bodyshop.production_config.columnKeys.map((k) => + ProductionListColumns.find((e) => e.key === k) + )) || + [] + ); + // console.log("ProductionListContainer -> columnState", columnState); + + useEffect(() => { + document.title = t("titles.productionboard"); + setBreadcrumbs([ + { link: "/manage/production/board", label: t("titles.bc.productionboard") }, + ]); + }, [t, setBreadcrumbs]); + + return ( +
+ +
+ ); +} +export default connect( + mapStateToProps, + mapDispatchToProps +)(ProductionBoardContainer); diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index 89ba35c18..8b1bad769 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -781,6 +781,7 @@ "jobs-new": "Create a New Job", "owner-detail": "{{name}}", "owners": "Owners", + "productionboard": "Production Board", "productionlist": "Production - List", "schedule": "Schedule", "vehicle-details": "Vehicle: {{vehicle}}", @@ -800,6 +801,7 @@ "manageroot": "Home | $t(titles.app)", "owners": "All Owners | $t(titles.app)", "owners-detail": "{{name}} | $t(titles.app)", + "productionboard": "Production - Board", "productionlist": "Production - List View | $t(titles.app)", "profile": "My Profile | $t(titles.app)", "schedule": "Schedule | $t(titles.app)", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 131efa2af..e0dca7d2d 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -781,6 +781,7 @@ "jobs-new": "", "owner-detail": "", "owners": "", + "productionboard": "", "productionlist": "", "schedule": "", "vehicle-details": "", @@ -800,6 +801,7 @@ "manageroot": "Casa | $t(titles.app)", "owners": "Todos los propietarios | $t(titles.app)", "owners-detail": "", + "productionboard": "", "productionlist": "", "profile": "Mi perfil | $t(titles.app)", "schedule": "Horario | $t(titles.app)", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index 79dacbb1a..99229426e 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -781,6 +781,7 @@ "jobs-new": "", "owner-detail": "", "owners": "", + "productionboard": "", "productionlist": "", "schedule": "", "vehicle-details": "", @@ -800,6 +801,7 @@ "manageroot": "Accueil | $t(titles.app)", "owners": "Tous les propriétaires | $t(titles.app)", "owners-detail": "", + "productionboard": "", "productionlist": "", "profile": "Mon profil | $t(titles.app)", "schedule": "Horaire | $t(titles.app)", diff --git a/client/yarn.lock b/client/yarn.lock index 1cd84472e..6caf6b743 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -3111,6 +3111,11 @@ autoprefixer@^9.6.1: postcss "^7.0.26" postcss-value-parser "^4.0.2" +autosize@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/autosize/-/autosize-4.0.2.tgz#073cfd07c8bf45da4b9fd153437f5bafbba1e4c9" + integrity sha512-jnSyH2d+qdfPGpWlcuhGiHmqBJ6g3X+8T+iRwFrHPLVcdoGJE/x6Qicm6aDHfTsbgZKxyV8UU/YB2p4cjKDRRA== + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -3888,7 +3893,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@2.x, classnames@^2.2.0, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@~2.2.6: +classnames@2.x, "classnames@>= 2.0", classnames@^2.2.0, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@~2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== @@ -6716,6 +6721,13 @@ immer@1.10.0: resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== +immutability-helper@^2.8.1: + version "2.9.1" + resolved "https://registry.yarnpkg.com/immutability-helper/-/immutability-helper-2.9.1.tgz#71c423ba387e67b6c6ceba0650572f2a2a6727df" + integrity sha512-r/RmRG8xO06s/k+PIaif2r5rGc3j4Yhc01jSBfwPCXDLYZwp/yxralI37Df1mwmuzcCsen/E/ITKcTEvc1PQmQ== + dependencies: + invariant "^2.2.0" + import-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" @@ -6863,7 +6875,7 @@ internal-slot@^1.0.2: has "^1.0.3" side-channel "^1.0.2" -invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -7905,6 +7917,11 @@ jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: array-includes "^3.0.3" object.assign "^4.1.0" +just-curry-it@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/just-curry-it/-/just-curry-it-3.1.0.tgz#ab59daed308a58b847ada166edd0a2d40766fbc5" + integrity sha512-mjzgSOFzlrurlURaHVjnQodyPNvrHrf1TbQP2XU9NSqBtHQPuHZ+Eb6TAJP7ASeJN9h9K0KXoRTs8u6ouHBKvg== + killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" @@ -10291,7 +10308,7 @@ prop-types-exact@^1.2.0: object.assign "^4.1.0" reflect.ownkeys "^0.2.0" -prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -10898,6 +10915,10 @@ react-big-calendar@^0.24.5: react-overlays "^2.0.0-0" uncontrollable "^7.0.0" +"react-click-outside@github:tj/react-click-outside": + version "1.1.1" + resolved "https://codeload.github.com/tj/react-click-outside/tar.gz/a833ddc5be47490307f9fcc6ed09d8c353108510" + react-dev-utils@^10.2.1: version "10.2.1" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz#f6de325ae25fa4d546d09df4bb1befdc6dd19c19" @@ -10928,7 +10949,7 @@ react-dev-utils@^10.2.1: strip-ansi "6.0.0" text-table "0.2.0" -react-dom@^16.13.1: +"react-dom@>= 16.3", react-dom@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== @@ -11022,7 +11043,7 @@ react-is@^16.6.0, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527" integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA== -react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: +react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== @@ -11071,11 +11092,35 @@ react-overlays@^2.0.0-0: uncontrollable "^7.0.0" warning "^4.0.3" +react-popopo@^2.1.9: + version "2.1.9" + resolved "https://registry.yarnpkg.com/react-popopo/-/react-popopo-2.1.9.tgz#d93f70a8fb68227907d00c0cea4d8f5d321053ea" + integrity sha512-zXOpcLSpaLZmBxhdtenJzQPLjY81XknVS/tXH4Kv5BBrnYIUPHvVdGmS7+o9s7DjCzzdK7AdVwtG+FVSO0cZ8g== + dependencies: + classnames ">= 2.0" + prop-types "^15.7.2" + react ">= 16.3" + react-dom ">= 16.3" + styled-components ">= 4.0" + react-prop-toggle@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/react-prop-toggle/-/react-prop-toggle-1.0.2.tgz#8b0b7e74653606b1427cfcf6c4eaa9198330568e" integrity sha512-JmerjAXs7qJ959+d0Ygt7Cb2+4fG+n3I2VXO6JO0AcAY1vkRN/JpZKAN67CMXY889xEJcfylmMPhzvf6nWO68Q== +react-redux@^5.0.7: + version "5.1.2" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.1.2.tgz#b19cf9e21d694422727bf798e934a916c4080f57" + integrity sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q== + dependencies: + "@babel/runtime" "^7.1.2" + hoist-non-react-statics "^3.3.0" + invariant "^2.2.4" + loose-envify "^1.1.0" + prop-types "^15.6.1" + react-is "^16.6.0" + react-lifecycles-compat "^3.0.0" + react-redux@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.0.tgz#f970f62192b3981642fec46fd0db18a074fe879d" @@ -11212,7 +11257,26 @@ react-transition-group@2: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" -react@^16.13.1: +react-trello@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/react-trello/-/react-trello-2.2.5.tgz#8da753748b0e3f0ff66582bfbc8d48c2a1191172" + integrity sha512-stI5fZ0yJ+ZaSfmaqG5kGG6lEXz+LEcaIwk1+pAN1V1X5fOP2IwEj9L22gHIrblwK3+I4Q6nQ6scIr7MoehbZQ== + dependencies: + autosize "^4.0.2" + classnames "^2.2.6" + immutability-helper "^2.8.1" + lodash "^4.17.11" + prop-types "^15.7.2" + react-click-outside tj/react-click-outside + react-popopo "^2.1.9" + react-redux "^5.0.7" + redux "^4.0.0" + redux-actions "^2.6.1" + redux-logger "^3.0.6" + trello-smooth-dnd "1.0.0" + uuid "^3.3.2" + +"react@>= 16.3", react@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== @@ -11344,6 +11408,22 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" +reduce-reducers@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/reduce-reducers/-/reduce-reducers-0.4.3.tgz#8e052618801cd8fc2714b4915adaa8937eb6d66c" + integrity sha512-+CNMnI8QhgVMtAt54uQs3kUxC3Sybpa7Y63HR14uGLgI9/QR5ggHvpxwhGGe3wmx5V91YwqQIblN9k5lspAmGw== + +redux-actions@^2.6.1: + version "2.6.5" + resolved "https://registry.yarnpkg.com/redux-actions/-/redux-actions-2.6.5.tgz#bdca548768ee99832a63910c276def85e821a27e" + integrity sha512-pFhEcWFTYNk7DhQgxMGnbsB1H2glqhQJRQrtPb96kD3hWiZRzXHwwmFPswg6V2MjraXRXWNmuP9P84tvdLAJmw== + dependencies: + invariant "^2.2.4" + just-curry-it "^3.1.0" + loose-envify "^1.4.0" + reduce-reducers "^0.4.3" + to-camel-case "^1.0.0" + redux-logger@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-3.0.6.tgz#f7555966f3098f3c88604c449cf0baf5778274bf" @@ -11363,7 +11443,7 @@ redux-saga@^1.1.3: dependencies: "@redux-saga/core" "^1.1.3" -redux@^4.0.4, redux@^4.0.5: +redux@^4.0.0, redux@^4.0.4, redux@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== @@ -12615,7 +12695,7 @@ style-loader@0.23.1: loader-utils "^1.1.0" schema-utils "^1.0.0" -styled-components@^5.1.0: +"styled-components@>= 4.0", styled-components@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.1.0.tgz#2e3985b54f461027e1c91af3229e1c2530872a4e" integrity sha512-0Qs2wEkFBXHFlysz6CV831VG6HedcrFUwChjnWylNivsx14MtmqQsohi21rMHZxzuTba063dEyoe/SR6VGJI7Q== @@ -12863,11 +12943,23 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= +to-camel-case@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-camel-case/-/to-camel-case-1.0.0.tgz#1a56054b2f9d696298ce66a60897322b6f423e46" + integrity sha1-GlYFSy+daWKYzmamCJcyK29CPkY= + dependencies: + to-space-case "^1.0.0" + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +to-no-case@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/to-no-case/-/to-no-case-1.0.2.tgz#c722907164ef6b178132c8e69930212d1b4aa16a" + integrity sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo= + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -12900,6 +12992,13 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +to-space-case@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-space-case/-/to-space-case-1.0.0.tgz#b052daafb1b2b29dc770cea0163e5ec0ebc9fc17" + integrity sha1-sFLar7Gysp3HcM6gFj5ewOvJ/Bc= + dependencies: + to-no-case "^1.0.0" + toggle-selection@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" @@ -12925,6 +13024,11 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" +trello-smooth-dnd@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trello-smooth-dnd/-/trello-smooth-dnd-1.0.0.tgz#0003d5b35a1651a16a165b7bfb6b41d0a7c52a17" + integrity sha512-KgYEwmxX08Dl4OmioEv24LSnlNp9jNv8lwTQlUMbMm6B+VuwyQuuuoyu4wlsRweiMCCC6sZXpCCGkmAni/vCaQ== + trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"