Hi , we are using multiple child components in one parent and each child component uses igx dialog . each have there own width , height , overflow etc. To make some customization we are overriding igx dialog window class.
Hello,
I have been looking into your question and your requirements to style igx-dialog components in each of your individual components could be achieved with Ignite UI Angular Theming.
To get started with styling the dialog windows, you need to import the index file in each .scss component file, where all the theme functions and component mixins live:
@use "igniteui-angular/theming" as *;
Next you will create a new theme for each dialog in each component that extends the dialog-theme and accepts parameters that style the dialogs:
$my-dialog-theme: dialog-theme( $background: #011627, $title-color: #ecaa53, $message-color: #fefefe, $border-radius: .3, );
Since the dialog windows use the IgxOverlayService, in order for our each custom theme to reach down the each dialog window that you want to style, you will provide a specific outlet where the dialog window will be placed in the DOM when it is visible. In short, you'll set the igxOverlayOutlet directive on each element that contains the dialog itself:
<div igxOverlayOutlet> <igx-dialog #dialog1> </igx-dialog> </div>
The last step is to include the component theme in each of yours components:
:host { ::ng-deep { @include dialog($my-dialog-theme); } }
The described scenario could be observed here:
In addition, I have prepared small sample with two components that each has single igx-dialog component. The two child components is included in the parent app.component and and each component implements the above approach to style its igx-dialog. This sample could be found here. Please test it on your side and let me know how it behaves.
If you require any further assistance on the matter, please let me know.
Regards,
Georgi Anastasov
Entry Level Software Developer
Infragistics
Hi, thanks for the inputs. styling am able to make it work. the major blocker is we are not able to set the custom width, height etc at the dialog level. say in one component we want the height and width to be smaller and in other component the dialog size should be bigger where the dialog is occupying 80% of view port.
can you share some example for the same where the width height is set at
Thank you for the provided additional information.
I have been looking into your question and your requirements can be achieved in the same way. After you've followed the steps in my previous answer for each igx-dialog in each own component, in the final step where you add the themes and style the igx-dialog itself you can add additional custom styles for the different parts of the igx-dialog.
This will be achieved by in a component scss file in ::ng-deep which is in :host, select the class of the given dialog in the given component with .igx-dialog__window and apply custom styles for each according to your custom logic and preferences:
:host { ::ng-deep { @include css-vars($my-dialog-theme); .igx-dialog__window{ width: 300px; height: 500px; display: flex; flex-direction: column; justify-content: space-between; } } }
I have modified my previous sample illustrating this suggestion which could be found here. Please test it on your side and let me know how it behaves.
Thank you for your cooperation.
Im having issues too with styling need help quick.
It won't change the dialog theme (i want to make it transparent) i need help i tried everything. \:host ::ng-deep, i don't have any compile issues.Only thing that worked is::ng-deep .igx-dialog__windows background: transparent !important box-shadow: none !importantBut this way it changes to all my igx-dialogs what i don't want. Thanks in advance for help.
hey thanks i have tried this part and have running in to issues.
i have tried below things
1. setting style for .igx-dialog__window{ - doesnt work
2. setting style for .igx-dialog__window{ with ng deep - works
3. setting style for .igx-dialog__window{ with :host ng deep - doesnt work
in the scenarios where it doesnt work it takes the css from dialog-theme and not the customized one which i have added . any thing else i need to do or what would be the best way to troubleshoot this