# \[Feature-789\] Perspective component extensibility

**URL:** <https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459>\
**Category:** Ignition\
**Created:** [October 28, 2019, 7:14pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459 "2019-10-28T19:14:41Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [October 28, 2019, 7:14pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/1 "2019-10-28T19:14:41Z")

</div>

Being new to web dev, this may be a dumb question…

In Vision, I’m able to hack around and ~~break~~ change things in a given component to better suit my needs. For example, allow the dropdown component to support disabling items and increasing the touch area heights of the items.

Can we do this in perspective components? And if so, how? Do you have any examples?

Thanks!

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [October 28, 2019, 7:24pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/2 "2019-10-28T19:24:11Z")

</div>

Basically, no. A deliberate design decision was made early in Perspective’s development to _not_ allow arbitrary Javascript to be written by someone in the designer - which would be your way to access “internals” like you can in Java Swing (caveat: not really, because React is in the way, but basically).

On the plus side, adding an external component to Perspective is, generally, easier than Vision - personally, I’d like to add some kind of easy builder that handles the (minimal) Java portions required and makes it easier for front-end-ey folks to just supply their own JS code much more easily.

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [November 7, 2019, 5:49am UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/3 "2019-11-07T05:49:52Z")

</div>

Hmm, one of the things I like most about Vision is the fact that you can change things if you don’t like them, or need them to be different. I have used Perspective a little bit, and this lack of extensibility really stuck out to me as a sore thumb that was missing compared with Vision. I’m not a web programmer so I don’t know javascript ☹ but I guess I didn’t know any Java or Python before I started using Ignition either. It still will be far more work to create your own components in Perspective with slight modifications to existing components, than it is in Vision to do the same which is a bit disappointing

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [November 7, 2019, 4:30pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/4 "2019-11-07T16:30:51Z")

</div>

Well, the other end of things is that generally, what people are after with deeply complex Vision scripts is the ability to customize appearance - which is _instantly_ easier in a web context thanks to CSS. With better support for custom themes on the way, it’s only going to get better - even over and above style classes, you’ll be able to provide a custom theme that automatically styles your entire project - and CSS can do customization far beyond just coloring elements.

For the other things, such as customizing behavior, yes, there are limitations - you aren’t able to totally customize things as you can in Vision - but, also keep in mind that Perspective/8.0 hasn’t even been out for a year, compared to Vision’s ~decade lifespan. If things go according to plan, we’ll soon have first-party components or combinations of settings that cover 99% of the functionality you would want to customize - and then for those rare exceptions, custom modules are still available to you.

And, for what it’s worth, if you know Python, JS isn’t a far leap - or, if you want a really nice experience, you can develop with TypeScript (which we use in Perspective) - it’s the dynamic nature of Python, but with many of the advantages of a strong type system like Java has.

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [November 7, 2019, 8:19pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/5 "2019-11-07T20:19:45Z")

</div>

Out of interest, would something like moving the scrollbar of a table/flex repeater component to a specific location be possible in Perspective? Or is this something that would need a component change?

([Ignition - Table Component: Scroll Bar Hide & Selected Row](http://forum.inductiveautomation.com/t/ignition-table-component-scroll-bar-hide-selected-row/10720/12?u=nminchin))

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [November 7, 2019, 8:29pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/6 "2019-11-07T20:29:01Z")

</div>

We would probably have to expose an internal like `https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView` via a scripting method - first on components directly, then for something like the table it would have to have an ability to pass a specific row ID or something similar. That’s a decent feature request, though - I’ll file an internal ticket 🙂

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [November 7, 2019, 8:32pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/7 "2019-11-07T20:32:59Z")

</div>

Cheers! As you probably read, I use it in Vision to keep the active sequence step in a list of steps always visible. It’s super handy for an operator 🙂 I can see it being useful for other things as well though

---

<div class="post-metadata">

**Author:** ![jasoncoope](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jasoncoope/32/18674_2.png) [@jasoncoope](https://forum.inductiveautomation.com/u/jasoncoope)\
**Post date:** [October 12, 2020, 4:34pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/8 "2020-10-12T16:34:17Z")

</div>

I’m looking to do exactly the same as Nick, to keep the active row in a perspective table in view. Has the ‘scrollIntoView’ been implemented?

---

<div class="post-metadata">

**Author:** ![jcoffman](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jcoffman/32/6429_2.png) [@jcoffman](https://forum.inductiveautomation.com/u/jcoffman)\
**Post date:** [October 13, 2020, 4:14pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/9 "2020-10-13T16:14:03Z")

</div>

I just pulled this ticket back in to be evaluated and re-prioritized. Not sure when this would be planned or implemented at this point though.

---

<div class="post-metadata">

**Author:** ![lukas.wavrin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lukas.wavrin/32/25828_2.png) [@lukas.wavrin](https://forum.inductiveautomation.com/u/lukas.wavrin)\
**Post date:** [July 12, 2021, 8:05pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/10 "2021-07-12T20:05:54Z")

</div>

Checking back in here… any update on this scrollbar idea?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [July 12, 2021, 8:10pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/11 "2021-07-12T20:10:10Z")

</div>

It’s a low priority ‘feature’ in our backlog, and we tend to prioritize features below bug fixes, since more features inevitably means more bugs.

---

<div class="post-metadata">

**Author:** ![nicholas](https://avatars.discourse-cdn.com/v4/letter/n/4da419/32.png) [@nicholas](https://forum.inductiveautomation.com/u/nicholas)\
**Post date:** [May 6, 2022, 4:51pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/12 "2022-05-06T16:51:26Z")

</div>

Hey guys, any update on this? It has been a while and it is an important feature for us.  
Thanks!

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [July 26, 2022, 7:30pm UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/13 "2022-07-26T19:30:05Z")

</div>

Bump for jumping to selection in table

---

<div class="post-metadata">

**Author:** ![Ahmad\_Mohamadi](https://avatars.discourse-cdn.com/v4/letter/a/13edae/32.png) [@Ahmad\_Mohamadi](https://forum.inductiveautomation.com/u/Ahmad_Mohamadi)\
**Post date:** [October 19, 2022, 1:08am UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/14 "2022-10-19T01:08:26Z")

</div>

Please make this happen!

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [May 11, 2023, 2:50am UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/15 "2023-05-11T02:50:54Z")

</div>

> [@paul-griffith](#):
>
> would probably have to expose an internal like `https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView` via a scripting method

@victordcq one more for you, Victor, if you get a chance at some stage 😬 I'll give it a crack in the meantime if I get a chance!

---

<div class="post-metadata">

**Author:** ![victordcq](https://avatars.discourse-cdn.com/v4/letter/v/f6c823/32.png) [@victordcq](https://forum.inductiveautomation.com/u/victordcq)\
**Post date:** [May 11, 2023, 6:25am UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/16 "2023-05-11T06:25:22Z")

</div>

`document.querySelector('[data-row-id="22"]').scrollIntoView()`

quite easy if you have virtualized rows off. if not will be a bit harder. well asuming the table gets loaded in fast enough.

i can make something better, but dont have time right now

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [May 11, 2023, 7:15am UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/17 "2023-05-11T07:15:12Z")

</div>

Now that the pandora-markdown box is open, how about making js injection a bit... cleaner ?

---

<div class="post-metadata">

**Author:** ![victordcq](https://avatars.discourse-cdn.com/v4/letter/v/f6c823/32.png) [@victordcq](https://forum.inductiveautomation.com/u/victordcq)\
**Post date:** [May 11, 2023, 8:28am UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/18 "2023-05-11T08:28:15Z")

</div>

eh, there is no way to do this clean, safe and easily for someone who doesnt know js.

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [May 11, 2023, 8:49am UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/19 "2023-05-11T08:49:53Z")

</div>

But at the moment, when they do need js, they come to the forum and end up hacking the markdown component. That can't be a good solution.  
And for those who know js, they still have to go through hoops.  
That there is no built-in way is not stopping anyone, it just makes it ugly.

---

<div class="post-metadata">

**Author:** ![victordcq](https://avatars.discourse-cdn.com/v4/letter/v/f6c823/32.png) [@victordcq](https://forum.inductiveautomation.com/u/victordcq)\
**Post date:** [May 11, 2023, 9:11am UTC](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459/20 "2023-05-11T09:11:27Z")

</div>

i mean you could call it a js component, but it would look just the same tbh.  
it would both be text to html, and would require onload hacks, unless perspective does some things around it for only js onload, but that would limit the flexibility.

[Next page](https://forum.inductiveautomation.com/t/feature-789-perspective-component-extensibility/29459.md?page=2)
