11.0.9 • Published 8 months ago

@furystack/shades v11.0.9

Weekly downloads
130
License
GPL-2.0
Repository
github
Last release
8 months ago

@furystack/shades

Shades is a UI Library for FuryStack with that uses type-safe JSX component, unidirectional data binding and the same DI/IOC, logging and utility libraries as the FuryStack Backend Services.

Usage

You can check the @furystack/boilerplate repository for a working example.

A Shade (component)

A shade (component) can be constructed from the following properties:

  • ts render:(options: RenderOptions)=>JSX.Element - A required method that will be executed on each and every render.
  • initialState - A default state that can be updated during the component lifecycle
  • shadowDomName can be specified - that will be the custom element's name in the DOM
  • ts constructed: (options: RenderOptions)=>void is an optional callback that will be executed after component construction. It can return a cleanup method (e.g. free up resources, dispose value observers, etc...)
  • ts onAttach: (options: RenderOptions)=>void is executed when the component is attached to the DOM
  • ts onDetach: (options: RenderOptions)=>void is executed when the component is detached from the DOM

Render options

The lifecycle methods will get the following options from a parameter:

  • props - The current readonly props object for the element. As props are passed from the parent, it is read only
  • getState() - method that will return the current state. State object is also read only and immutable and can be updated with a corresponding method only.
  • updateState(newState: TState, skipRender?: boolean) - Updates (patches) the component state. An optional flag can indicate that this state change shouldn't trigger a re-render (e.g. form input fields change, etc...)
  • injector - An injector instance. It can be retrieved from the closest parent or can be specified on the state or props
  • children - The children element(s) of the component
  • element - A reference to the current component's custom element (root)
  • logger - A specified logger instance with a pre-defined scope

Bundled goodies

The @furystack/shades package contains a router component, a router-link component, a location-service and a lazy-load component.

Core concepts

  • Shade is close to the DOM and the natives. You are encouraged to use native browser methods while you can
  • You can use small independent services for state tracking with the injector
  • Use observable values. Subscribe in the constructed() method and dispose them on the callback that it returns.
  • Re-render can be skipped on state update. E.g. Why should you break a whole form with a re-render? Why should you update a complete grid if only on item's one field has been changed?
  • Nothing is true, everything is permitted 🗡
11.0.8

8 months ago

11.0.9

8 months ago

11.0.7

8 months ago

11.0.6

9 months ago

11.0.5

9 months ago

10.0.5

12 months ago

10.0.6

11 months ago

10.0.4

12 months ago

11.0.4

9 months ago

11.0.2

9 months ago

11.0.3

9 months ago

11.0.0

11 months ago

11.0.1

10 months ago

10.0.3

1 year ago

10.0.2

1 year ago

10.0.1

1 year ago

10.0.0

1 year ago

9.0.0

1 year ago

8.1.1

1 year ago

8.1.0

1 year ago

8.0.18

1 year ago

8.0.17

1 year ago

8.0.16

1 year ago

8.0.15

1 year ago

8.0.14

1 year ago

8.0.10

2 years ago

8.0.12

2 years ago

8.0.11

2 years ago

8.0.13

1 year ago

8.0.9

2 years ago

8.0.8

2 years ago

8.0.7

2 years ago

8.0.6

2 years ago

8.0.5

2 years ago

8.0.4

2 years ago

8.0.1

2 years ago

8.0.0

2 years ago

8.0.3

2 years ago

8.0.2

2 years ago

7.1.6

2 years ago

7.2.6

2 years ago

7.2.5

2 years ago

7.2.4

2 years ago

7.2.3

2 years ago

7.2.2

2 years ago

7.2.1

2 years ago

7.2.0

2 years ago

7.1.5

2 years ago

7.1.4

2 years ago

7.1.3

2 years ago

7.0.0

2 years ago

7.1.2

2 years ago

7.1.1

2 years ago

7.1.0

2 years ago

6.1.2

3 years ago

6.1.1

3 years ago

6.1.4

2 years ago

6.1.3

2 years ago

6.1.5

2 years ago

6.1.0

3 years ago

6.0.10

3 years ago

6.0.7

3 years ago

6.0.6

3 years ago

6.0.9

3 years ago

6.0.8

3 years ago

6.0.5

3 years ago

6.0.1

3 years ago

6.0.0

3 years ago

6.0.3

3 years ago

6.0.2

3 years ago

6.0.4

3 years ago

5.0.4

3 years ago

5.0.3

3 years ago

5.0.2

3 years ago

5.0.1

3 years ago

5.0.0

3 years ago

4.0.9

3 years ago

4.0.8

3 years ago

4.0.5

3 years ago

4.0.4

3 years ago

4.0.7

3 years ago

4.0.1

3 years ago

4.0.3

3 years ago

3.7.3

3 years ago

3.7.2

3 years ago

4.0.0

3 years ago

3.6.6

4 years ago

3.7.1

4 years ago

3.7.0

4 years ago

3.6.5

4 years ago

3.6.4

4 years ago

3.6.3

4 years ago

3.6.2

4 years ago

3.6.1

4 years ago

3.6.0

4 years ago

3.5.0

4 years ago

3.4.0

4 years ago

3.3.9

4 years ago

3.3.8

4 years ago

3.3.10

4 years ago

3.3.7

4 years ago

3.3.6

4 years ago

3.3.5

4 years ago

3.3.4

4 years ago

3.3.1

4 years ago

3.3.0

4 years ago

3.3.3

4 years ago

3.3.2

4 years ago

3.2.50

4 years ago

3.2.48

4 years ago

3.2.47

4 years ago

3.2.49

4 years ago

3.2.46

4 years ago

3.2.45

4 years ago

3.2.44

4 years ago

3.2.43

4 years ago

3.2.42

4 years ago

3.2.41

4 years ago

3.2.40

4 years ago

3.2.39

4 years ago

3.2.38

4 years ago

3.2.37

4 years ago

3.2.36

4 years ago

3.2.35

4 years ago

3.2.34

4 years ago

3.2.33

4 years ago

3.2.32

4 years ago

3.2.31

4 years ago

3.2.30

4 years ago

3.2.29

4 years ago

3.2.28

5 years ago

3.2.27

5 years ago

3.2.26

5 years ago

3.2.25

5 years ago

3.2.24

5 years ago

3.2.23

5 years ago

3.2.22

5 years ago

3.2.21

5 years ago

3.2.20

5 years ago

3.2.19

5 years ago

3.2.18

5 years ago

3.2.17

5 years ago

3.2.16

5 years ago

3.2.15

5 years ago

3.2.14

5 years ago

3.2.13

5 years ago

3.2.12

5 years ago

3.2.9

5 years ago

3.2.10

5 years ago

3.2.8

5 years ago

3.2.7

5 years ago

3.2.6

5 years ago

3.2.5

5 years ago

3.2.4

5 years ago

3.2.3

5 years ago

3.2.0

5 years ago

3.1.2

5 years ago

3.0.5

5 years ago

3.1.1

5 years ago

3.1.0

5 years ago

3.0.4

5 years ago

3.0.3

5 years ago

3.0.2

5 years ago

3.0.1

5 years ago

3.0.0

5 years ago

2.3.18

5 years ago

2.3.17

5 years ago

2.3.16

5 years ago

2.3.15

5 years ago

2.3.14

5 years ago

2.3.13

5 years ago

2.3.12

5 years ago

2.3.11

5 years ago

2.3.10

5 years ago

2.3.9

5 years ago

2.3.7

5 years ago

2.3.6

5 years ago

2.3.5

5 years ago

2.3.4

5 years ago

2.3.3

5 years ago

2.3.2

5 years ago

2.3.1

5 years ago

2.3.0

5 years ago

2.2.4

5 years ago

2.2.3

5 years ago

2.2.2

5 years ago

2.2.1

5 years ago

2.2.0

5 years ago

2.1.8

5 years ago

2.1.7

5 years ago

2.1.6

6 years ago

2.1.5

6 years ago

2.1.4

6 years ago

2.1.3

6 years ago

2.1.2

6 years ago

2.1.1

6 years ago

2.1.0

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.4.4

6 years ago

1.4.3

6 years ago

1.4.2

6 years ago

1.4.1

6 years ago

1.4.0

6 years ago

1.3.2

6 years ago

1.3.1

6 years ago

1.3.0

6 years ago

1.2.4

6 years ago

1.2.3

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.0

6 years ago

1.0.0

6 years ago