Git Product home page Git Product logo

fluentui-react-native's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fluentui-react-native's Issues

Create Demo app to include in readme/getting started instructions

The library needs a demo app to include in the readme/getting started instructions. The purpose of this demo app is to give folks a quick way to download and use our package in a prepackaged environment, for people that don't have an existing react-native app to add our package to. Examples:

CI Loop Cleanup

The CI Loop should trigger builds on pull requests into master. There is additional work here to run code formatting and linting to make sure our repo stays clean.

Stand up a CI loop

This should have:

  • build loop
  • test loop
  • ideally some of the fabric goodness like the package size monitor

Add incremental build support

Currently all builds are full builds...which is fine right now as they only take about 20 seconds total. As the repo grows this will be problematic.

Required props on a Slot can't be omitted from render

interface IFooSlotProps {
   root: { someRequiredString: string; someOptionalString?: string };
}

export const MyFooComponent = compose<IFooProps, IFooSlotProps>({
    ...restOfComposeOptions,
    render: (Slots: ISlots<IFooSlotProps>, data: IFooRenderData, ...children: React.Component[]) : JSX.Element => { 
        return <Slots.root />
    }
})

In the example above the JSX for <Slots.root /> fails to compile because it's missing someRequiredString, even though it should have been baked into the slot props as part of usePrepareProps.

Jason suggested fixing this might be as simple as adding a Partial<> around TProps in _createSlotRenderFunction

Add publishing + beachball support

Currently none of the packages are being published or really tracked for versions. We need to add publishing support and change management support, likely using beachball.

Add a theme name to theme object itself so theme definitions know the name of the platform theme

Right now we send an event when the platform theme changes and custom theme definitions can be functional rather than a static JSON object, but the functional theme definition only takes a parent theme and the theme object has no obvious place for the Office theme setting.

A simple solution is simply providing a "name" to the theme object which the platform theme can fill in. This work isn't hard, it's more of a "how exactly do we want this API to look" type question than anything.

Add just support

Currently the build scripts are extremely rudimentary. We should do the following:

  • Hook up just to manage scripts
  • Get jest running successfully, yarn test gives an error now
  • Make the build option include jest
  • Produce distribution bundles

Document all the things

I just added a bunch of stuff around the Native Module, Theme Provider, and hooks for the Theme Context.

It'd be good to go back and do a pass at documenting everything.

Fix immutable-merge for arrays

There is a likely bug in immutable merge with array handling. Initially the checks for typeof entry === 'object' were calls to an _isPlainObject function which would omit arrays. It isn't this simple though because styles can be arrays or plain objects.

The routine ultimately needs to exclude arrays (allow the last value to win) except in the case where there is a handler function defined.

This should be validated by new test cases in the unit tests...once jest is running correctly.

All Exported Controls Should Export Examples

All exported controls from packages like experimental-web-controls should also export example usages of the controls. This makes it easier to map those directly into demo apps and more fully document them.

A potential folder structure may look something like

-- Controls-Package
---- Example-Control
------ index.ts
------ examples
------- base
------ styles
------ types
------ example-control.tsx
------ tests

Add better build workflow for expo playground

There's a couple different issues that can be improved with the expo playground in apps/playground.

  • Even though App.tsx / package.json has no dependency on @uifabricshared packages, if you don't build the other packages in the repo the metro.config.js crashes.
  • If you do add a dependency on one of the other packages, you'll need to either manually npm run build on those packages or add a tsc watch
  • yarn start/Expo start is plenty fine, (or yarn build from the root) but maybe a build script should be added to package.json as well.

Themed StyleSheets for primitives

We need an easy API for consumers of primitive components to create StyleSheets that can reference theme values and regenerate in response to theme changes.

This repo should be public.

We're publishing to a public npm feed, anyway, so how private is it?

Have we crossed whatever threshold we needed that justifies making it public?

Build 2020 Feedback Thread - Fluent UI React Native

Welcome Build 2020 participants! Did you get a chance to try out the Fluent UI React Native library
or watch our Build 2020 talk? If so, we want to hear your feedback! The library is still in its early stages, but we wanted to show developers the direction we're taking things, and get early feedback on how we can make this even more useful to you moving forward.

Feel free to leave feedback on any of the following (and please keep feedback constructive and respectful):

  • Likes
  • Dislikes
  • Bugs
  • Areas for improvement

Thank you,
The Fluent UI React Native team

Omitting a slot from the StyleFactories drops settings from from the final slotprops

Adopting the new versions of @uifabricshared libraries forced me to introduce this work around to some components:

compose(
  ...otherstuff,
  settings,
  slots: {
    root: ReactNative.View,
    content: ReactNative.Text
  },
  styles: {
    root: [],        // Empty array 
    content: [foregroundColorTokens, textTokens]
  }
);

Without the empty array of style operations, the root slot settings get dropped from the final slot props.

Immutable Merge Stress Test and Cleanup

immutable-merge is incredibly core to most of the work that goes on in this repository, making sure it is performant and that the code is as tight as possible is a worthy work item

Hook up documentation generation

An attempt at this was done in the documentation folder using docz but it seems highly unstable and doesn't actually work. We should find some solution, likely involving gatsby, to do auto documentation.

Ideally this also includes support for mdx files.

Configure Prettier

Some level of code formatting, beyond what linters provide, is a good start

Explore efficient *jsx helper syntax

Look at ways of removing the need to use renderSlot, instead moving to a *jsx helper syntax without creating the closures that withSlots creates.

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.