# Modal
**Also known as:** Dialog, Popup
## Description
Modal is a temporary surface that covers the page and takes it over until it is dealt with. It hosts whatever is put in it - a form, a license agreement, a confirmation - over an overlay that takes the clicks meant for the page behind it, and it behaves the way a dialog is expected to: the focus moves into it when it opens, Tab keeps cycling inside it while it is open, the page behind it stops scrolling, Escape and a click on the overlay dismiss it, and the focus goes back to whatever opened it once it closes. Each of those can be turned off on its own. It brings a header, body and footer chrome for the surfaces that want one, it can be placed anywhere on the screen or over the element it was declared inside of, it can be dragged around and left modeless, it is as big as its content unless it is given a width, a height or a cap on either, it can be driven by binding IsOpen or through its Open, Close and Toggle methods, and it can be kept in the page while closed so the state of what is inside it survives.
## Parameters
| Name | Type | Default Value | Description |
| :--- | :--- | :------------ | :---------- |
| AbsolutePosition | `bool` | false | When true, the Modal is positioned absolute instead of fixed, so that it covers the element it was declared inside of rather than the screen. That element has to establish a containing block of its own (position: relative). |
| AriaModal | `bool` | true | Whether the Modal should be announced as modal to assistive technologies. It is also what decides whether the Modal keeps the keyboard inside itself: a Modal that is not announced as modal leaves the page behind it reachable with the keyboard the way it is reachable with the pointer. |
| AutoToggleScroll | `bool` | false | Enables the auto scrollbar toggle behavior of the Modal, which takes the overflow off the scroller while it is open and hands it back once it closes. A Modal that does this holds its own scroller, so the hold it would otherwise take on the page is stood down for it. The scroller is the one named by ScrollerElement or ScrollerSelector, then the one of the BitAppShell the Modal is inside of, and the page when it is inside none. |
| Blocking | `bool` | false | When enabled, prevents the Modal from being light dismissed by clicking outside the Modal (on the overlay). Escape still dismisses it unless NoDismissOnEscape is set as well. |
| Body | `RenderFragment?` | null | The content of the body section of the Modal, the alias of ChildContent, which it takes precedence over. This is what a Modal that also declares a Header or a Footer uses to keep the three of them side by side. |
| ChildContent | `RenderFragment?` | null | The content of the Modal, it can be any custom tag or text. |
| Classes | `BitModalClassStyles?` | null | Custom CSS classes for different parts of the BitModal component. |
| CloseButtonTitle | `string?` | null | The title (and aria-label) of the close button for accessibility and localization. Defaults to "Close" when not set. |
| CloseIcon | `BitIconInfo?` | null | The icon of the close button, provided as custom CSS classes of an external icon library. Takes precedence over CloseIconName when both are set. |
| CloseIconName | `string?` | null | The name of the icon of the close button, from the built-in Fluent UI icons. Defaults to Cancel when not set. |
| DefaultIsOpen | `bool?` | null | The initial opening state of the Modal in the uncontrolled mode, which is when the IsOpen parameter is not set. |
| DragElementSelector | `string?` | null | The CSS selector of the drag element, which is the content of the Modal by default. Ignored by a Modal that is not Draggable. |
| Draggable | `bool` | false | Whether the Modal can be dragged around. |
| Footer | `RenderFragment?` | null | The template used to render the footer section of the Modal. |
| FooterText | `string?` | null | The text of the footer section of the Modal. |
| FullHeight | `bool` | false | Makes the Modal height 100% of its parent container. |
| FullSize | `bool` | false | Makes the Modal width and height 100% of its parent container, which is FullWidth and FullHeight in one parameter. |
| FullWidth | `bool` | false | Makes the Modal width 100% of its parent container. |
| Header | `RenderFragment?` | null | The template used to render the header section of the Modal. Takes precedence over HeaderText when both are set. |
| HeaderText | `string?` | null | The text of the header section of the Modal. |
| Height | `string?` | null | The CSS height of the Modal (any CSS length). A Modal is as tall as its content when this is not set. It is written as an inline style on the content box, so it takes precedence over FullHeight, and it is capped by MaxHeight - or, when that is not set either, by the height of the screen. |
| IsAlert | `bool?` | null | Determines the ARIA role of the Modal (alertdialog/dialog). A Blocking Modal that is not Modeless announces itself as an alertdialog when this is not set, since a surface that refuses to be dismissed by a click outside of it is one waiting to be answered. |
| IsOpen | `bool` | false | Whether the Modal is displayed. |
| KeepMounted | `bool` | false | Keeps the Modal in the page while it is closed instead of taking it out and building it again the next time it opens, so the content - and whatever state it holds - survives being closed. Nothing is rendered before the first time the Modal opens, and a kept Modal is inert and hidden from assistive technologies while it is closed. |
| MaxHeight | `string?` | null | The CSS height the Modal is not to grow past, however long its content is (any CSS length). The height of the screen is the cap when this is not set, which is what keeps a Modal longer than the screen reachable: it scrolls inside itself rather than running off both ends of the page. |
| MaxWidth | `string?` | null | The CSS width the Modal is not to grow past, however wide its content is (any CSS length). The width of the screen is the cap when this is not set, which leaves a Modal as wide as its content - and on a wide screen that can be a line of text too long to read comfortably. |
| ModeFull | `bool` | false | Renders the overlay in full mode that gives it an opaque background. The overlay catches the clicks meant for the page behind it either way; this is what makes it dim that page as well. |
| Modeless | `bool` | false | Whether the Modal should be modeless (e.g. not dismiss when focusing/clicking outside of the Modal). If true: Blocking is ignored, there is no overlay, and the Modal neither reports itself modal nor holds the keyboard or the page. |
| NoAutoFocus | `bool` | false | Prevents the Modal from moving the focus into itself when it opens. By default the focus lands on the first focusable element of the content, or on the element inside it marked with the data-autofocus attribute, or on the content itself when it holds nothing focusable. |
| NoBorder | `bool` | false | Removes the default top border of the Modal. |
| NoDismissOnEscape | `bool` | false | Prevents the Modal from being dismissed by pressing the Escape key. |
| NoFocusTrap | `bool` | false | Prevents the Modal from keeping the keyboard focus inside itself while it is open. The trap is only set up for a Modal that reports itself modal (see AriaModal) in the first place. |
| NoRestoreFocus | `bool` | false | Prevents the Modal from handing the focus back to the element that had it before the Modal opened. The focus is only handed back when nothing else has taken it in the meantime. |
| NoScrollLock | `bool` | false | Prevents the Modal from holding the page still while it is open. By default the page behind an open Modal is held, with the room the scrollbar took added back as padding so that nothing shifts sideways; the holds are counted, so the page is only handed back once the last open Modal closes. A Modeless Modal never holds the page in the first place, and a Modal that toggles the scroll itself (see AutoToggleScroll) holds its scroller instead. The gestures that land on a Modal that leaves the page scrolling are handed to the scroller behind it - the one ScrollerElement or ScrollerSelector names, or the application shell's - since the layer the Modal is drawn in is fixed to the viewport, where the wheel would else reach a document that does not scroll. |
| OnDismiss | `EventCallback<MouseEventArgs>` | | A callback function for when the Modal is dismissed. |
| OnEscapeKeyDown | `EventCallback<KeyboardEventArgs>` | | A callback function for when the Escape key is pressed inside the Modal. It is invoked for every Escape, including the ones a Modal with NoDismissOnEscape refuses to be dismissed by, which makes it the counterpart of OnOverlayClick for the keyboard. |
| OnOpen | `EventCallback` | | A callback function for when the Modal is opened, invoked after it has rendered and its focus handling has run. |
| OnOverlayClick | `EventCallback<MouseEventArgs>` | | A callback function for when somewhere on the overlay element of the Modal is clicked. It is invoked for every overlay click, including the ones a Blocking Modal refuses to be dismissed by. |
| Position | `BitPosition?` | null | Position of the Modal on the screen. The Modal sits in the middle of the area it covers when this is not set. |
| ScrollerElement | `ElementReference?` | null | The element reference of the scroller the Modal holds while it is open. Takes precedence over ScrollerSelector and over the scroller a BitAppShell cascades, and is read by both holds: the one the Modal takes by default and the overflow toggle of AutoToggleScroll. |
| ScrollerSelector | `string?` | null | The CSS selector of the element whose scrolling the Modal holds while it is open. A Modal inside a BitAppShell holds the shell's scroller without being told to, since the shell cascades it; the page (body) is what is held when there is no shell and this is not set. Any other layout that scrolls a region of its own names that region here, since holding a page that never scrolls holds nothing. |
| ShowCloseButton | `bool` | false | Shows the close button of the Modal, which closes it without a handler of its own. |
| Styles | `BitModalClassStyles?` | null | Custom CSS styles for different parts of the BitModal component. |
| SubtitleAriaId | `string?` | null | ARIA id for the subtitle of the Modal, if any. |
| TitleAriaId | `string?` | null | ARIA id for the title of the Modal, if any. |
| Width | `string?` | null | The CSS width of the Modal (any CSS length). A Modal is as wide as its content when this is not set. It is written as an inline style on the content box, so it takes precedence over FullWidth, and it is capped by MaxWidth - or, when that is not set either, by the width of the screen. |
| AriaLabel | `string?` | null | Gets or sets the accessible label for the component, used by assistive technologies. |
| Class | `string?` | null | Gets or sets the CSS class name(s) to apply to the rendered element. |
| Dir | `BitDir?` | null | Gets or sets the text directionality for the component's content. |
| ForceAnimation | `bool` | false | Gets or sets a value indicating whether the component's animations play at their full duration even when reduced motion is requested. |
| HtmlAttributes | `Dictionary<string, object>` | new Dictionary<string, object>() | Captures additional HTML attributes to be applied to the rendered element, in addition to the component's parameters. |
| Id | `string?` | null | Gets or sets the unique identifier for the component's root element. |
| IsEnabled | `bool` | true | Gets or sets a value indicating whether the component is enabled and can respond to user interaction. |
| Style | `string?` | null | Gets or sets the CSS style string to apply to the rendered element. |
| TabIndex | `string?` | null | Gets or sets the tab order index for the component when navigating with the keyboard. |
| Visibility | `BitVisibility` | BitVisibility.Visible | Gets or sets the visibility state (visible, hidden, or collapsed) of the component. |
## Public Members
| Name | Type | Default Value | Description |
| :--- | :--- | :------------ | :---------- |
| Open | `Task` | | Opens the Modal programmatically. |
| Close | `Task` | | Closes the Modal programmatically. |
| Toggle | `Task` | | Toggles the Modal between its open and closed states. |
| UniqueId | `Guid` | Guid.NewGuid() | Gets the readonly unique identifier for the component's root element, assigned when the component instance is constructed. |
| RootElement | `ElementReference` | | Gets the reference to the root HTML element associated with this component. |
## Enums
### BitPosition Enum
| Name | Value | Description |
| :--- | :--- | :---------- |
| TopLeft | 0 | |
| TopCenter | 1 | |
| TopRight | 2 | |
| TopStart | 3 | |
| TopEnd | 4 | |
| CenterLeft | 5 | |
| Center | 6 | |
| CenterRight | 7 | |
| CenterStart | 8 | |
| CenterEnd | 9 | |
| BottomLeft | 10 | |
| BottomCenter | 11 | |
| BottomRight | 12 | |
| BottomStart | 13 | |
| BottomEnd | 14 | |
### BitVisibility Enum
| Name | Value | Description |
| :--- | :--- | :---------- |
| Visible | 0 | The content of the component is visible. |
| Hidden | 1 | The content of the component is hidden, but the space it takes on the page remains (visibility:hidden). |
| Collapsed | 2 | The component is hidden (display:none). |
### BitDir Enum
| Name | Value | Description |
| :--- | :--- | :---------- |
| Ltr | 0 | Ltr (left to right) is to be used for languages that are written from the left to the right (like English). |
| Rtl | 1 | Rtl (right to left) is to be used for languages that are written from the right to the left (like Arabic). |
| Auto | 2 | Auto lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then applies that directionality to the whole element. |
## Sub Classes
### BitModalClassStyles Properties
| Name | Type | Default Value | Description |
| :--- | :--- | :------------ | :---------- |
| Root | `string?` | null | Custom CSS classes/styles for the root element of the BitModal. |
| Overlay | `string?` | null | Custom CSS classes/styles for the overlay of the BitModal. |
| Content | `string?` | null | Custom CSS classes/styles for the content of the BitModal. |
| HeaderContainer | `string?` | null | Custom CSS classes/styles for the header container of the BitModal. |
| Header | `string?` | null | Custom CSS classes/styles for the header of the BitModal. |
| CloseButton | `string?` | null | Custom CSS classes/styles for the close button of the BitModal. |
| CloseIcon | `string?` | null | Custom CSS classes/styles for the close icon of the BitModal. |
| Body | `string?` | null | Custom CSS classes/styles for the body of the BitModal. |
| Footer | `string?` | null | Custom CSS classes/styles for the footer of the BitModal. |
## Examples
\n**Basic**:
```razor
Open ModalNoBorder
In the beginning, there is silence a blank canvas yearning to be filled, a quiet space where creativity waits
to awaken. These words are temporary, standing in place of ideas yet to come, a glimpse into the infinite
possibilities that lie ahead. Think of this text as a bridge, connecting the empty spaces of now with the
vibrant narratives of tomorrow. It whispers of the stories waiting to be told, of the thoughts yet to be
shaped into meaning, and the emotions ready to resonate with every reader.
In this space, potential reigns supreme. It is a moment suspended in time, where imagination dances freely and
each word has the power to transform into something extraordinary. Here lies the start of something new-an
opportunity to craft, inspire, and create. Whether it's a tale of adventure, a reflection of truth, or an
idea that sparks change, these lines are yours to fill, to shape, and to make uniquely yours. The journey
begins here, in this quiet moment where everything is possible.
The accent line along the top edge of the Modal is gone.
In the beginning, there is silence a blank canvas yearning to be filled, a quiet space where creativity waits
to awaken. These words are temporary, standing in place of ideas yet to come, a glimpse into the infinite
possibilities that lie ahead. Think of this text as a bridge, connecting the empty spaces of now with the
vibrant narratives of tomorrow. It whispers of the stories waiting to be told, of the thoughts yet to be
shaped into meaning, and the emotions ready to resonate with every reader.
In this space, potential reigns supreme. It is a moment suspended in time, where imagination dances freely and
each word has the power to transform into something extraordinary. Here lies the start of something new-an
opportunity to craft, inspire, and create. Whether it's a tale of adventure, a reflection of truth, or an
idea that sparks change, these lines are yours to fill, to shape, and to make uniquely yours. The journey
begins here, in this quiet moment where everything is possible.
Once upon a time, stories wove connections between people, a symphony of voices crafting shared dreams.
Each word carried meaning, each pause brought understanding. Placeholder text reminds us of that moment
when possibilities are limitless, waiting for content to emerge. The spaces here are open for growth,
for ideas that change minds and spark emotions. This is where the journey begins your words will lead the way.
Every story starts with a blank canvas, a quiet space waiting to be filled with ideas, emotions, and dreams.
These placeholder words symbolize the beginning-a moment of possibility where creativity has yet to take shape.
Imagine this text as the scaffolding of something remarkable, a foundation upon which connections and
inspirations will be built. Soon, these lines will transform into narratives that provoke thought,
spark emotion, and resonate with those who encounter them. Until then, they remind us of the beauty
in potential the quiet magic of beginnings, where everything is still to come, and the possibilities
are boundless. This space is yours to craft, yours to shape, yours to bring to life.
```
```csharp
private bool isOpenCustomContent;
```
\n**Header & Footer**:
```razor
HeaderTextHeader templateHeader & Footer
The title, the close button and the room around this text all come from the Modal itself, so
nothing here has to lay them out.
Search the docsA Header template takes whatever the title bar has to hold - here a search box under the title.The footer stays at the bottom of the Modal while this body scrolls between it and the header.
```
```csharp
private bool isOpenHeaderText;
private bool isOpenHeaderTemplate;
private bool isOpenFooter;
```
\n**Blocking**:
```razor
Open blocking Modal
Blocking modal
Every story starts with a blank canvas, a quiet space waiting to be filled with ideas, emotions, and dreams.
These placeholder words symbolize the beginning-a moment of possibility where creativity has yet to take shape.
Imagine this text as the scaffolding of something remarkable, a foundation upon which connections and
inspirations will be built. Soon, these lines will transform into narratives that provoke thought,
spark emotion, and resonate with those who encounter them. Until then, they remind us of the beauty
in potential the quiet magic of beginnings, where everything is still to come, and the possibilities
are boundless. This space is yours to craft, yours to shape, yours to bring to life.
The focus is hereTab and Shift+Tab cycle between the two buttons here, Ok and Cancel, and never reach the page behind them.OkCancel
Named starting point
The close button above is the first focusable element, but the field below is the one the focus lands on.Save
The focus stayed outsideThe focus is still on the button that opened this Modal, so Tab walks into the page behind it and Escape does nothing until something in here is focused.Close
The page is heldTry scrolling: the page behind this Modal stays where it was, and nothing shifted sideways when its scrollbar went away.Close
The page still scrollsTry scrolling: the page behind this Modal moves along with the wheel.Close
The overflow of the page was taken away while this Modal is open, and is handed back when it closes.
```
```csharp
private bool isOpenScrollLock;
private bool isOpenNoScrollLock;
private bool isOpenAutoToggleScroll;
```
\n**Sizing**:
```razor
MaxWidthWidth & HeightMaxHeight
MaxWidth
However long this paragraph gets, the Modal stops growing at 32rem and the text wraps
instead - which is what keeps a line short enough to be read on a wide screen.
Close
Width & HeightThis Modal is 24rem by 18rem whatever is put in it, so it never resizes under the user.Close
MaxHeightThe Modal stops at 16rem and scrolls inside itself from there, short of the edge of the screen. ...Close
FullWidthFullHeightFullSize
FullWidthThis Modal is as wide as the screen and as tall as its content.Close
FullHeightThis Modal is as tall as the screen and as wide as its content.Close
FullSizeThis Modal takes the whole screen, which is FullWidth and FullHeight in one parameter.Close
ModeFullThe overlay behind this Modal is opaque, so the page under it is dimmed rather than merely covered.Close
Carry on with the page while this one is open: it holds neither the pointer, nor the keyboard, nor the scroll.
```
```csharp
private bool isOpenModeFull;
private bool isOpenModeless;
```
\n**Position**:
```razor
Top LeftCenterBottom RightPosition: @positionThis Modal is placed by the Position parameter rather than by the middle of the screen.AbsolutePositionAbsolutePosition with its own scroller
This Modal covers the bordered box it was declared inside of rather than the page.The box behind this Modal is the scroller that was held still, named by ScrollerSelector.
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
```
```csharp
private bool isOpenPosition;
private BitPosition position = BitPosition.Center;
private void OpenModalInPosition(BitPosition positionValue)
{
position = positionValue;
isOpenPosition = true;
}
private bool isOpenAbsolute;
private bool isOpenAbsoluteScroller;
```
\n**Draggable**:
```razor
DraggableDragElementSelectorPress anywhere on this Modal and drag it around the screen.
Drag me by this bar
Only the bar above drags this Modal, so this text can still be selected.
```
```csharp
private bool isOpenDraggable;
private bool isOpenDragHandle;
```
\n**Accessibility**:
```razor
Labelled dialogAlert dialog
Terms of serviceRead these before carrying on.Accept
Delete the project?This cannot be undone.DeleteCancel
```
```csharp
private bool isOpenAlert;
private bool isOpenLabelled;
```
\n**Keeping the content**:
```razor
KeepMountedBuilt again each time
Every story starts with a blank canvas, a quiet space waiting to be filled with ideas, emotions, and dreams.
These placeholder words symbolize the beginning-a moment of possibility where creativity has yet to take shape.
Imagine this text as the scaffolding of something remarkable, a foundation upon which connections and
inspirations will be built. Soon, these lines will transform into narratives that provoke thought,
spark emotion, and resonate with those who encounter them. Until then, they remind us of the beauty
in potential the quiet magic of beginnings, where everything is still to come, and the possibilities
are boundless. This space is yours to craft, yours to shape, yours to bring to life.
```
```csharp
private bool isEventsOpen;
private bool isOpened;
private int openedVersion;
private bool isDismissed;
private bool isOverlayClicked;
private bool isEscapePressed;
private async Task HandleOnOpen()
{
// Each open starts a new countdown: a reopen within the 3 seconds must not be cleared by the reset of the previous one.
var version = ++openedVersion;
isOpened = true;
await Task.Delay(3000);
if (version != openedVersion) return;
isOpened = false;
StateHasChanged();
}
private async Task HandleOnDismiss()
{
isDismissed = true;
await Task.Delay(3000);
isDismissed = false;
}
private async Task HandleOnOverlayClick()
{
isOverlayClicked = true;
await Task.Delay(2000);
isOverlayClicked = false;
}
private async Task HandleOnEscapeKeyDown()
{
isEscapePressed = true;
await Task.Delay(2000);
isEscapePressed = false;
}
```
\n**Programmatic control**:
```razor
OpenToggle
Driven by methodsThis Modal has no IsOpen of its own: it is opened and closed through the reference to it.Close
Delete this project?Escape closes this one and leaves the settings behind it open.DeleteCancel
```
```csharp
private bool isOpenOuter;
private bool isOpenInner;
private void HandleNestedDelete()
{
isOpenInner = false;
isOpenOuter = false;
}
```
\n**External Icons**:
```razor
Open ModalThe close button of this Modal wears a FontAwesome icon.
```
```csharp
private bool isOpenExternalIcon;
```
\n**Style & Class**:
```razor
Open styled modalOpen classed modal
Styled modal
Every story starts with a blank canvas, a quiet space waiting to be filled with ideas, emotions, and dreams.
These placeholder words symbolize the beginning-a moment of possibility where creativity has yet to take shape.
Imagine this text as the scaffolding of something remarkable, a foundation upon which connections and
inspirations will be built. Soon, these lines will transform into narratives that provoke thought,
spark emotion, and resonate with those who encounter them. Until then, they remind us of the beauty
in potential the quiet magic of beginnings, where everything is still to come, and the possibilities
are boundless. This space is yours to craft, yours to shape, yours to bring to life.
Classed modal
Every story starts with a blank canvas, a quiet space waiting to be filled with ideas, emotions, and dreams.
These placeholder words symbolize the beginning-a moment of possibility where creativity has yet to take shape.
Imagine this text as the scaffolding of something remarkable, a foundation upon which connections and
inspirations will be built. Soon, these lines will transform into narratives that provoke thought,
spark emotion, and resonate with those who encounter them. Until then, they remind us of the beauty
in potential the quiet magic of beginnings, where everything is still to come, and the possibilities
are boundless. This space is yours to craft, yours to shape, yours to bring to life.
Open modal stylesOpen modal classes
Modal styles
Every story starts with a blank canvas, a quiet space waiting to be filled with ideas, emotions, and dreams.
These placeholder words symbolize the beginning-a moment of possibility where creativity has yet to take shape.
Imagine this text as the scaffolding of something remarkable, a foundation upon which connections and
inspirations will be built. Soon, these lines will transform into narratives that provoke thought,
spark emotion, and resonate with those who encounter them. Until then, they remind us of the beauty
in potential the quiet magic of beginnings, where everything is still to come, and the possibilities
are boundless. This space is yours to craft, yours to shape, yours to bring to life.
Modal classes
Every story starts with a blank canvas, a quiet space waiting to be filled with ideas, emotions, and dreams.
These placeholder words symbolize the beginning-a moment of possibility where creativity has yet to take shape.
Imagine this text as the scaffolding of something remarkable, a foundation upon which connections and
inspirations will be built. Soon, these lines will transform into narratives that provoke thought,
spark emotion, and resonate with those who encounter them. Until then, they remind us of the beauty
in potential the quiet magic of beginnings, where everything is still to come, and the possibilities
are boundless. This space is yours to craft, yours to shape, yours to bring to life.
Every part of the chrome - the header container, the header, the body and the footer - takes a class of its own.
```
```csharp
private bool isOpenStyle;
private bool isOpenClass;
private bool isOpenStyles;
private bool isOpenClasses;
private bool isOpenChromeClasses;
```
\n**RTL**:
```razor
باز کردن مُدال
لورم ایپسوم
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.
کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد.
در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.
لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.
کتابهای زیادی در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد.
در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.