ractivejs/ractive

RFC Typings: Ractive.find() return type does not support SVGElements

seijikun opened this issue · 3 comments

Description:

The find() method of a Ractive instance allows to find child DOM elements, rendered as part of the instance.
At the moment, the return type of this method is HTMLElement.
But as far as I understand it, Ractive should also allow svg here.

SVG elements in TypeScript do not inherit HTMLElement and can thus not be casted to SVGElement directly.
But there seems to be a bridge type: HTMLOrSVGElement.

Thus I suggest changing the return-type of the find() method to that.

Am I misusing something here?
Is there maybe a special find() for svg elements I am missing, or are they not meant to be used with this function at all?

Versions affected:

2.0.0-build-7

Current workaround

let svgEl = ((this.find('svg') as HTMLOrSVGElement) as SVGSVGElement);

I have change value of find/findAll constraint to Element. So now you can do:

const svgs = myComponent.findAll<SVGElement>('svg');
const svgPath = myComponent.find<SVGPathElement>('svg path');

Note that this fix will be included in the last edge (1.4.0-build-*) build when the PR is merged.
I suggest you to use that version.
Ractive 2.x doesn't include new features so you should have no problem downgrading.

Change is now available on ractive@1.4.0-build-55

Just upgraded, works like a charm.
Thank you very much!