Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(icon): icon map registration #235

Merged
merged 14 commits into from Feb 23, 2020
Merged

Conversation

@ben-girardet
Copy link
Contributor

ben-girardet commented Feb 2, 2020

@EisenbergEffect @bigopon

As stated in #232 (comment) here is a proposal for a registration mechanism for ux-icon

Now the ux-icon contains no icons to start with but a UxIconMap static class that can handle icons registration.

Icons can be registered in the plugin configure call:

// main.ts
const icons = [
  {
    name: 'add',
    material: '...'
  },
  {
    name: 'remove',
    material: '...'
  },
];
.plugin(PLATFORM.moduleName('@aurelia-ux/icons'), icons)

or it can be registered later on:

// app.ts
import { UxIconMap } from '@aurelia-ux/icons';

UxIconMap.registerIcons(icons);

I think it could be helpful to provide a few icon sets based on the current list. I've created a sets folder with two files: minimal.ts and full.ts.

Currently I've tested to import them in an application but I need to call them like:

import { set as icons } from '@aurelia-ux/icons/dist/native-modules/sets/minimal';

I don't know how to build the icon sets so that we could import them like:

import { set as icons } from '@aurelia-ux/icons/sets/minimal';
  • Any feedbacks on this proposal ?
  • Can someone help with the icons sets so that we could import them easily, and only those that we need in a project to prevent useless load ?
@ben-girardet ben-girardet requested a review from bigopon Feb 2, 2020
@EisenbergEffect

This comment has been minimized.

Copy link
Member

EisenbergEffect commented Feb 2, 2020

@bigopon may have some thoughts on improving the import situation.

In terms of the design, if possible, I'd prefer the icon map to be non-static. We can have a singleton instance injected into the icon element and we can create a configure method for the plugin that receives the icons to register with the map instance at startup. Make sense?

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 2, 2020

Sure we can make it singleton. Happy to go this way. I am curious to understand the benefit of avoiding static classes. I guess that the purpose is to take advantage of the IoC?

If we make it singleton, what would be the way to register new icon sets outside of the plugin configuration ? Something like:

import { Container } from ‘aurelia-framework’;
import { UxIconMap } from @aurelia-ux/icons’;

Container.instance.get(UxIconMap).registerIcons(...);
@EisenbergEffect

This comment has been minimized.

Copy link
Member

EisenbergEffect commented Feb 2, 2020

In general, we prefer to avoid static classes due to how they affect testing or potentially multiple aurelia app instances on the same page. So, we like everything to go through the IoC container so that it can be scoped to the Aurelia instance (if possible). Outside of plugin configuration, any class could inject the registry and register icons. Any any other plugin could do that as well.

@inject(UxIconMap)
export class MyClass {
  constructor(iconMap) { ... }
} 
@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 2, 2020

Makes total sense, thanks for clarifying the purpose.

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 3, 2020

if (Array.isArray(icons) && icons.length > 0 && typeof icons[0].name === 'string' && typeof icons[0].material === 'string') {
UxIconMap.registerIcons(icons);
if (Array.isArray(icons) && icons.length > 0) {
Container.instance.get(UxIconMap).registerIcons(icons);

This comment has been minimized.

Copy link
@EisenbergEffect

EisenbergEffect Feb 4, 2020

Member

Instead of using Container.instance we should use config.container. The FrameworkConfig instance will return the container instance for the current app, which is better to use in this case.

This comment has been minimized.

Copy link
@ben-girardet

ben-girardet Feb 4, 2020

Author Contributor

Of course, using Container report the static issue to the Container class. Thanks for the feedback.

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 4, 2020

@EisenbergEffect fixed the Container issue.

@bigopon regarding the import question above, I'm trying another solution: using .json files for the icons maps and placing them in the main package directory. This way they will end up at the root of the package and can be imported as

import fullSet from `@aurelia-icons/sets/full.json`

What do you think ?

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 4, 2020

Wanted to try to use the registration mechanism to bridge with another icon library. With FontAwesome it could look like this:

  1. Register the component without icons
// main.ts
// ...
  .plugin(PLATFORM.moduleName('@aurelia-ux/icons'))
// ...
  1. Import the FA JS icons and parse them
// app.ts

import { UxIconMap } from '@aurelia-ux/icons';
import { inject } from 'aurelia-framework';

import '@fortawesome/fontawesome-free/js/brands';
import '@fortawesome/fontawesome-free/js/regular';

const w = (window as any);

@inject(UxIconMap)
export class App {

  constructor(private uxIconMap: UxIconMap) {
    if (w.___FONT_AWESOME___ && w.___FONT_AWESOME___.styles) {
      type FabIcon = [Number, Number, Array<any>, string, string];
      for (let fKey in (window as any).___FONT_AWESOME___.styles) {
        let fIcons: {[key: string]: FabIcon} = (window as any).___FONT_AWESOME___.styles[fKey];
        let fSet: Array<{name: string, material: string}> = [];
        for (let iconKey in fIcons) {
          const icon = fIcons[iconKey];
          fSet.push({name: `fab_${iconKey}`, material: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${icon[0]} ${icon[1]}"><path d="${icon[4]}"/></svg>`});
        }
        this.uxIconMap.registerIcons(fSet);
      }
    }
  }

}

End result:

icons

I find it cool :-)

@ben-girardet ben-girardet requested a review from EisenbergEffect Feb 4, 2020
@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 5, 2020

@bigopon do you have any feedback/input regarding this PR and more specifically the import question for Icon Sets. Is it a good idea to have the icon sets as JSON files that we can import from the root directory ?

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 5, 2020

I've quickly put together a little tool to generate Icon Sets (JSON, but could be anything once we agree on the format).

It currently generate sets from https://materialdesignicons.com/ (more sources can be added later).

See here: https://github.com/platform5/ux-icon-builder

@EisenbergEffect

This comment has been minimized.

Copy link
Member

EisenbergEffect commented Feb 6, 2020

This makes sense and it seems there's some precedent from other projects as well.

This set is currently not relevant.
The best way in the future to provide icon sets for users would be to provide a icon set builder tool
@ben-girardet ben-girardet changed the title WIP feat(icon): icon map registration feat(icon): icon map registration Feb 6, 2020
@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 6, 2020

@EisenbergEffect @serifine @bigopon

This PR is ready for final review.

Copy link
Member

EisenbergEffect left a comment

Just one minor thing. Otherwise, looks good. This is a nice improvement.

},
{
name: 'track_changes',
material: '<svg viewBox="0 0 24 24"><path d="M19.

This comment has been minimized.

Copy link
@EisenbergEffect

EisenbergEffect Feb 8, 2020

Member

Could we name this icon instead so that the material design naming doesn't become part of the api itself? We'd like to do other design systems one day :)

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 9, 2020

@EisenbergEffect in fact I'm suggesting to go one step further. Based on my observation of FontAwesome JS icons, I discovered that they save them in an JSON Array like:

[
  [
    "icon-name",
    24, // view box width
    24, // view box height
    "..." // charCode
    "M19" // svg path
  ]
]

Because they also provide their sets in font format they also include a charCode value. In our case, because we are SVG based, we could do :

[
  [
    "icon-name",
    "M19", // svg path
    24, // optional view box width (default 24)
    24 // optional view box height (default 24)
  ]
]

With this we can reduce the JSON size a little by removing the SVG markup and only providing width/height for non-default sizes (such as when we import FontAwesome icons).

Thoughts ?

@EisenbergEffect

This comment has been minimized.

Copy link
Member

EisenbergEffect commented Feb 9, 2020

@ben-girardet That sounds great. Let's do it.
BTW Would you mind emailing me at rob at bluespire dot com ?

@ben-girardet ben-girardet requested a review from EisenbergEffect Feb 10, 2020
Copy link
Member

EisenbergEffect left a comment

Just some minor alternations/questions.

}
}

private buildSvg(icon: UxIconRegArray): string {
return `<svg viewBox=\"0 0 ${icon[2] || 24} ${icon[3] || 24}\">${icon[1]}</svg>`;

This comment has been minimized.

Copy link
@EisenbergEffect

EisenbergEffect Feb 11, 2020

Member

Could we extract 24 into a class-level property so that the default size can be set externally if needed?

if (Array.isArray(icons) && icons.length > 0 && typeof icons[0].name === 'string' && typeof icons[0].material === 'string') {
icons.map(icon => this.registerIcon(icon.name, icon.material));
public registerIcons(icons: Array<UxIconRegArray | UxIconRegObject>) {
if (Array.isArray(icons)) {

This comment has been minimized.

Copy link
@EisenbergEffect

EisenbergEffect Feb 11, 2020

Member

Is this check needed?

This comment has been minimized.

Copy link
@ben-girardet

ben-girardet Feb 11, 2020

Author Contributor

I placed this check because this function is called from the plugin config. When a user configure the plugin and pass an IconMap to the plugin it doesn’t have type checking (as far as I know). This test is a small guard to avoid a blocking error if an incorrect set is passed.

However I think that if I test I should console a warning in the ‘else’ block.

Otherwise I could also remove the test... other ideas?

This comment has been minimized.

Copy link
@EisenbergEffect

EisenbergEffect Feb 12, 2020

Member

I think we can leave it as is. That's fine.
Ok, do you feel it's ready to merge @ben-girardet ?

This comment has been minimized.

Copy link
@ben-girardet

ben-girardet Feb 12, 2020

Author Contributor

@EisenbergEffect Just want to extract the icon default in the class level property and then we can merge. We should also prepare a doc or info for the breaking change as the icon set will not be imported by default. What would be the best way to do this?

This comment has been minimized.

Copy link
@EisenbergEffect

EisenbergEffect Feb 12, 2020

Member

If you want to add a section to the PR, I can include that in release notes.

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 12, 2020

This version do not automatically import any icons by default. From now on, you must decide on a per-project basis what icon sets you want to use.

Here are a few exemples on how you can prepare your icon sets:

1. Import full set when configuring the plugin

As a quick start, you can import the same icon sets that was previously shipped with the package by configuring the plugin as such in your main.ts

// main.ts

/* Add this line to import the full set into an `icons` variable */
import icons from '@aurelia-ux/icons/sets/full-array.min.json';

/* When you initilize the plugin, you can pass on this `icons` variable */
aurelia.use.plugin(PLATFORM.moduleName('@aurelia-ux/icons'), {icons: icons})

/* That's it ! */

2. Lazy loading later

// app.ts

import { inject } from 'aurelia-framework';
import { UxIconMap } from '@aurelia-ux/icons';
// here we import the full set from @aurelia-ux/icon but you can define any
// icon set in the proper format (see below)
import icons from '@aurelia-ux/icons/sets/full-array.min.json';

@inject(UxIconMap)
export class App {
  constructor(private iconMap: UxIconMap) {
    iconMap.registerIcons(icons);
  }
}

3. Import Font Awesome Icons

If you want to use Font Awesome icons, you can use them inside the <ux-icon> component. First you need to install the icons like:

npm install @fortawesome/fontawesome-free

Then you can import them like so:

// app.ts

import { inject } from 'aurelia-framework';
import { UxIconMap, UxIconRegArray } from '@aurelia-ux/icons';

// You can import any font awesome set like so.
// They will all become available in the ux-icon component
import '@fortawesome/fontawesome-free/js/brands';
import '@fortawesome/fontawesome-free/js/regular';

const w = (window as any);

@inject(UxIconMap)
export class App {
  constructor(private uxIconMap: UxIconMap) {
    if (w.___FONT_AWESOME___ && w.___FONT_AWESOME___.styles) {
      type FabIcon = [number, number, Array<any>, string, string];
      for (let fKey in (window as any).___FONT_AWESOME___.styles) {
        let fIcons: {[key: string]: FabIcon} = (window as any).___FONT_AWESOME___.styles[fKey];
        let fSet: Array<UxIconRegArray> = [];
        for (let iconKey in fIcons) {
          const icon = fIcons[iconKey];
          fSet.push([iconKey, `<path d="${icon[4]}"/></svg>`, icon[0], icon[1]]);
        }
        this.uxIconMap.registerIcons(fSet);
      }
    }
  }
}

Registered icon list

You can get the list of all registered icons by calling iconMap.getAllKeys() which will return a Array<string> with all icon names. Knowing this you could add the following code to your template to have a preview of all your registered icons with their names:

<ux-grid>
  <ux-card sm="2" repeat.for="name of uxIconMap.getAllKeys()">
    <ux-icon icon="${name}"></ux-icon>
    <br >${name}
  </ux-card>
</ux-grid>

Icon Set Format

You can register icons in an object or array form. The array form is slightly lighter.

// array form
[
  [
    "person", // icon name
    "<path d=\"M12 ...\"></path>", // svg path (without the svg tag)
    24, // optional (viewport width, default to 24)
    24 // optional (viewport height, default to 24)
  ],
  [
    "other-icon-name",
    "<path>...</path">
  ],
  ...
]
// object form
[
  {
    "name": "person", // icon name
    "svg": "<svg viewBox=\"0 0 24 24\"><path d=\"M12 ...\"></path></svg>" // svg path (with the svg tag)
  },
]

Importing JSON

Note for typescript users: make sure that your tsconfig.json is set to allow importing JSON files. This can be achieved by settings "resolveJsonModule": true in the compilerOptions section.

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 12, 2020

@EisenbergEffect I've updated the PR with a class-level (configurable) property for defaultIconWidth and defaultIconHeight.

I didn't know what you meant by adding a section to the PR so I wrote a short note in my previous comment that could be added to the release note.

I think this PR is ready for merge.

@ben-girardet ben-girardet requested a review from EisenbergEffect Feb 12, 2020
@bigopon

This comment has been minimized.

Copy link
Member

bigopon commented Feb 13, 2020

Nice! I think we may also want to add another small example of how to fetch it dynamically before initializing the icon package, or after initialization as well. Folks may have valid reasons to do it lazily.

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 13, 2020

Good idea @bigopon I've added more exemples by editing my comment above.

@bigopon

This comment has been minimized.

Copy link
Member

bigopon commented Feb 14, 2020

@ben-girardet in the step 3, where does ___FONT_AWESOME___ come from? And thanks for the comment, I think this will be a pretty good baseline for later doc improvement related to icons

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 14, 2020

@ben-girardet in the step 3, where does ___FONT_AWESOME___ come from? And thanks for the comment, I think this will be a pretty good baseline for later doc improvement related to icons

good catch, forgot the import part of the Font Awesome packages. Updated my comment, and added a section to explain how to get and see the registered icons.

* fix(style-controller): remove property if !value

* feat(core): add disabled property pair

* refactor(ux-button): simplify theme

* feat(chip): add selected state

* feat(app): new theming page for theme testing

* feat(core): add alphaGrey swatch

* fix(core): material styles for controls

* fix(form): label class

* feat(input): improve material consistency

* fix(core): controlLabel in ios design

* feat(app): add ux-input theming

* feat(core): add error global properties

- `error`
- `errorContrast

The `error` property is used as main Error color. The `errorContrast` is available when when the `error` color is used as background and we want to write text on this surface.

* fix(input): themable inactive border width

* feat(input,input-info): error default with global

* fix(input-info): counter not accent color

Because it do not make sense according to material design.

* fix(input-info): length and maxLength

* feat(app): add more input/input-info tests

- error color
- input-info

* fix(ux-input): typeChanged

type was set correctly on binding but did not respond to typeChanged

* refactor(core): expose Design interface

* fix(card): default colors from app

Background and foreground colors had default value from control background and control foreground. It doesn’t make much sense and cause trouble when using default value and placing controls inside card. It’s better to default with app background and foreground. Then the controls still stand out by default.

* fix(card): remove font style in css

* feat(card): add card thumbnail class

* feat(card): add separator class

* feat(app): theming, component and showcase

* fix(input-info): input and textarea dependencies

* refactor(core): controlLabelColor

from unclear `controlLabel` to easier to catch at a glance: `controlLabelColor`

* fix(ux-slider): calculation of the updateValue

* fix(slider): thumb bigger by default

Thumb diameter was 12px by default. Material design recommends to have bigger thumbs to facilitate usage, especially on mobiles. Increase the diameter to 18px.

In order to give a little space to the slider, add a 8px padding (top/bottom) to the element.

* feat(slider): support touch gestures

* feat(core): surface background/foreground

* fix(card): use surface color

* refactor(core): rename errorContrast with onError

This fits better the material design naming convention for colors

* fix(core): remove global style property if no value

* fix(input): resize floating label font size

when label is not floating: use input size
when label is floating: use smaller size
transition in between

* fix(textarea): apply styling on bind lifecycle

* fix(input): typo in disabled styles

* fix(input): compute parent bkgd color when outline

* feat(textarea): floating label and outline variant

* feat(app): improve testing app

* refactor(core): remove alphaGrey colors

* fix(core): remove design style if no value

* fix(core,input,textarea): default colors

* fix(input,textarea): outline bkgd default white

* feat(app): new 'none' theme

* fix(textarea): call variantChanged on attached

* feat(card): add bottom margin

* feat(select): floating label

* fix(input): outline disabled styles

* fix(textarea): disabled styles

* fix(input,textarea): outline hover effect

* feat(select): material design

- outline / filled variants
- themable list background / foreground
- disabled state
- error state

* feat(chip): add activeColor theme prop

* fix(input,textarea,select): normalize font-weight

* feat(app): improve testing app

* fix(app): revert package(lock)

Important note:
* require `npm install aurelia-framework aurelia-validation` manually after running npm install in the dev app

* style(app): name the ux-radio

* style(core): avoid same-line return

* style(core): explicit type checking

* style(slider): explicit type checking

* fix(ux-input-info): simplify computedFrom

* refactor(input): avoid two div for border bottom

* fix(slider): limit touch to 1 finger

* fix(input): show.bind instead if.bind

* refactor(ux-input-info): remove dependencies

* fix(ux-input-info): simplify computedFrom

* fix(ux-input-info): simplify computedFrom

* fix(input): autocomplete attr

* refactor(textarea): avoid 2 div for border bottom

* refactor(select): avoid two div for border bottom

* fix(datepicker): style consistency

* feat(app): add datepicker in theming

* feat(datepicker): add datepicker in showcase

* fix(app): typo in datepicker tag

* feat(app): datepicker in form error renderer

* fix(ux-input-info): avoid error if target is not found

* feat(app): add datepicker in components

* feat(card): add ux-card-separator

* feat(app): showcase ux-card-separator

* fix(card): align-items center in card header

* feat(list): add border and wrap styles

* feat(app): showcase lists

* refactor(datepicker): classList.toggle

* feat(slider): better css and lead/trail icons

* feat(app): add slider

* feat(radio,checkbox): css consistency

* feat(form): add ux-form__sub-row class

* feat(app): checkbox and radio theming+comp

* feat(app): hierarchical checkboxes showcase

* fix(core): add aurelia-logging dependency

* feat(app): npm build:dev script

* fix(datepicker): focus & value change with dialog

* fix(card): header with flex column

* feat(chip): improve material design

* feat(app): add chip showcase

* feat(choice): new choices attributes

* feat(chip): chip list component

* fix(chip): apply choice selected style to chip

* feat(choice): warn if no choice container found

* fix(chip): simplify chip-list

* fix(chip): display check icon on multiple choice list

* feat(app): improve chip/choice showcase

* feat(app): test generic ux component

* fix(input): remove useless css

* fix(choice): use Observer resolver to get container

* fix(app): improve generic component calculations

* feat(app): add chip-input in theming test

* fix(choice): register on bind lifecycle

* fix(generic-component): fix shifting issue

* fix(radio,checkbox): avoid preventDefault

* fix(chip-input): complete theme properties

* perf(choice): multiple perf improvements

* fix(icon): warn missing icon instead of error

* style(choice): remove console log

* feat(app): improve generic component styles

* feat(core): add ux-input-component.css styles

* feat(input): implement ux-input-component styles

* fix(core): add slot attr selector for leading/trailing

* fix(input): do not wrap leading/trailing slot in span

* feat(textarea): implement ux-input-component styles

* feat(select): implement ux-input-component styles

* fix(select): focused state

* fix(select): correct theme variables in css

* fix(select): error state

* fix(core): ux-input-comp outline label top pos

* feat(chip-input): impl ux-input-component styles

* feat(datepicker): impl ux-input-component styles

* fix(select): import ux-input-comp css

* feat(core): placeholder mode in ux-input-comp

* feat(input): impl dense & placeholder

* feat(textarea): impl dense & placeholder

* feat(select): impl dense & placeholder

* feat(datepicker): impl dense & datepicker

* feat(chip-input): impl dense & placeholder

* feat(all): choice between label or placeholder

* fix(chip-input): improve input placement

* feat(list): add choice selected state css

* fix(app): hide generic comp dev page

* feat(app): improve theming, comp and showcase

* fix(ux-input-comp): avoid reducing font to remove shift

* refactor(all): get bkgd color as core utility

* fix(choice): improve valueChanged perf

* perf(choice): avoid for ... of loop

* fix(all): remove flickering with outline border

* fix(slider): avoid using TouchEvent interface

TouchEvent interface is not available in Safari and Firefox
Results in an error with the slider control is used

* fix(app): small tweaks in dev app

* refactor(choice): move choice attributes into core

also add aliases for attributes

ux-choice-container
- ux-choice-value

ux-choice
- ux-choice-item
- ux-choice-option

* fix(app): rm aurelia-validation from package.json

Currently if this dep is present, it prevent `npm install`
from working correctly

* fix(app) package files
@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 20, 2020

@EisenbergEffect I've rebased my branch and merge with this PR. I've added some lint fixes.

@bigopon do you know if the npm run test or npm run doc are supposed to work? I've tried to run them and get quite a few errors that I struggle to fix. I'm trying to understand if I broke something or if these tests and docs were already not working before hand ?

@bigopon

This comment has been minimized.

Copy link
Member

bigopon commented Feb 20, 2020

@ben-girardet for now, both of them may not work. If it's not blocking you, give me a few days and i'll resolve it to prepare for a more solid infra with regards to those. If you have any ideas, can you put it here for now?

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 20, 2020

@bigopon thanks. It's not blocking for now and I believe we can merge this PR as this.

In regards to tests and docs I must say that I'm not (yet) familiar with setting this up. Very looking forward to see how you can set it up for this lib and learn from then.

@EisenbergEffect EisenbergEffect merged commit ccdc1f3 into aurelia:master Feb 23, 2020
2 checks passed
2 checks passed
WIP Ready for review
Details
license/cla Contributor License Agreement is signed.
Details
@EisenbergEffect

This comment has been minimized.

Copy link
Member

EisenbergEffect commented Feb 23, 2020

@ben-girardet With the merge of this PR, do you think we're ready for a release?

@ben-girardet ben-girardet deleted the platform5:icon-map branch Feb 23, 2020
@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 23, 2020

@EisenbergEffect I've tried to clone, build and run the dev app and all works fine.

My last question regards /dist files. In the PR I've only pushed the /src. Are you building the dist before the release or not ? Just asking as I'm very new with the process.

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 23, 2020

Just found a small bug in the icon package. Will submit a new PR with the fix in a moment...

@EisenbergEffect

This comment has been minimized.

Copy link
Member

EisenbergEffect commented Feb 23, 2020

Got the bug fix PR in. Regarding the dist folder, I'll build that as part of the release process. With that in mind, anything else we need to do before I release or are we ready to go?

@ben-girardet

This comment has been minimized.

Copy link
Contributor Author

ben-girardet commented Feb 23, 2020

Ready to go ! Thanks @EisenbergEffect

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

3 participants
You can’t perform that action at this time.