@furystack/shades 8.0.17 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/esm/component-factory.spec.js +1 -1
  2. package/esm/component-factory.spec.js.map +1 -1
  3. package/esm/components/index.d.ts +1 -0
  4. package/esm/components/index.d.ts.map +1 -1
  5. package/esm/components/index.js +1 -0
  6. package/esm/components/index.js.map +1 -1
  7. package/esm/components/lazy-load.d.ts +3 -1
  8. package/esm/components/lazy-load.d.ts.map +1 -1
  9. package/esm/components/link-to-route.d.ts +8 -0
  10. package/esm/components/link-to-route.d.ts.map +1 -0
  11. package/esm/components/link-to-route.js +15 -0
  12. package/esm/components/link-to-route.js.map +1 -0
  13. package/esm/components/link-to-route.spec.d.ts +2 -0
  14. package/esm/components/link-to-route.spec.d.ts.map +1 -0
  15. package/esm/components/link-to-route.spec.js +29 -0
  16. package/esm/components/link-to-route.spec.js.map +1 -0
  17. package/esm/components/route-link.d.ts +1 -1
  18. package/esm/components/route-link.d.ts.map +1 -1
  19. package/esm/components/router.d.ts +3 -1
  20. package/esm/components/router.d.ts.map +1 -1
  21. package/esm/index.d.ts +2 -0
  22. package/esm/index.d.ts.map +1 -1
  23. package/esm/index.js +2 -0
  24. package/esm/index.js.map +1 -1
  25. package/esm/models/render-options.d.ts +3 -2
  26. package/esm/models/render-options.d.ts.map +1 -1
  27. package/esm/shade-component.d.ts.map +1 -1
  28. package/esm/shade-component.js +5 -1
  29. package/esm/shade-component.js.map +1 -1
  30. package/esm/shade.d.ts +13 -9
  31. package/esm/shade.d.ts.map +1 -1
  32. package/esm/shade.js +3 -0
  33. package/esm/shade.js.map +1 -1
  34. package/esm/styled-element.d.ts +10 -0
  35. package/esm/styled-element.d.ts.map +1 -0
  36. package/esm/styled-element.js +20 -0
  37. package/esm/styled-element.js.map +1 -0
  38. package/esm/styled-shade.d.ts +9 -0
  39. package/esm/styled-shade.d.ts.map +1 -0
  40. package/esm/styled-shade.js +19 -0
  41. package/esm/styled-shade.js.map +1 -0
  42. package/package.json +6 -6
  43. package/src/component-factory.spec.tsx +1 -1
  44. package/src/components/index.ts +1 -0
  45. package/src/components/link-to-route.spec.tsx +46 -0
  46. package/src/components/link-to-route.tsx +23 -0
  47. package/src/index.ts +2 -0
  48. package/src/models/render-options.ts +3 -2
  49. package/src/shade-component.ts +7 -1
  50. package/src/shade.ts +30 -18
  51. package/src/styled-element.tsx +25 -0
  52. package/src/styled-shade.ts +23 -0
@@ -69,7 +69,7 @@ describe('Shades Component Factory', () => {
69
69
  },
70
70
  });
71
71
  const component = (createComponent("div", null,
72
- createComponent(Example, { injector: new Injector() })));
72
+ createComponent(Example, null)));
73
73
  const shade = component.firstElementChild;
74
74
  shade.callConstructed();
75
75
  expect(shade.resourceManager.stateObservers.get('foo')?.getValue()).toEqual('example');
@@ -1 +1 @@
1
- {"version":3,"file":"component-factory.spec.js","sourceRoot":"","sources":["../src/component-factory.spec.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-factory.spec.js","sourceRoot":"","sources":["../src/component-factory.spec.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from './lazy-load.js';
2
+ export * from './link-to-route.js';
2
3
  export * from './router.js';
3
4
  export * from './route-link.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export * from './lazy-load.js';
2
+ export * from './link-to-route.js';
2
3
  export * from './router.js';
3
4
  export * from './route-link.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA"}
@@ -7,5 +7,7 @@ export interface LazyLoadState {
7
7
  component?: JSX.Element;
8
8
  error?: unknown;
9
9
  }
10
- export declare const LazyLoad: (props: LazyLoadProps, children: import("../index.js").ChildrenList) => JSX.Element<any>;
10
+ export declare const LazyLoad: (props: LazyLoadProps & Omit<Partial<HTMLElement>, "style"> & {
11
+ style?: Partial<CSSStyleDeclaration> | undefined;
12
+ }, children?: import("../index.js").ChildrenList | undefined) => JSX.Element<any>;
11
13
  //# sourceMappingURL=lazy-load.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-load.d.ts","sourceRoot":"","sources":["../../src/components/lazy-load.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,GAAG,CAAC,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC,OAAO,CAAA;IAC1D,SAAS,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,eAAO,MAAM,QAAQ,0FAqCnB,CAAA"}
1
+ {"version":3,"file":"lazy-load.d.ts","sourceRoot":"","sources":["../../src/components/lazy-load.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,GAAG,CAAC,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC,OAAO,CAAA;IAC1D,SAAS,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,eAAO,MAAM,QAAQ;;iFAqCnB,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { Route } from './router.js';
2
+ import type { ChildrenList } from '../models/children-list.js';
3
+ export type LinkToRouteProps<T extends {}> = {
4
+ route: Route<T>;
5
+ params: T;
6
+ } & Omit<JSX.IntrinsicElements['a'], 'href'>;
7
+ export declare const LinkToRoute: <T extends {}>(props: LinkToRouteProps<T>, children?: ChildrenList) => JSX.Element;
8
+ //# sourceMappingURL=link-to-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-to-route.d.ts","sourceRoot":"","sources":["../../src/components/link-to-route.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAG9D,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,EAAE,IAAI;IAC3C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IACf,MAAM,EAAE,CAAC,CAAA;CACV,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;AAE5C,eAAO,MAAM,WAAW,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,KAAK,GAAG,CAAC,OAWnG,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { compile } from 'path-to-regexp';
2
+ import { Shade } from '../shade.js';
3
+ import { createComponent } from '../shade-component.js';
4
+ export const LinkToRoute = Shade({
5
+ shadowDomName: 'link-to-route',
6
+ elementBase: HTMLAnchorElement,
7
+ elementBaseName: 'a',
8
+ render: ({ props, element, children }) => {
9
+ const { route, params } = props;
10
+ const url = compile(route.url)(params);
11
+ element.setAttribute('href', url);
12
+ return createComponent(createComponent, null, children);
13
+ },
14
+ });
15
+ //# sourceMappingURL=link-to-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-to-route.js","sourceRoot":"","sources":["../../src/components/link-to-route.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAOvD,MAAM,CAAC,MAAM,WAAW,GAAuF,KAAK,CAAC;IACnH,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,iBAAiB;IAC9B,eAAe,EAAE,GAAG;IACpB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QACvC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;QAE/B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;QACtC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACjC,OAAO,uCAAG,QAAQ,CAAI,CAAA;IACxB,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=link-to-route.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-to-route.spec.d.ts","sourceRoot":"","sources":["../../src/components/link-to-route.spec.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import { TextEncoder, TextDecoder } from 'util';
2
+ global.TextEncoder = TextEncoder;
3
+ global.TextDecoder = TextDecoder;
4
+ import { Injector } from '@furystack/inject';
5
+ import { LinkToRoute } from './link-to-route.js';
6
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
7
+ import { initializeShadeRoot } from '../initialize.js';
8
+ import { createComponent } from '../shade-component.js';
9
+ describe('LinkToRoute', () => {
10
+ beforeEach(() => {
11
+ document.body.innerHTML = '<div id="root"></div>';
12
+ });
13
+ afterEach(() => {
14
+ document.body.innerHTML = '';
15
+ });
16
+ it('Shuld display the loader and completed state', async () => {
17
+ const injector = new Injector();
18
+ const rootElement = document.getElementById('root');
19
+ initializeShadeRoot({
20
+ injector,
21
+ rootElement,
22
+ jsxElement: (createComponent(LinkToRoute, { route: {
23
+ url: '/subroute/:id',
24
+ }, params: { id: 123 }, id: "route" }, "Link")),
25
+ });
26
+ expect(document.body.innerHTML).toBe('<div id="root"><a is="link-to-route" id="route" href="/subroute/123">Link</a></div>');
27
+ });
28
+ });
29
+ //# sourceMappingURL=link-to-route.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-to-route.spec.js","sourceRoot":"","sources":["../../src/components/link-to-route.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAE/C,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;AAChC,MAAM,CAAC,WAAW,GAAG,WAAkB,CAAA;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,uBAAuB,CAAA;IACnD,CAAC,CAAC,CAAA;IACF,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;QAC/B,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAmB,CAAA;QAErE,mBAAmB,CAAC;YAClB,QAAQ;YACR,WAAW;YACX,UAAU,EAAE,CACV,gBAAC,WAAW,IACV,KAAK,EACH;oBACE,GAAG,EAAE,eAAe;iBACI,EAE5B,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EACnB,EAAE,EAAC,OAAO,WAGE,CACf;SACF,CAAC,CAAA;QACF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAClC,qFAAqF,CACtF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -2,5 +2,5 @@ import type { PartialElement } from '../models/partial-element.js';
2
2
  export type RouteLinkProps = PartialElement<Omit<HTMLAnchorElement, 'onclick'>>;
3
3
  export declare const RouteLink: (props: Omit<Partial<Omit<HTMLAnchorElement, "onclick">>, "style"> & {
4
4
  style?: Partial<CSSStyleDeclaration> | undefined;
5
- }, children: import("../index.js").ChildrenList) => JSX.Element<any>;
5
+ } & Omit<Partial<HTMLElement>, "style">, children?: import("../index.js").ChildrenList | undefined) => JSX.Element<any>;
6
6
  //# sourceMappingURL=route-link.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"route-link.d.ts","sourceRoot":"","sources":["../../src/components/route-link.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAIlE,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAA;AAE/E,eAAO,MAAM,SAAS;;oEAoBpB,CAAA"}
1
+ {"version":3,"file":"route-link.d.ts","sourceRoot":"","sources":["../../src/components/route-link.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAIlE,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAA;AAE/E,eAAO,MAAM,SAAS;;uHAoBpB,CAAA"}
@@ -20,5 +20,7 @@ export interface RouterState {
20
20
  activeRouteParams?: any;
21
21
  jsx: JSX.Element;
22
22
  }
23
- export declare const Router: (props: RouterProps, children: import("../index.js").ChildrenList) => JSX.Element<any>;
23
+ export declare const Router: (props: RouterProps & Omit<Partial<HTMLElement>, "style"> & {
24
+ style?: Partial<CSSStyleDeclaration> | undefined;
25
+ }, children?: import("../index.js").ChildrenList | undefined) => JSX.Element<any>;
24
26
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/components/router.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAExE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAIhE,MAAM,WAAW,KAAK,CAAC,YAAY,SAAS,MAAM;IAChD,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAA;IAC7F,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IAC/B,iBAAiB,CAAC,EAAE,GAAG,CAAA;IACvB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAA;CACjB;AACD,eAAO,MAAM,MAAM,wFAgDjB,CAAA"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/components/router.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAExE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAIhE,MAAM,WAAW,KAAK,CAAC,YAAY,SAAS,MAAM;IAChD,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAA;IAC7F,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IAC/B,iBAAiB,CAAC,EAAE,GAAG,CAAA;IACvB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAA;CACjB;AACD,eAAO,MAAM,MAAM;;iFAgDjB,CAAA"}
package/esm/index.d.ts CHANGED
@@ -5,4 +5,6 @@ export * from './shade.js';
5
5
  export * from './models/index.js';
6
6
  export * from './components/index.js';
7
7
  export * from './initialize.js';
8
+ export * from './styled-element.js';
9
+ export * from './styled-shade.js';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,OAAO,UAAU,CAAA;AACjB,cAAc,sBAAsB,CAAA;AACpC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,OAAO,UAAU,CAAA;AACjB,cAAc,sBAAsB,CAAA;AACpC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
package/esm/index.js CHANGED
@@ -5,4 +5,6 @@ export * from './shade.js';
5
5
  export * from './models/index.js';
6
6
  export * from './components/index.js';
7
7
  export * from './initialize.js';
8
+ export * from './styled-element.js';
9
+ export * from './styled-shade.js';
8
10
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,OAAO,UAAU,CAAA;AACjB,cAAc,sBAAsB,CAAA;AACpC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,OAAO,UAAU,CAAA;AACjB,cAAc,sBAAsB,CAAA;AACpC,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
@@ -1,8 +1,9 @@
1
1
  import type { Injector } from '@furystack/inject';
2
2
  import type { ChildrenList } from './children-list.js';
3
3
  import type { Disposable, ObservableValue } from '@furystack/utils';
4
- export type RenderOptions<TProps> = {
5
- readonly props: TProps;
4
+ import type { PartialElement } from './partial-element.js';
5
+ export type RenderOptions<TProps, TElementBase extends HTMLElement = HTMLElement> = {
6
+ readonly props: TProps & PartialElement<TElementBase>;
6
7
  renderCount: number;
7
8
  injector: Injector;
8
9
  children?: ChildrenList;
@@ -1 +1 @@
1
- {"version":3,"file":"render-options.d.ts","sourceRoot":"","sources":["../../src/models/render-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEnE,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B;;;;;OAKG;IACH,aAAa,EAAE,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAEzE;;;;;;;OAOG;IACH,aAAa,EAAE,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAC9B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,EAChC,OAAO,CAAC,EAAE,OAAO,KACd,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAEhD;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAE1F;;;;;OAKG;IACH,cAAc,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAEhG;;;;;;OAMG;IACH,cAAc,EAAE,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,EACf,WAAW,CAAC,EAAE,OAAO,KAClB,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;CACjD,CAAA"}
1
+ {"version":3,"file":"render-options.d.ts","sourceRoot":"","sources":["../../src/models/render-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,MAAM,aAAa,CAAC,MAAM,EAAE,YAAY,SAAS,WAAW,GAAG,WAAW,IAAI;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,CAAA;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B;;;;;OAKG;IACH,aAAa,EAAE,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAEzE;;;;;;;OAOG;IACH,aAAa,EAAE,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAC9B,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,EAChC,OAAO,CAAC,EAAE,OAAO,KACd,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAEhD;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAE1F;;;;;OAKG;IACH,cAAc,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;IAEhG;;;;;;OAMG;IACH,cAAc,EAAE,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,EACf,WAAW,CAAC,EAAE,OAAO,KAClB,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;CACjD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"shade-component.d.ts","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGrE;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,GAAG,gBAAgB,iCAY7D,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,GAAG;WAAqB,QAAQ,mBAAmB,CAAC;CAEnF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,OAAQ,WAAW,SAAS,GAAG,SAOvD,CAAA;AAED,eAAO,MAAM,oBAAoB,OAAQ,WAAW,SAAS,GAAG,SAK/D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,SAAS,GAAG,SAOtD,CAAA;AAED,KAAK,mBAAmB,CAAC,MAAM,IAAI;IACjC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,MAAM;IACb,GAAG,QAAQ,EAAE,YAAY;CAC1B,CAAA;AAGD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,4MAgBhC,CAAA;AAED,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,YAAY,CAAC,CAAA;AAElE,eAAO,MAAM,mBAAmB,6IAI/B,CAAA;AAED,eAAO,MAAM,eAAe,oWAK3B,CAAA"}
1
+ {"version":3,"file":"shade-component.d.ts","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGrE;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,GAAG,gBAAgB,iCAY7D,CAAA;AAED,eAAO,MAAM,QAAQ,UAAW,GAAG;WAAqB,QAAQ,mBAAmB,CAAC;CAEnF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,OAAQ,WAAW,SAAS,GAAG,SAOvD,CAAA;AAED,eAAO,MAAM,oBAAoB,OAAQ,WAAW,SAAS,GAAG,SAK/D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,WAAW,SAAS,GAAG,SAatD,CAAA;AAED,KAAK,mBAAmB,CAAC,MAAM,IAAI;IACjC,WAAW,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,MAAM;IACb,GAAG,QAAQ,EAAE,YAAY;CAC1B,CAAA;AAGD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,4MAgBhC,CAAA;AAED,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,YAAY,CAAC,CAAA;AAElE,eAAO,MAAM,mBAAmB,6IAI/B,CAAA;AAED,eAAO,MAAM,eAAe,oWAK3B,CAAA"}
@@ -47,7 +47,11 @@ export const attachDataAttributes = (el, props) => {
47
47
  * @param props The Props to attach
48
48
  */
49
49
  export const attachProps = (el, props) => {
50
- Object.assign(el, props);
50
+ if (!props) {
51
+ return;
52
+ }
53
+ const { style, ...rest } = props;
54
+ Object.assign(el, rest);
51
55
  if (props && props.style) {
52
56
  attachStyles(el, props);
53
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shade-component.js","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shade-component.js","sourceRoot":"","sources":["../src/shade-component.ts"],"names":[],"mappings":"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"}
package/esm/shade.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { Disposable } from '@furystack/utils';
2
2
  import type { Constructable } from '@furystack/inject';
3
- import type { ChildrenList, RenderOptions } from './models/index.js';
4
- export type ShadeOptions<TProps> = {
3
+ import type { ChildrenList, PartialElement, RenderOptions } from './models/index.js';
4
+ export type ShadeOptions<TProps, TElementBase extends HTMLElement> = {
5
5
  /**
6
6
  * Explicit shadow dom name. Will fall back to 'shade-{guid}' if not provided
7
7
  */
@@ -9,23 +9,23 @@ export type ShadeOptions<TProps> = {
9
9
  /**
10
10
  * Render hook, this method will be executed on each and every render.
11
11
  */
12
- render: (options: RenderOptions<TProps>) => JSX.Element | string | null;
12
+ render: (options: RenderOptions<TProps, TElementBase>) => JSX.Element | string | null;
13
13
  /**
14
14
  * Construct hook. Will be executed once when the element has been constructed and initialized
15
15
  */
16
- constructed?: (options: RenderOptions<TProps>) => void | undefined | (() => void) | Promise<void | undefined | (() => void)>;
16
+ constructed?: (options: RenderOptions<TProps, TElementBase>) => void | undefined | (() => void) | Promise<void | undefined | (() => void)>;
17
17
  /**
18
18
  * Will be executed when the element is attached to the DOM.
19
19
  */
20
- onAttach?: (options: RenderOptions<TProps>) => void;
20
+ onAttach?: (options: RenderOptions<TProps, TElementBase>) => void;
21
21
  /**
22
22
  * Will be executed when the element is detached from the DOM.
23
23
  */
24
- onDetach?: (options: RenderOptions<TProps>) => void;
24
+ onDetach?: (options: RenderOptions<TProps, TElementBase>) => void;
25
25
  /**
26
26
  * A factory method that creates a list of disposable resources that will be disposed when the element is detached.
27
27
  */
28
- resources?: (options: RenderOptions<TProps>) => Disposable[];
28
+ resources?: (options: RenderOptions<TProps, TElementBase>) => Disposable[];
29
29
  /**
30
30
  * Name of the HTML Element's base class. Needs to be defined if the elementBase is set. E.g.: 'div', 'button', 'input'
31
31
  */
@@ -33,12 +33,16 @@ export type ShadeOptions<TProps> = {
33
33
  /**
34
34
  * Base class for the custom element. Defaults to HTMLElement. E.g. HTMLButtonElement
35
35
  */
36
- elementBase?: Constructable<HTMLElement>;
36
+ elementBase?: Constructable<TElementBase>;
37
+ /**
38
+ * A default style that will be applied to the element. Can be overridden by external styles.
39
+ */
40
+ style?: Partial<CSSStyleDeclaration>;
37
41
  };
38
42
  /**
39
43
  * Factory method for creating Shade components
40
44
  * @param o for component creation
41
45
  * @returns the JSX element
42
46
  */
43
- export declare const Shade: <TProps>(o: ShadeOptions<TProps>) => (props: TProps, children: ChildrenList) => JSX.Element<any>;
47
+ export declare const Shade: <TProps, TElementBase extends HTMLElement = HTMLElement>(o: ShadeOptions<TProps, TElementBase>) => (props: TProps & PartialElement<TElementBase>, children?: ChildrenList) => JSX.Element<any>;
44
48
  //# sourceMappingURL=shade.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shade.d.ts","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAIpE,MAAM,MAAM,YAAY,CAAC,MAAM,IAAI;IACjC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAEvE;;OAEG;IACH,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAC3B,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IAE/E;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IAEnD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IAEnD;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAA;IAE5D;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;CACzC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,kGA+NjB,CAAA"}
1
+ {"version":3,"file":"shade.d.ts","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAKpF,MAAM,MAAM,YAAY,CAAC,MAAM,EAAE,YAAY,SAAS,WAAW,IAAI;IACnE;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAErF;;OAEG;IACH,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KACzC,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IAE/E;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAA;IAEjE;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAA;IAEjE;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,UAAU,EAAE,CAAA;IAE1E;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAEzC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;CACrC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,+JAuNiD,YAAY,qBAc9E,CAAA"}
package/esm/shade.js CHANGED
@@ -2,6 +2,7 @@ import { ObservableValue } from '@furystack/utils';
2
2
  import { Injector } from '@furystack/inject';
3
3
  import { ResourceManager } from './services/resource-manager.js';
4
4
  import { LocationService } from './services/location-service.js';
5
+ import { attachProps, attachStyles } from './shade-component.js';
5
6
  /**
6
7
  * Factory method for creating Shade components
7
8
  * @param o for component creation
@@ -181,6 +182,8 @@ export const Shade = (o) => {
181
182
  });
182
183
  el.props = props || {};
183
184
  el.shadeChildren = children;
185
+ attachStyles(el, { style: o.style });
186
+ attachProps(el, props);
184
187
  return el;
185
188
  };
186
189
  };
package/esm/shade.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { PartialElement } from './models/partial-element.js';
2
+ import type { ChildrenList } from './models/children-list.js';
3
+ /**
4
+ * Creates a shortcut for a specific custom Shade element with additional styles
5
+ * @param element The element instance
6
+ * @param styles The additional styles to add
7
+ * @returns The updated element
8
+ */
9
+ export declare const styledElement: <TElement extends keyof JSX.IntrinsicElements>(element: TElement, styles: Partial<CSSStyleDeclaration>) => (props: PartialElement<JSX.IntrinsicElements[TElement]>, childrenList: ChildrenList) => JSX.Element;
10
+ //# sourceMappingURL=styled-element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styled-element.d.ts","sourceRoot":"","sources":["../src/styled-element.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,aAAa,4EAEhB,QAAQ,mBAAmB,CAAC,6FACsD,WAW3F,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { createComponent } from './shade-component.js';
2
+ /**
3
+ * Creates a shortcut for a specific custom Shade element with additional styles
4
+ * @param element The element instance
5
+ * @param styles The additional styles to add
6
+ * @returns The updated element
7
+ */
8
+ export const styledElement = (element, styles) => {
9
+ return (props, childrenList) => {
10
+ const mergedProps = {
11
+ ...props,
12
+ style: {
13
+ ...(props?.style || {}),
14
+ ...styles,
15
+ },
16
+ };
17
+ return createComponent(element, mergedProps, ...childrenList);
18
+ };
19
+ };
20
+ //# sourceMappingURL=styled-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styled-element.js","sourceRoot":"","sources":["../src/styled-element.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAiB,EACjB,MAAoC,EACmE,EAAE;IACzG,OAAO,CAAC,KAAU,EAAE,YAA0B,EAAE,EAAE;QAChD,MAAM,WAAW,GAAG;YAClB,GAAG,KAAK;YACR,KAAK,EAAE;gBACL,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;gBACvB,GAAG,MAAM;aACV;SACF,CAAA;QACD,OAAO,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,YAAY,CAAgB,CAAA;IAC9E,CAAC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { ChildrenList } from './models/children-list.js';
2
+ /**
3
+ * Creates a shortcut for a specific custom Shade element with additional styles
4
+ * @param element The element instance
5
+ * @param styles The additional styles to add
6
+ * @returns The updated element
7
+ */
8
+ export declare const styledShade: <T extends (props: any, children?: ChildrenList) => JSX.Element>(element: T, styles: Partial<CSSStyleDeclaration>) => T;
9
+ //# sourceMappingURL=styled-shade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styled-shade.d.ts","sourceRoot":"","sources":["../src/styled-shade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,WAAW,qBAAsB,GAAG,aAAa,YAAY,KAAK,WAAW,sBAEhF,QAAQ,mBAAmB,CAAC,MAYrC,CAAA"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Creates a shortcut for a specific custom Shade element with additional styles
3
+ * @param element The element instance
4
+ * @param styles The additional styles to add
5
+ * @returns The updated element
6
+ */
7
+ export const styledShade = (element, styles) => {
8
+ return ((props, childrenList) => {
9
+ const mergedProps = {
10
+ ...props,
11
+ style: {
12
+ ...(props?.style || {}),
13
+ ...styles,
14
+ },
15
+ };
16
+ return element(mergedProps, childrenList);
17
+ });
18
+ };
19
+ //# sourceMappingURL=styled-shade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styled-shade.js","sourceRoot":"","sources":["../src/styled-shade.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAAU,EACV,MAAoC,EACpC,EAAE;IACF,OAAO,CAAC,CAAC,KAAU,EAAE,YAA2B,EAAE,EAAE;QAClD,MAAM,WAAW,GAAG;YAClB,GAAG,KAAK;YACR,KAAK,EAAE;gBACL,GAAG,CAAE,KAAa,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChC,GAAG,MAAM;aACV;SACF,CAAA;QACD,OAAO,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IAC3C,CAAC,CAAM,CAAA;AACT,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@furystack/shades",
3
- "version": "8.0.17",
3
+ "version": "8.1.0",
4
4
  "description": "Google Authentication Provider for FuryStack",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -38,15 +38,15 @@
38
38
  "homepage": "https://github.com/furystack/furystack",
39
39
  "devDependencies": {
40
40
  "@types/jsdom": "^21.1.6",
41
- "@types/node": "^20.11.19",
41
+ "@types/node": "^20.11.24",
42
42
  "jsdom": "^24.0.0",
43
43
  "typescript": "^5.3.3",
44
- "vitest": "^1.3.0"
44
+ "vitest": "^1.3.1"
45
45
  },
46
46
  "dependencies": {
47
- "@furystack/inject": "^8.1.6",
48
- "@furystack/rest": "^5.0.17",
49
- "@furystack/utils": "^4.0.15",
47
+ "@furystack/inject": "^8.1.7",
48
+ "@furystack/rest": "^5.0.18",
49
+ "@furystack/utils": "^4.0.16",
50
50
  "path-to-regexp": "^6.2.1",
51
51
  "semaphore-async-await": "^1.5.1"
52
52
  },
@@ -97,7 +97,7 @@ describe('Shades Component Factory', () => {
97
97
 
98
98
  const component = (
99
99
  <div>
100
- <Example injector={new Injector()} />
100
+ <Example />
101
101
  </div>
102
102
  )
103
103
 
@@ -1,3 +1,4 @@
1
1
  export * from './lazy-load.js'
2
+ export * from './link-to-route.js'
2
3
  export * from './router.js'
3
4
  export * from './route-link.js'
@@ -0,0 +1,46 @@
1
+ import { TextEncoder, TextDecoder } from 'util'
2
+
3
+ global.TextEncoder = TextEncoder
4
+ global.TextDecoder = TextDecoder as any
5
+
6
+ import { Injector } from '@furystack/inject'
7
+ import { LinkToRoute } from './link-to-route.js'
8
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest'
9
+ import { initializeShadeRoot } from '../initialize.js'
10
+ import { createComponent } from '../shade-component.js'
11
+ import type { Route } from './router.js'
12
+
13
+ describe('LinkToRoute', () => {
14
+ beforeEach(() => {
15
+ document.body.innerHTML = '<div id="root"></div>'
16
+ })
17
+ afterEach(() => {
18
+ document.body.innerHTML = ''
19
+ })
20
+
21
+ it('Shuld display the loader and completed state', async () => {
22
+ const injector = new Injector()
23
+ const rootElement = document.getElementById('root') as HTMLDivElement
24
+
25
+ initializeShadeRoot({
26
+ injector,
27
+ rootElement,
28
+ jsxElement: (
29
+ <LinkToRoute
30
+ route={
31
+ {
32
+ url: '/subroute/:id',
33
+ } as Route<{ id: number }>
34
+ }
35
+ params={{ id: 123 }}
36
+ id="route"
37
+ >
38
+ Link
39
+ </LinkToRoute>
40
+ ),
41
+ })
42
+ expect(document.body.innerHTML).toBe(
43
+ '<div id="root"><a is="link-to-route" id="route" href="/subroute/123">Link</a></div>',
44
+ )
45
+ })
46
+ })
@@ -0,0 +1,23 @@
1
+ import { compile } from 'path-to-regexp'
2
+ import type { Route } from './router.js'
3
+ import { Shade } from '../shade.js'
4
+ import type { ChildrenList } from '../models/children-list.js'
5
+ import { createComponent } from '../shade-component.js'
6
+
7
+ export type LinkToRouteProps<T extends {}> = {
8
+ route: Route<T>
9
+ params: T
10
+ } & Omit<JSX.IntrinsicElements['a'], 'href'>
11
+
12
+ export const LinkToRoute: <T extends {}>(props: LinkToRouteProps<T>, children?: ChildrenList) => JSX.Element = Shade({
13
+ shadowDomName: 'link-to-route',
14
+ elementBase: HTMLAnchorElement,
15
+ elementBaseName: 'a',
16
+ render: ({ props, element, children }) => {
17
+ const { route, params } = props
18
+
19
+ const url = compile(route.url)(params)
20
+ element.setAttribute('href', url)
21
+ return <>{children}</>
22
+ },
23
+ })
package/src/index.ts CHANGED
@@ -5,3 +5,5 @@ export * from './shade.js'
5
5
  export * from './models/index.js'
6
6
  export * from './components/index.js'
7
7
  export * from './initialize.js'
8
+ export * from './styled-element.js'
9
+ export * from './styled-shade.js'
@@ -1,9 +1,10 @@
1
1
  import type { Injector } from '@furystack/inject'
2
2
  import type { ChildrenList } from './children-list.js'
3
3
  import type { Disposable, ObservableValue } from '@furystack/utils'
4
+ import type { PartialElement } from './partial-element.js'
4
5
 
5
- export type RenderOptions<TProps> = {
6
- readonly props: TProps
6
+ export type RenderOptions<TProps, TElementBase extends HTMLElement = HTMLElement> = {
7
+ readonly props: TProps & PartialElement<TElementBase>
7
8
  renderCount: number
8
9
  injector: Injector
9
10
  children?: ChildrenList
@@ -50,7 +50,13 @@ export const attachDataAttributes = (el: HTMLElement, props: any) => {
50
50
  * @param props The Props to attach
51
51
  */
52
52
  export const attachProps = (el: HTMLElement, props: any) => {
53
- Object.assign(el, props)
53
+ if (!props) {
54
+ return
55
+ }
56
+
57
+ const { style, ...rest } = props
58
+
59
+ Object.assign(el, rest)
54
60
 
55
61
  if (props && (props as any).style) {
56
62
  attachStyles(el, props)
package/src/shade.ts CHANGED
@@ -2,11 +2,12 @@ import type { Disposable } from '@furystack/utils'
2
2
  import { ObservableValue } from '@furystack/utils'
3
3
  import type { Constructable } from '@furystack/inject'
4
4
  import { Injector } from '@furystack/inject'
5
- import type { ChildrenList, RenderOptions } from './models/index.js'
5
+ import type { ChildrenList, PartialElement, RenderOptions } from './models/index.js'
6
6
  import { ResourceManager } from './services/resource-manager.js'
7
7
  import { LocationService } from './services/location-service.js'
8
+ import { attachProps, attachStyles } from './shade-component.js'
8
9
 
9
- export type ShadeOptions<TProps> = {
10
+ export type ShadeOptions<TProps, TElementBase extends HTMLElement> = {
10
11
  /**
11
12
  * Explicit shadow dom name. Will fall back to 'shade-{guid}' if not provided
12
13
  */
@@ -15,29 +16,29 @@ export type ShadeOptions<TProps> = {
15
16
  /**
16
17
  * Render hook, this method will be executed on each and every render.
17
18
  */
18
- render: (options: RenderOptions<TProps>) => JSX.Element | string | null
19
+ render: (options: RenderOptions<TProps, TElementBase>) => JSX.Element | string | null
19
20
 
20
21
  /**
21
22
  * Construct hook. Will be executed once when the element has been constructed and initialized
22
23
  */
23
24
  constructed?: (
24
- options: RenderOptions<TProps>,
25
+ options: RenderOptions<TProps, TElementBase>,
25
26
  ) => void | undefined | (() => void) | Promise<void | undefined | (() => void)>
26
27
 
27
28
  /**
28
29
  * Will be executed when the element is attached to the DOM.
29
30
  */
30
- onAttach?: (options: RenderOptions<TProps>) => void
31
+ onAttach?: (options: RenderOptions<TProps, TElementBase>) => void
31
32
 
32
33
  /**
33
34
  * Will be executed when the element is detached from the DOM.
34
35
  */
35
- onDetach?: (options: RenderOptions<TProps>) => void
36
+ onDetach?: (options: RenderOptions<TProps, TElementBase>) => void
36
37
 
37
38
  /**
38
39
  * A factory method that creates a list of disposable resources that will be disposed when the element is detached.
39
40
  */
40
- resources?: (options: RenderOptions<TProps>) => Disposable[]
41
+ resources?: (options: RenderOptions<TProps, TElementBase>) => Disposable[]
41
42
 
42
43
  /**
43
44
  * Name of the HTML Element's base class. Needs to be defined if the elementBase is set. E.g.: 'div', 'button', 'input'
@@ -47,7 +48,12 @@ export type ShadeOptions<TProps> = {
47
48
  /**
48
49
  * Base class for the custom element. Defaults to HTMLElement. E.g. HTMLButtonElement
49
50
  */
50
- elementBase?: Constructable<HTMLElement>
51
+ elementBase?: Constructable<TElementBase>
52
+
53
+ /**
54
+ * A default style that will be applied to the element. Can be overridden by external styles.
55
+ */
56
+ style?: Partial<CSSStyleDeclaration>
51
57
  }
52
58
 
53
59
  /**
@@ -55,7 +61,9 @@ export type ShadeOptions<TProps> = {
55
61
  * @param o for component creation
56
62
  * @returns the JSX element
57
63
  */
58
- export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
64
+ export const Shade = <TProps, TElementBase extends HTMLElement = HTMLElement>(
65
+ o: ShadeOptions<TProps, TElementBase>,
66
+ ) => {
59
67
  // register shadow-dom element
60
68
  const customElementName = o.shadowDomName
61
69
 
@@ -65,7 +73,7 @@ export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
65
73
 
66
74
  customElements.define(
67
75
  customElementName,
68
- class extends ElementBase implements JSX.Element {
76
+ class extends (ElementBase as Constructable<HTMLElement>) implements JSX.Element {
69
77
  private _renderCount = 0
70
78
 
71
79
  /**
@@ -91,7 +99,7 @@ export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
91
99
  /**
92
100
  * Will be triggered when updating the external props object
93
101
  */
94
- public props!: TProps & { children?: JSX.Element[] }
102
+ public props!: TProps & { children?: JSX.Element[] } & PartialElement<TElementBase>
95
103
 
96
104
  /**
97
105
  * Will be updated when on children change
@@ -102,7 +110,7 @@ export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
102
110
  * @param options Options for rendering the component
103
111
  * @returns the JSX element
104
112
  */
105
- public render = (options: RenderOptions<TProps>) => {
113
+ public render = (options: RenderOptions<TProps, TElementBase>) => {
106
114
  this._renderCount++
107
115
  return o.render(options)
108
116
  }
@@ -110,8 +118,8 @@ export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
110
118
  /**
111
119
  * @returns values for the current render options
112
120
  */
113
- private getRenderOptions = (): RenderOptions<TProps> => {
114
- const renderOptions: RenderOptions<TProps> = {
121
+ private getRenderOptions = (): RenderOptions<TProps, TElementBase> => {
122
+ const renderOptions: RenderOptions<TProps, TElementBase> = {
115
123
  props: this.props,
116
124
  injector: this.injector,
117
125
  children: this.shadeChildren,
@@ -186,7 +194,7 @@ export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
186
194
  useDisposable: this.resourceManager.useDisposable.bind(this.resourceManager),
187
195
  }
188
196
 
189
- return renderOptions as RenderOptions<TProps>
197
+ return renderOptions as RenderOptions<TProps, TElementBase>
190
198
  }
191
199
 
192
200
  /**
@@ -268,14 +276,18 @@ export const Shade = <TProps>(o: ShadeOptions<TProps>) => {
268
276
  throw Error(`A custom shade with shadow DOM name '${o.shadowDomName}' has already been registered!`)
269
277
  }
270
278
 
271
- return (props: TProps, children: ChildrenList) => {
279
+ return (props: TProps & PartialElement<TElementBase>, children?: ChildrenList) => {
272
280
  const ElementType = customElements.get(customElementName)
273
281
  const el = new (ElementType as CustomElementConstructor)({
274
- ...(props as TProps & ElementCreationOptions),
282
+ ...(props as TProps & ElementCreationOptions & PartialElement<TElementBase>),
275
283
  }) as JSX.Element<TProps>
276
284
 
277
- el.props = props || ({} as TProps)
285
+ el.props = props || ({} as TProps & PartialElement<TElementBase>)
278
286
  el.shadeChildren = children
287
+
288
+ attachStyles(el, { style: o.style })
289
+ attachProps(el, props)
290
+
279
291
  return el as JSX.Element
280
292
  }
281
293
  }
@@ -0,0 +1,25 @@
1
+ import type { PartialElement } from './models/partial-element.js'
2
+ import { createComponent } from './shade-component.js'
3
+ import type { ChildrenList } from './models/children-list.js'
4
+
5
+ /**
6
+ * Creates a shortcut for a specific custom Shade element with additional styles
7
+ * @param element The element instance
8
+ * @param styles The additional styles to add
9
+ * @returns The updated element
10
+ */
11
+ export const styledElement = <TElement extends keyof JSX.IntrinsicElements>(
12
+ element: TElement,
13
+ styles: Partial<CSSStyleDeclaration>,
14
+ ): ((props: PartialElement<JSX.IntrinsicElements[TElement]>, childrenList: ChildrenList) => JSX.Element) => {
15
+ return (props: any, childrenList: ChildrenList) => {
16
+ const mergedProps = {
17
+ ...props,
18
+ style: {
19
+ ...(props?.style || {}),
20
+ ...styles,
21
+ },
22
+ }
23
+ return createComponent(element, mergedProps, ...childrenList) as JSX.Element
24
+ }
25
+ }
@@ -0,0 +1,23 @@
1
+ import type { ChildrenList } from './models/children-list.js'
2
+
3
+ /**
4
+ * Creates a shortcut for a specific custom Shade element with additional styles
5
+ * @param element The element instance
6
+ * @param styles The additional styles to add
7
+ * @returns The updated element
8
+ */
9
+ export const styledShade = <T extends (props: any, children?: ChildrenList) => JSX.Element>(
10
+ element: T,
11
+ styles: Partial<CSSStyleDeclaration>,
12
+ ) => {
13
+ return ((props: any, childrenList?: ChildrenList) => {
14
+ const mergedProps = {
15
+ ...props,
16
+ style: {
17
+ ...((props as any)?.style || {}),
18
+ ...styles,
19
+ },
20
+ }
21
+ return element(mergedProps, childrenList)
22
+ }) as T
23
+ }