UNPKG

smart-webcomponents-angular

Version:

[![Price](https://img.shields.io/badge/price-COMMERCIAL-0098f7.svg)](https://jqwidgets.com/license/)

1 lines 69.8 kB
{"version":3,"file":"smart-webcomponents-angular-layout.mjs","sources":["../../layout/src/smart.element.ts","../../layout/src/smart.layout.ts","../../layout/src/smart.layoutitem.ts","../../layout/src/smart.layoutgroup.ts","../../layout/src/smart.tablayoutitem.ts","../../layout/src/smart.tablayoutgroup.ts","../../layout/src/smart.layout.module.ts","../../layout/src/smart-webcomponents-angular-layout.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n Smart: any;\n}\n}\n\n\nimport { Directive, ElementRef, Input, Output, EventEmitter } from '@angular/core';\nimport { ElementRenderMode } from './../index';\n\n@Directive()\nexport class BaseElement {\n constructor(ref: ElementRef) {\n const that = this;\n this.nativeElement = ref.nativeElement as any;\n\n that.nativeElement.onAttached = () => {\n that.onAttach.emit(that.nativeElement);\n }\n\n that.nativeElement.onDetached = () => {\n that.onDetach.emit(that.nativeElement);\n }\n }\n\n @Output() onCreate: EventEmitter<any> = new EventEmitter();\n @Output() onReady: EventEmitter<any> = new EventEmitter();\n @Output() onAttach: EventEmitter<any> = new EventEmitter();\n @Output() onDetach: EventEmitter<any> = new EventEmitter();\n\n public nativeElement: any;\n\n public addEventListener(type: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions = false): void {\n this.nativeElement.addEventListener(type, listener, options);\n\t}\n\n\tpublic removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions = false): void {\n\t\tthis.nativeElement.removeEventListener(type, listener, options);\n\t}\n\n\tpublic dispatchEvent(event: Event): boolean {\n\t\treturn this.nativeElement.dispatchEvent(event);\n\t}\n\n\tpublic blur(): void {\n\t\tthis.nativeElement.blur();\n\t}\n\n\tpublic click(): void {\n\t\tthis.nativeElement.click();\n\t}\n\n\tpublic focus(options?: FocusOptions): void {\n\t\tthis.nativeElement.focus(options);\n\t}\n\n/** @description Sets or gets the license. */\n\t@Input()\n\tget license(): string {\n\t\treturn this.nativeElement ? this.nativeElement.license : undefined;\n\t}\n\tset license(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.license = value : undefined;\n\t}\n\t\n/** @description Sets or gets the language. Used in conjunction with the property messages. */\n\t@Input()\n\tget locale(): string {\n\t\treturn this.nativeElement ? this.nativeElement.locale : undefined;\n\t}\n\tset locale(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.locale = value : undefined;\n\t}\n\n\t/** @description Callback used to customize the format of the messages that are returned from the Localization Module. */\n\t@Input()\n\tget localizeFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.localizeFormatFunction : undefined;\n\t}\n\tset localizeFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.localizeFormatFunction = value : undefined;\n\t}\n\n\t/** @description Sets or gets an object specifying strings used in the widget that can be localized. Used in conjunction with the property locale. */\n\t@Input()\n\tget messages(): any {\n\t\treturn this.nativeElement ? this.nativeElement.messages : undefined;\n\t}\n\tset messages(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.messages = value : undefined;\n\t}\n\n\t/** @description Sets or gets the value indicating whether the element is aligned to support locales using right-to-left fonts. */\n\t@Input()\n\tget rightToLeft(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.rightToLeft : undefined;\n\t}\n\tset rightToLeft(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.rightToLeft = value : undefined;\n\t}\n\n\t/** @description Determines the theme. Theme defines the look of the element */\n\t@Input()\n\tget theme(): string {\n\t\treturn this.nativeElement ? this.nativeElement.theme : undefined;\n\t}\n\tset theme(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.theme = value : undefined;\n\t}\n}\n\nlet Smart: any;\nif (typeof window !== \"undefined\") {\n\tSmart = window.Smart;\n}\nexport { Smart };\n\n","import { Layout } from './../index';\nimport { Animation, Orientation, ElementRenderMode} from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, Output, EventEmitter, QueryList, ContentChildren } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { Animation, Orientation, ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { Layout } from './../index';\n\n\nimport { LayoutItemComponent } from './smart.layoutitem';\n\nimport { LayoutGroupComponent } from './smart.layoutgroup';\n\nimport { TabLayoutItemComponent } from './smart.tablayoutitem';\n\nimport { TabLayoutGroupComponent } from './smart.tablayoutgroup';\n\n@Directive({\n\texportAs: 'smart-layout',\tselector: 'smart-layout, [smart-layout]'\n})\n\nexport class LayoutComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n\n\tconstructor(ref: ElementRef<Layout>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as Layout;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic declare nativeElement: Layout;\n\t/** @description Creates the component on demand.\n\t * @param properties An optional object of properties, which will be added to the template binded ones.\n\t */\n\tpublic createComponent(properties = {}): any {\n \tthis.nativeElement = <Layout>document.createElement('smart-layout');\n\t\tfor (let propertyName in properties) { \n \t\t\tthis.nativeElement[propertyName] = properties[propertyName];\n\t\t}\n\t\treturn this.nativeElement;\n\t}\n\t/** @description Sets or retrieves the current animation mode for the element. When this property is set to 'none', all animations are disabled and no animation effects will be applied. Use this property to enable, disable, or specify different animation behaviors. */\n\t@Input()\n\tget animation(): Animation | string {\n\t\treturn this.nativeElement ? this.nativeElement.animation : undefined;\n\t}\n\tset animation(value: Animation | string) {\n\t\tthis.nativeElement ? this.nativeElement.animation = value : undefined;\n\t}\n\n\t/** @description Specifies the list of selectable options that will appear within the context menu, allowing users to interact with or perform actions based on their selection. */\n\t@Input()\n\tget contextMenuDataSource(): any {\n\t\treturn this.nativeElement ? this.nativeElement.contextMenuDataSource : undefined;\n\t}\n\tset contextMenuDataSource(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.contextMenuDataSource = value : undefined;\n\t}\n\n\t/** @description Determines whether the element is interactive or inactive. When enabled, the element can receive user input and respond to actions. When disabled, the element becomes non-interactive and does not respond to user input or events. */\n\t@Input()\n\tget disabled(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disabled : undefined;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disabled = value : undefined;\n\t}\n\n\t/** @description Sets or retrieves the data source associated with the Layout component. This property allows you to define the input data that the Layout will use to render its content, or to access the current data source being used. */\n\t@Input()\n\tget dataSource(): any {\n\t\treturn this.nativeElement ? this.nativeElement.dataSource : undefined;\n\t}\n\tset dataSource(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.dataSource = value : undefined;\n\t}\n\n\t/** @description Sets or retrieves the unlockKey, a unique code or token required to grant access to and activate the product’s full functionality. */\n\t@Input()\n\tget unlockKey(): string {\n\t\treturn this.nativeElement ? this.nativeElement.unlockKey : undefined;\n\t}\n\tset unlockKey(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.unlockKey = value : undefined;\n\t}\n\n\t/** @description Specifies or retrieves the current language setting. This property is typically used together with the messages property to display localized content based on the selected language. Setting this value changes which language messages are used, while getting it returns the currently active language code (e.g., \"en\", \"fr\", \"es\"). */\n\t@Input()\n\tget locale(): string {\n\t\treturn this.nativeElement ? this.nativeElement.locale : undefined;\n\t}\n\tset locale(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.locale = value : undefined;\n\t}\n\n\t/** @description Defines an object containing string values that represent messages or labels corresponding to various password strength states (e.g., \"weak\", \"medium\", \"strong\"). This is typically used to provide user feedback on password strength during password creation or validation processes. */\n\t@Input()\n\tget messages(): any {\n\t\treturn this.nativeElement ? this.nativeElement.messages : undefined;\n\t}\n\tset messages(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.messages = value : undefined;\n\t}\n\n\t/** @description Sets or retrieves the main orientation of the Layout component. This orientation determines how child Splitters within the Layout are arranged—either horizontally or vertically—by default. All Splitters inside the Layout will inherit this orientation unless a specific orientation is defined for them individually in the dataSource configuration. */\n\t@Input()\n\tget orientation(): Orientation | string {\n\t\treturn this.nativeElement ? this.nativeElement.orientation : undefined;\n\t}\n\tset orientation(value: Orientation | string) {\n\t\tthis.nativeElement ? this.nativeElement.orientation = value : undefined;\n\t}\n\n\t/** @description If the element is set to \"readonly\", users cannot modify its value, but they can still highlight and copy its contents. However, they cannot type, edit, or otherwise change the value within the field. The field remains focusable and selectable, but direct user input is disabled. */\n\t@Input()\n\tget readonly(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.readonly : undefined;\n\t}\n\tset readonly(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.readonly = value : undefined;\n\t}\n\n\t/** @description Indicates whether the splitting process occurs in real-time (live) or is performed as a pre-processed operation before use. */\n\t@Input()\n\tget allowLiveSplit(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.allowLiveSplit : undefined;\n\t}\n\tset allowLiveSplit(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.allowLiveSplit = value : undefined;\n\t}\n\n\t/** @description Sets or retrieves a value that determines whether the element's layout direction is configured for right-to-left (RTL) languages, such as Arabic or Hebrew, enabling proper alignment and rendering for locales that use RTL text. */\n\t@Input()\n\tget rightToLeft(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.rightToLeft : undefined;\n\t}\n\tset rightToLeft(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.rightToLeft = value : undefined;\n\t}\n\n\t/** @description Specifies which item is currently selected from a list or collection. This property typically holds the identifier, index, or value of the selected item, allowing the application to reference or display the chosen option. */\n\t@Input()\n\tget selectedIndex(): any {\n\t\treturn this.nativeElement ? this.nativeElement.selectedIndex : undefined;\n\t}\n\tset selectedIndex(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.selectedIndex = value : undefined;\n\t}\n\n\t/** @description Specifies the theme to be applied. The theme controls the overall appearance and style of the element, including colors, fonts, and visual layout, ensuring a consistent look and feel across the user interface. */\n\t@Input()\n\tget theme(): string {\n\t\treturn this.nativeElement ? this.nativeElement.theme : undefined;\n\t}\n\tset theme(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.theme = value : undefined;\n\t}\n\n\t/** @description When set to true, this property prevents the element from receiving keyboard focus, making it impossible for users to select the element using tab navigation or other focus-related interactions. */\n\t@Input()\n\tget unfocusable(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.unfocusable : undefined;\n\t}\n\tset unfocusable(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.unfocusable = value : undefined;\n\t}\n\n\t/** @description This event is triggered immediately after the user has finished resizing an element or window. It signals that the resizing action is complete, allowing you to perform any necessary updates or actions in response to the new size.\n\t* @param event. The custom event. \t*/\n\t@Output() onResize: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever there is a change in the Layout's state. Examples include actions such as adding a new item, removing an existing item, or any other modification that alters the structure or arrangement of the Layout.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\titem, \ttype)\n\t* item - The Splitter item that was the target of a change.\n\t* type - A description of the operation that has cause the change.\n\t*/\n\t@Output() onStateChange: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever the user changes the current selection, such as by highlighting different text or choosing a new item from a list. It occurs immediately after the selection has been modified, allowing you to respond to changes in user input or interface focus.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\toldSelectedIndex, \tselectedIndex)\n\t* oldSelectedIndex - The Splitter item that was previously selected.\n\t* selectedIndex - The Splitter item that is currently selected.\n\t*/\n\t@Output() onChange: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered right before the context menu is closed. Within the event handler, you can call event.preventDefault() to cancel the closing operation, allowing you to execute custom logic or prevent the menu from closing based on certain conditions.\n\t* @param event. The custom event. \t*/\n\t@Output() onClosing: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered when the context menu is closed by the user, either by selecting an option or clicking outside the menu.\n\t* @param event. The custom event. \t*/\n\t@Output() onClose: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is fired just before the context menu appears, typically when a user right-clicks on an element. By calling event.preventDefault() within the event handler, you can prevent the default context menu from opening, allowing you to implement a custom context menu or handle the action in a different way.\n\t* @param event. The custom event. \t*/\n\t@Output() onOpening: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever the context menu (typically accessed by right-clicking or a similar user action) is opened by the user.\n\t* @param event. The custom event. \t*/\n\t@Output() onOpen: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description This event is triggered whenever a user selects and clicks an option from the context menu. It occurs after the user has opened the context menu—typically via right-click or a long press—and chosen a specific menu item. The event provides details about the selected option, enabling you to handle custom actions or respond dynamically based on the user's selection.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\ttarget, \titem, \tlabel, \tvalue)\n\t* target - The Splitter item that was the target of the context menu opening.\n\t* item - The Context menu item that was clicked.\n\t* label - The label of the context menu that was clicked.\n\t* value - The value of the context menu that was clicked.\n\t*/\n\t@Output() onMenuItemClick: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description Returns the Layout item located at the specified index within the collection. The index is passed as a parameter, and the function retrieves the corresponding Layout item from the list or array. This allows you to access a particular Layout item by its position in the sequence. \n\t* @param {number | string} index. The index of an item.\n\t*/\n public getItem(index: number | string): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.getItem(index);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.getItem(index);\n });\n }\n }\n\n\t/** @description Automatically updates and redraws the layout to reflect any recent changes, ensuring all components are properly arranged and displayed according to the latest data or configuration. \n\t*/\n public refresh(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.refresh();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.refresh();\n });\n }\n }\n\n\t/** @description Inserts a new item element into the Layout component, positioning it within the existing structure according to the component's layout configuration. This action updates the Layout to include the new item as part of its content, ensuring proper rendering and alignment with other elements. \n\t* @param {any} type. The index of an item to be removed or an instance of JQX.SplitterItem.\n\t* @param {string | undefined} position?. A string that represents the position where the new item will be created.\n\t*/\n public createLayoutItem(type: any, position?: string | undefined): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.createLayoutItem(type, position);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.createLayoutItem(type, position);\n });\n }\n }\n\n\t/** @description Transfers all child elements or nodes from a specified source item to a designated target item, effectively moving the entire group of children so they become nested under the target item instead of the source. \n\t* @param {any} oldItem. The source item that will have it's content removed.\n\t* @param {any} newItem. The host item that will have it's content replaced.\n\t*/\n public moveChildren(oldItem: any, newItem: any): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.moveChildren(oldItem, newItem);\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.moveChildren(oldItem, newItem);\n });\n }\n }\n\n\n\tget isRendered(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.isRendered : false;\n\t}\n\n\tngOnInit() {\n\t}\n\n ngAfterViewInit() {\n const that = this;\n\n that.onCreate.emit(that.nativeElement);\n\n\t\tif (Smart) Smart.Render();\n\n\t\tthis.nativeElement.classList.add('smart-angular');\n\n\t\tif (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });\n\t\tthis.listen();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unlisten();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.nativeElement && this.nativeElement.isRendered) {\n\t\t\tfor (const propName in changes) {\n\t\t\t\tif (changes.hasOwnProperty(propName)) {\n\t\t\t\t\tthis.nativeElement[propName] = changes[propName].currentValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @description Add event listeners. */\n\tprivate listen(): void {\n const that = this;\n\t\tthat.eventHandlers['resizeHandler'] = (event: CustomEvent) => { that.onResize.emit(event); }\n\t\tthat.nativeElement.addEventListener('resize', that.eventHandlers['resizeHandler']);\n\n\t\tthat.eventHandlers['stateChangeHandler'] = (event: CustomEvent) => { that.onStateChange.emit(event); }\n\t\tthat.nativeElement.addEventListener('stateChange', that.eventHandlers['stateChangeHandler']);\n\n\t\tthat.eventHandlers['changeHandler'] = (event: CustomEvent) => { that.onChange.emit(event); }\n\t\tthat.nativeElement.addEventListener('change', that.eventHandlers['changeHandler']);\n\n\t\tthat.eventHandlers['closingHandler'] = (event: CustomEvent) => { that.onClosing.emit(event); }\n\t\tthat.nativeElement.addEventListener('closing', that.eventHandlers['closingHandler']);\n\n\t\tthat.eventHandlers['closeHandler'] = (event: CustomEvent) => { that.onClose.emit(event); }\n\t\tthat.nativeElement.addEventListener('close', that.eventHandlers['closeHandler']);\n\n\t\tthat.eventHandlers['openingHandler'] = (event: CustomEvent) => { that.onOpening.emit(event); }\n\t\tthat.nativeElement.addEventListener('opening', that.eventHandlers['openingHandler']);\n\n\t\tthat.eventHandlers['openHandler'] = (event: CustomEvent) => { that.onOpen.emit(event); }\n\t\tthat.nativeElement.addEventListener('open', that.eventHandlers['openHandler']);\n\n\t\tthat.eventHandlers['menuItemClickHandler'] = (event: CustomEvent) => { that.onMenuItemClick.emit(event); }\n\t\tthat.nativeElement.addEventListener('menuItemClick', that.eventHandlers['menuItemClickHandler']);\n\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n const that = this;\n\t\tif (that.eventHandlers['resizeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('resize', that.eventHandlers['resizeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['stateChangeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('stateChange', that.eventHandlers['stateChangeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['changeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('change', that.eventHandlers['changeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['closingHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('closing', that.eventHandlers['closingHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['closeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('close', that.eventHandlers['closeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['openingHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('opening', that.eventHandlers['openingHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['openHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('open', that.eventHandlers['openHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['menuItemClickHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('menuItemClick', that.eventHandlers['menuItemClickHandler']);\n\t\t}\n\n\t}\n}\n","import { LayoutItem } from './../index';\nimport { ElementRenderMode} from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { LayoutItem } from './../index';\n\n\n@Directive({\n\texportAs: 'smart-layout-item',\tselector: 'smart-layout-item, [smart-layout-item]'\n})\n\nexport class LayoutItemComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n\tconstructor(ref: ElementRef<LayoutItem>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as LayoutItem;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic declare nativeElement: LayoutItem;\n\t/** @description Creates the component on demand.\n\t * @param properties An optional object of properties, which will be added to the template binded ones.\n\t */\n\tpublic createComponent(properties = {}): any {\n \tthis.nativeElement = <LayoutItem>document.createElement('smart-layout-item');\n\t\tfor (let propertyName in properties) { \n \t\t\tthis.nativeElement[propertyName] = properties[propertyName];\n\t\t}\n\t\treturn this.nativeElement;\n\t}\n\t/** @description Specifies whether the element is active and interactive (enabled) or inactive and non-interactive (disabled). When disabled, users cannot interact with or modify the element. */\n\t@Input()\n\tget disabled(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disabled : undefined;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disabled = value : undefined;\n\t}\n\n\t/** @description Sets or retrieves the modifiers applied to the Layout item, allowing you to customize its appearance or behavior, such as spacing, alignment, or other layout-related properties. */\n\t@Input()\n\tget modifiers(): any {\n\t\treturn this.nativeElement ? this.nativeElement.modifiers : undefined;\n\t}\n\tset modifiers(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.modifiers = value : undefined;\n\t}\n\n\t/** @description Specifies the minimum allowed size for the item. This value sets the smallest dimensions (such as width or height) that the item can be resized or displayed at within its container. */\n\t@Input()\n\tget min(): number {\n\t\treturn this.nativeElement ? this.nativeElement.min : undefined;\n\t}\n\tset min(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.min = value : undefined;\n\t}\n\n\t/** @description Specifies the text or caption displayed as the item's label. This value is used to identify or describe the item in the user interface. */\n\t@Input()\n\tget label(): string {\n\t\treturn this.nativeElement ? this.nativeElement.label : undefined;\n\t}\n\tset label(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.label = value : undefined;\n\t}\n\n\t/** @description Specifies the dimensions of the item, such as width, height, or overall scale, to control how large or small the item appears within the interface. */\n\t@Input()\n\tget size(): any {\n\t\treturn this.nativeElement ? this.nativeElement.size : undefined;\n\t}\n\tset size(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.size = value : undefined;\n\t}\n\n\t/** @description When set to true, this property prevents the element from receiving keyboard focus, making it inaccessible through keyboard navigation such as the Tab key. */\n\t@Input()\n\tget unfocusable(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.unfocusable : undefined;\n\t}\n\tset unfocusable(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.unfocusable = value : undefined;\n\t}\n\n\n\tget isRendered(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.isRendered : false;\n\t}\n\n\tngOnInit() {\n\t}\n\n ngAfterViewInit() {\n const that = this;\n\n that.onCreate.emit(that.nativeElement);\n\n\t\tthis.nativeElement.classList.add('smart-angular');\n\n\t\tif (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });\n\t\tthis.listen();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unlisten();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.nativeElement && this.nativeElement.isRendered) {\n\t\t\tfor (const propName in changes) {\n\t\t\t\tif (changes.hasOwnProperty(propName)) {\n\t\t\t\t\tthis.nativeElement[propName] = changes[propName].currentValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @description Add event listeners. */\n\tprivate listen(): void {\n const that = this;\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n const that = this;\n\t}\n}\n","import { LayoutGroup } from './../index';\nimport { LayoutGroupOrientation, ElementRenderMode} from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { LayoutGroupOrientation, ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { LayoutGroup } from './../index';\n\n\n@Directive({\n\texportAs: 'smart-layout-group',\tselector: 'smart-layout-group, [smart-layout-group]'\n})\n\nexport class LayoutGroupComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n\tconstructor(ref: ElementRef<LayoutGroup>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as LayoutGroup;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic declare nativeElement: LayoutGroup;\n\t/** @description Creates the component on demand.\n\t * @param properties An optional object of properties, which will be added to the template binded ones.\n\t */\n\tpublic createComponent(properties = {}): any {\n \tthis.nativeElement = <LayoutGroup>document.createElement('smart-layout-group');\n\t\tfor (let propertyName in properties) { \n \t\t\tthis.nativeElement[propertyName] = properties[propertyName];\n\t\t}\n\t\treturn this.nativeElement;\n\t}\n\t/** @description Determines whether the element is interactive or not. When enabled, the element can be interacted with by users (e.g., clicked, edited, or focused). When disabled, the element becomes non-interactive and typically appears visually subdued, preventing any user actions. */\n\t@Input()\n\tget disabled(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disabled : undefined;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disabled = value : undefined;\n\t}\n\n\t/** @description Sets or retrieves the modifier properties applied to the Layout item, allowing you to customize its appearance and behavior (such as alignment, padding, margin, or transformations). Use this property to define or access configuration options that modify how the Layout item is displayed or interacts within its container. */\n\t@Input()\n\tget modifiers(): any {\n\t\treturn this.nativeElement ? this.nativeElement.modifiers : undefined;\n\t}\n\tset modifiers(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.modifiers = value : undefined;\n\t}\n\n\t/** @description Specifies the minimum allowable size for the item, ensuring that it cannot be resized smaller than this value. This property helps maintain layout integrity by preventing the item from shrinking below the defined threshold. */\n\t@Input()\n\tget min(): number {\n\t\treturn this.nativeElement ? this.nativeElement.min : undefined;\n\t}\n\tset min(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.min = value : undefined;\n\t}\n\n\t/** @description Specifies the text or name displayed as the label for the item, which is typically used to identify or describe the item in user interfaces. */\n\t@Input()\n\tget label(): string {\n\t\treturn this.nativeElement ? this.nativeElement.label : undefined;\n\t}\n\tset label(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.label = value : undefined;\n\t}\n\n\t/** @description Specifies the alignment or direction in which the group’s elements are arranged (e.g., horizontal, vertical, or custom orientation). This property controls how child components are positioned within the group. */\n\t@Input()\n\tget orientation(): LayoutGroupOrientation | string {\n\t\treturn this.nativeElement ? this.nativeElement.orientation : undefined;\n\t}\n\tset orientation(value: LayoutGroupOrientation | string) {\n\t\tthis.nativeElement ? this.nativeElement.orientation = value : undefined;\n\t}\n\n\t/** @description Specifies the overall dimensions of the item, such as its width, height, or volume, which can be used for layout, display, or calculation purposes. */\n\t@Input()\n\tget size(): any {\n\t\treturn this.nativeElement ? this.nativeElement.size : undefined;\n\t}\n\tset size(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.size = value : undefined;\n\t}\n\n\t/** @description If set to true, the element will be excluded from the tab order and cannot receive keyboard focus. This means users will not be able to focus on the element using the keyboard or other assistive technologies. */\n\t@Input()\n\tget unfocusable(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.unfocusable : undefined;\n\t}\n\tset unfocusable(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.unfocusable = value : undefined;\n\t}\n\n\n\tget isRendered(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.isRendered : false;\n\t}\n\n\tngOnInit() {\n\t}\n\n ngAfterViewInit() {\n const that = this;\n\n that.onCreate.emit(that.nativeElement);\n\n\t\tif (Smart) Smart.Render();\n\n\t\tthis.nativeElement.classList.add('smart-angular');\n\n\t\tif (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });\n\t\tthis.listen();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unlisten();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.nativeElement && this.nativeElement.isRendered) {\n\t\t\tfor (const propName in changes) {\n\t\t\t\tif (changes.hasOwnProperty(propName)) {\n\t\t\t\t\tthis.nativeElement[propName] = changes[propName].currentValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @description Add event listeners. */\n\tprivate listen(): void {\n const that = this;\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n const that = this;\n\t}\n}\n","import { TabLayoutItem } from './../index';\nimport { TabLayoutItemOrientation, ElementRenderMode} from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { TabLayoutItemOrientation, ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { TabLayoutItem } from './../index';\n\n\n@Directive({\n\texportAs: 'smart-tab-layout-item',\tselector: 'smart-tab-layout-item, [smart-tab-layout-item]'\n})\n\nexport class TabLayoutItemComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n\tconstructor(ref: ElementRef<TabLayoutItem>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as TabLayoutItem;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic declare nativeElement: TabLayoutItem;\n\t/** @description Creates the component on demand.\n\t * @param properties An optional object of properties, which will be added to the template binded ones.\n\t */\n\tpublic createComponent(properties = {}): any {\n \tthis.nativeElement = <TabLayoutItem>document.createElement('smart-tab-layout-item');\n\t\tfor (let propertyName in properties) { \n \t\t\tthis.nativeElement[propertyName] = properties[propertyName];\n\t\t}\n\t\treturn this.nativeElement;\n\t}\n\t/** @description Determines whether the element is interactive or not. When enabled, users can interact with the element; when disabled, the element becomes inactive and unresponsive to user actions. */\n\t@Input()\n\tget disabled(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disabled : undefined;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disabled = value : undefined;\n\t}\n\n\t/** @description Gets or sets the modifier properties (such as alignment, padding, spacing, or styling options) applied to the Layout item, allowing you to customize its appearance and behavior. */\n\t@Input()\n\tget modifiers(): any {\n\t\treturn this.nativeElement ? this.nativeElement.modifiers : undefined;\n\t}\n\tset modifiers(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.modifiers = value : undefined;\n\t}\n\n\t/** @description Specifies the minimum allowable size for the item, ensuring that it cannot be resized or rendered smaller than this value. */\n\t@Input()\n\tget min(): number {\n\t\treturn this.nativeElement ? this.nativeElement.min : undefined;\n\t}\n\tset min(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.min = value : undefined;\n\t}\n\n\t/** @description Specifies the text or name displayed as the label for the item. This value is shown to users as the item's identifier or title in user interfaces. */\n\t@Input()\n\tget label(): string {\n\t\treturn this.nativeElement ? this.nativeElement.label : undefined;\n\t}\n\tset label(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.label = value : undefined;\n\t}\n\n\t/** @description Specifies the alignment and direction in which the group’s elements are arranged, such as horizontal or vertical orientation. */\n\t@Input()\n\tget orientation(): TabLayoutItemOrientation | string {\n\t\treturn this.nativeElement ? this.nativeElement.orientation : undefined;\n\t}\n\tset orientation(value: TabLayoutItemOrientation | string) {\n\t\tthis.nativeElement ? this.nativeElement.orientation = value : undefined;\n\t}\n\n\t/** @description Specifies the overall dimensions of the item, such as its width, height, or length, to define how much space the item occupies. */\n\t@Input()\n\tget size(): any {\n\t\treturn this.nativeElement ? this.nativeElement.size : undefined;\n\t}\n\tset size(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.size = value : undefined;\n\t}\n\n\t/** @description When set to true, this property prevents the element from receiving keyboard focus, meaning users will not be able to access the element using the Tab key or other keyboard navigation methods. */\n\t@Input()\n\tget unfocusable(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.unfocusable : undefined;\n\t}\n\tset unfocusable(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.unfocusable = value : undefined;\n\t}\n\n\n\tget isRendered(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.isRendered : false;\n\t}\n\n\tngOnInit() {\n\t}\n\n ngAfterViewInit() {\n const that = this;\n\n that.onCreate.emit(that.nativeElement);\n\n\t\tthis.nativeElement.classList.add('smart-angular');\n\n\t\tif (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });\n\t\tthis.listen();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unlisten();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.nativeElement && this.nativeElement.isRendered) {\n\t\t\tfor (const propName in changes) {\n\t\t\t\tif (changes.hasOwnProperty(propName)) {\n\t\t\t\t\tthis.nativeElement[propName] = changes[propName].currentValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @description Add event listeners. */\n\tprivate listen(): void {\n const that = this;\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n const that = this;\n\t}\n}\n","import { TabLayoutGroup } from './../index';\nimport { TabLayoutGroupOrientation, TabLayoutGroupPosition, ElementRenderMode} from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { TabLayoutGroupOrientation, TabLayoutGroupPosition, ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { TabLayoutGroup } from './../index';\n\n\n@Directive({\n\texportAs: 'smart-tab-layout-group',\tselector: 'smart-tab-layout-group, [smart-tab-layout-group]'\n})\n\nexport class TabLayoutGroupComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n\tconstructor(ref: ElementRef<TabLayoutGroup>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as TabLayoutGroup;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic declare nativeElement: TabLayoutGroup;\n\t/** @description Creates the component on demand.\n\t * @param properties An optional object of properties, which will be added to the template binded ones.\n\t */\n\tpublic createComponent(properties = {}): any {\n \tthis.nativeElement = <TabLayoutGroup>document.createElement('smart-tab-layout-group');\n\t\tfor (let propertyName in properties) { \n \t\t\tthis.nativeElement[propertyName] = properties[propertyName];\n\t\t}\n\t\treturn this.nativeElement;\n\t}\n\t/** @description Specifies whether the element is interactive and can be used by the user. When enabled, the element responds to user actions; when disabled, the element is inactive and cannot be interacted with. */\n\t@Input()\n\tget disabled(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disabled : undefined;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disabled = value : undefined;\n\t}\n\n\t/** @description Gets the current modifiers applied to the Layout item, or sets new modifiers to customize its appearance and behavior. Modifiers may include properties such as alignment, spacing, padding, or visibility. */\n\t@Input()\n\tget modifiers(): any {\n\t\treturn this.nativeElement ? this.nativeElement.modifiers : undefined;\n\t}\n\tset modifiers(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.modifiers = value : undefined;\n\t}\n\n\t/** @description Specifies the minimum allowable size for the item. This value ensures that the item's dimensions do not shrink below the defined threshold, helping maintain layout consistency and usability. */\n\t@Input()\n\tget min(): number {\n\t\treturn this.nativeElement ? this.nativeElement.min : undefined;\n\t}\n\tset min(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.min = value : undefined;\n\t}\n\n\t/** @description Specifies the text that will be displayed as the item's label, providing a descriptive name or title for the user interface element. */\n\t@Input()\n\tget label(): string {\n\t\treturn this.nativeElement ? this.nativeElement.label : undefined;\n\t}\n\tset label(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.label = value : undefined;\n\t}\n\n\t/** @description Specifies the orientation (horizontal or vertical) of the group, defining how its child elements are arranged within the component. This setting affects the layout and flow direction of the grouped items. */\n\t@Input()\n\tget orientation(): TabLayoutGroupOrientation | string {\n\t\treturn this.nativeElement ? this.nativeElement.orientation : undefined;\n\t}\n\tset orientation(value: TabLayoutGroupOrientation | string) {\n\t\tthis.nativeElement ? this.nativeElement.orientation = value : undefined;\n\t}\n\n\t/** @description Specifies the alignment or placement of the group of tab items within the tab container. This determines whether the tabs are positioned, for example, at the start, center, end, or distributed evenly along the container. */\n\t@Input()\n\tget position(): TabLayoutGroupPosition | string {\n\t\treturn this.nativeElement ? this.nativeElement.position : undefined;\n\t}\n\tset position(value: TabLayoutGroupPosition | string) {\n\t\tthis.nativeElement ? this.nativeElement.position = value : undefined;\n\t}\n\n\t/** @description Specifies the dimensions or overall scale of the item, such as its width, height, or length. This property defines how large or small the item appears or is rendered within the user interface or layout. */\n\t@Input()\n\tget size(): any {\n\t\treturn this.nativeElement ? this.nativeElement.size : undefined;\n\t}\n\tset size(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.size = value : undefined;\n\t}\n\n\t/** @description When set to true, this property prevents the element from receiving keyboard focus, meaning it cannot be selected or navigated to using the Tab key or other keyboard navigation methods. */\n\t@Input()\n\tget unfocusable(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.unfocusable : undefined;\n\t}\n\tset unfocusable(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.unfocusable = value : undefined;\n\t}\n\n\n\tget isRendered(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.isRendered : false;\n\t}\n\n\tngOnInit() {\n\t}\n\n ngAfterViewInit() {\n const that = this;\n\n that.onCreate.emit(that.nativeElement);\n\n\t\tthis.nativeElement.classList.add('smart-angular');\n\n\t\tif (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });\n\t\tthis.listen();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unlisten();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.nativeElement && this.nativeElement.isRendered) {\n\t\t\tfor (const propName in changes) {\n\t\t\t\tif (changes.hasOwnProperty(propName)) {\n\t\t\t\t\tthis.nativeElement[propName] = changes[propName].currentValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @description Add event listeners. */\n\tprivate listen(): void {\n const that = this;\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n const that = this;\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { LayoutComponent } from './smart.layout';\nimport { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { LayoutItemComponent } from './smart.layoutitem';\nimport { LayoutGroupComponent } from './smart.layoutgroup';\nimport { TabLayoutItemComponent } from './smart.tablayoutitem';\nimport { TabLayoutGroupComponent } from './smart.tablayoutgroup';\n\n@NgModule({\n declarations: [LayoutComponent, LayoutItemComponent, LayoutGroupComponent, TabLayoutItemComponent, TabLayoutGroupComponent],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\texports: [LayoutComponent, LayoutItemComponent, LayoutGroupComponent, TabLayoutItemComponent, TabLayoutGroupComponent]\n})\n\nexport class LayoutModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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