woocommerce/plugins/woocommerce-admin/packages
Danae Millan db2a74927b Fix calendar not being dismissed when clicked outside (https://github.com/woocommerce/woocommerce-admin/pull/7714)
* Add an 'onBlur' property to the 'DateInput' component

This allows passing a callback function for the input's onBlur event.

* Close the calendar when an element outside the parent dropdown gets focused

Previously, you had to click on the calendar and then click anywhere else for it to be closed without selecting a date. Now the calendar gets closed when any element outside the parent's dropdown element gets thefocus.

* Remove redundant code for dismissing the calendar when pressing the tab key

Dismissing the calendar this way doesn't seem to be good for accessibility. That aside, the introduced dismissal on blur handles the scenario of when the calendar isn't needed anymore and the user is navigating with the keyboard.

* Add changelog entry

* Use the PR ID instead of the issue ID for the changelog entry

* Separate new declaration on a new line instead of using a comma

* Add an entry to the packages/components/ changelog
2021-10-13 08:20:24 +08:00
..
admin-e2e-tests Bump admin-e2e-tests version to 0.1.2 (https://github.com/woocommerce/woocommerce-admin/pull/7764) 2021-10-07 13:05:40 +08:00
components Fix calendar not being dismissed when clicked outside (https://github.com/woocommerce/woocommerce-admin/pull/7714) 2021-10-13 08:20:24 +08:00
csv-export Refactor package style builds (https://github.com/woocommerce/woocommerce-admin/pull/7531) 2021-08-19 10:15:59 -04:00
currency Add optional parameter to `/currency`'s `formatAmount` to display currency code. (https://github.com/woocommerce/woocommerce-admin/pull/7575) 2021-09-06 11:52:01 +08:00
customer-effort-score Refactor package style builds (https://github.com/woocommerce/woocommerce-admin/pull/7531) 2021-08-19 10:15:59 -04:00
data Move some of the deprecated tasks stuff outside of the main components (https://github.com/woocommerce/woocommerce-admin/pull/7761) 2021-10-12 11:05:43 -03:00
date Refactor package style builds (https://github.com/woocommerce/woocommerce-admin/pull/7531) 2021-08-19 10:15:59 -04:00
dependency-extraction-webpack-plugin Allow packages to be built in isolation. (https://github.com/woocommerce/woocommerce-admin/pull/7286) 2021-07-14 16:38:57 -04:00
eslint-plugin Allow packages to be built in isolation. (https://github.com/woocommerce/woocommerce-admin/pull/7286) 2021-07-14 16:38:57 -04:00
experimental Add experimental list documentation (https://github.com/woocommerce/woocommerce-admin/pull/7687) 2021-09-28 21:21:52 -03:00
explat Fix 'cannot read property' error from ExPlat (https://github.com/woocommerce/woocommerce-admin/pull/7600) 2021-08-30 20:31:03 -07:00
js-tests Refactor package style builds (https://github.com/woocommerce/woocommerce-admin/pull/7531) 2021-08-19 10:15:59 -04:00
navigation Refactor package style builds (https://github.com/woocommerce/woocommerce-admin/pull/7531) 2021-08-19 10:15:59 -04:00
notices Refactor package style builds (https://github.com/woocommerce/woocommerce-admin/pull/7531) 2021-08-19 10:15:59 -04:00
number Allow packages to be built in isolation. (https://github.com/woocommerce/woocommerce-admin/pull/7286) 2021-07-14 16:38:57 -04:00
onboarding Add missing task events (https://github.com/woocommerce/woocommerce-admin/pull/7744) 2021-10-06 16:48:55 -04:00
style-build Refactor package style builds (https://github.com/woocommerce/woocommerce-admin/pull/7531) 2021-08-19 10:15:59 -04:00
tracks Fix track properties and add warning for wrong track format (https://github.com/woocommerce/woocommerce-admin/pull/7677) 2021-09-23 10:39:44 -03:00
wc-admin-settings Lock file maintenance (https://github.com/woocommerce/woocommerce-admin/pull/7510) 2021-09-04 12:40:45 +08:00
README.md Allow packages to be built in isolation. (https://github.com/woocommerce/woocommerce-admin/pull/7286) 2021-07-14 16:38:57 -04:00
tsconfig-cjs.json Allow packages to be built in isolation. (https://github.com/woocommerce/woocommerce-admin/pull/7286) 2021-07-14 16:38:57 -04:00
tsconfig.json Use target: es2019 for backward compatibility (https://github.com/woocommerce/woocommerce-admin/pull/7658) 2021-10-06 14:52:42 +08:00

README.md

WooCommerce Packages

Currently we have a small set of public-facing packages that can be dowloaded from npm and used in external applications.

  • @woocommerce/components: A library of components that can be used to create pages in the WooCommerce dashboard and reports pages.
  • @woocommerce/csv-export: A set of functions to convert data into CSV values, and enable a browser download of the CSV data.
  • @woocommerce/currency: A class to display and work with currency values.
  • @woocommerce/date: A collection of utilities to display and work with date values.
  • @woocommerce/navigation: A collection of navigation-related functions for handling query parameter objects, serializing query parameters, updating query parameters, and triggering path changes.
  • @woocommerce/tracks: User event tracking utility functions for Automattic based projects.

Working with existing packages

  • You can make changes to packages files as normal, and running npm start will compile and watch both app files and packages.
  • ⚠️ Make sure any dependencies you add to a package are also added to that package's package.json, not just the woocommerce-admin package.json
  • ⚠️ Make sure you're not importing from any woocommerce-admin files outside of the package (you can import from other packages, just use the import from @woocommerce/package syntax).
  • Add your change to the CHANGELOG for that package under the next version number, creating one if necessary (we use semantic versioning for packages, see these guidelines).
  • Don't change the version in package.json.
  • Label your PR with the Packages label.
  • Once merged, you can wait for the next package release roundup, or you can publish a release now (see below, "Publishing packages").

Creating a new package

Most of this is pulled from the Gutenberg workflow.

To create a new package, add a new folder to /packages, containing…

  1. package.json based on the template:

    {
    	"name": "@woocommerce/package-name",
    	"version": "1.0.0-beta.0",
    	"description": "Package description.",
    	"author": "Automattic",
    	"license": "GPL-2.0-or-later",
    	"keywords": [ "wordpress", "woocommerce" ],
    	"homepage": "https://github.com/woocommerce/woocommerce-admin/tree/main/packages/[_YOUR_PACKAGE_]/README.md",
    	"repository": {
    		"type": "git",
    		"url": "https://github.com/woocommerce/woocommerce-admin.git"
    	},
    	"bugs": {
    		"url": "https://github.com/woocommerce/woocommerce-admin/issues"
    	},
    	"main": "build/index.js",
    	"module": "build-module/index.js",
    	"react-native": "src/index",
    	"publishConfig": {
    		"access": "public"
    	}
    }
    
  2. .npmrc file which disables creating package-lock.json file for the package:

    package-lock=false
    
  3. README.md file containing at least:

    • Package name
    • Package description
    • Installation details
    • Usage example
  4. A src directory for the source of your module, which will be built by default using the npm run build:packages command. Note that you'll want an index.js file that exports the package contents, see other packages for examples.

  5. Add the new package name to packages/dependency-extraction-webpack-plugin/assets/packages.js so that users of that plugin will also be able to use the new package without enqueuing it.


Publishing packages

  • Run npm run publish-packages:check to see which packages will be published
  • Create a PR with a CHANGELOG for each updated package (or try to add to the CHANGELOG with any PR editing packages/)
  • Run npm run publish-packages:prod to publish the package
  • OR Run npm run publish-packages:dev to publish "next" releases (installed as npm i @woocommerce/package@next). Only use :dev if you have a reason to.
  • Both commands will run build:packages before the lerna task, just to catch any last updates.

It will confirm with you once more before publishing:

Changes:
 - @woocommerce/components: 1.0.1 => 1.1.0
 - @woocommerce/date: 1.0.1 => 1.0.2
 - @woocommerce/navigation: 1.0.0 => 1.1.0

? Are you sure you want to publish these packages?

If you accept, Lerna will create git tags, publish those to github, then push your packages to npm.

🎉 You have a published package!

Publishing a single package

Sometimes, its helpful to release a singular package. This can be done directly through npm. Be sure versions and builds are correct.

  • Bump the version in the package's package.json as well as its CHANGELOG file.
  • npm install && npm run build:packages to build packages.
  • cd packages/<package-name>
  • npm publish