UNPKG

smart-webcomponents-angular

Version:

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

715 lines (711 loc) 55.2 kB
if(typeof window !== 'undefined') { if (!window['Smart']) { window['Smart'] = { RenderMode: 'manual' }; } else { window['Smart'].RenderMode = 'manual'; } } import './../source/modules/smart.colorpicker'; import * as i0 from '@angular/core'; import { EventEmitter, Directive, Output, Input, forwardRef, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; class BaseElement { constructor(ref) { this.onCreate = new EventEmitter(); this.onReady = new EventEmitter(); this.onAttach = new EventEmitter(); this.onDetach = new EventEmitter(); const that = this; this.nativeElement = ref.nativeElement; that.nativeElement.onAttached = () => { that.onAttach.emit(that.nativeElement); }; that.nativeElement.onDetached = () => { that.onDetach.emit(that.nativeElement); }; } addEventListener(type, listener, options = false) { this.nativeElement.addEventListener(type, listener, options); } removeEventListener(type, listener, options = false) { this.nativeElement.removeEventListener(type, listener, options); } dispatchEvent(event) { return this.nativeElement.dispatchEvent(event); } blur() { this.nativeElement.blur(); } click() { this.nativeElement.click(); } focus(options) { this.nativeElement.focus(options); } /** @description Sets or gets the license. */ get license() { return this.nativeElement ? this.nativeElement.license : undefined; } set license(value) { this.nativeElement ? this.nativeElement.license = value : undefined; } /** @description Sets or gets the language. Used in conjunction with the property messages. */ get locale() { return this.nativeElement ? this.nativeElement.locale : undefined; } set locale(value) { this.nativeElement ? this.nativeElement.locale = value : undefined; } /** @description Callback used to customize the format of the messages that are returned from the Localization Module. */ get localizeFormatFunction() { return this.nativeElement ? this.nativeElement.localizeFormatFunction : undefined; } set localizeFormatFunction(value) { this.nativeElement ? this.nativeElement.localizeFormatFunction = value : undefined; } /** @description Sets or gets an object specifying strings used in the widget that can be localized. Used in conjunction with the property locale. */ get messages() { return this.nativeElement ? this.nativeElement.messages : undefined; } set messages(value) { this.nativeElement ? this.nativeElement.messages = value : undefined; } /** @description Sets or gets the value indicating whether the element is aligned to support locales using right-to-left fonts. */ get rightToLeft() { return this.nativeElement ? this.nativeElement.rightToLeft : undefined; } set rightToLeft(value) { this.nativeElement ? this.nativeElement.rightToLeft = value : undefined; } /** @description Determines the theme. Theme defines the look of the element */ get theme() { return this.nativeElement ? this.nativeElement.theme : undefined; } set theme(value) { this.nativeElement ? this.nativeElement.theme = value : undefined; } } BaseElement.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: BaseElement, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); BaseElement.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.6", type: BaseElement, inputs: { license: "license", locale: "locale", localizeFormatFunction: "localizeFormatFunction", messages: "messages", rightToLeft: "rightToLeft", theme: "theme" }, outputs: { onCreate: "onCreate", onReady: "onReady", onAttach: "onAttach", onDetach: "onDetach" }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: BaseElement, decorators: [{ type: Directive }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onCreate: [{ type: Output }], onReady: [{ type: Output }], onAttach: [{ type: Output }], onDetach: [{ type: Output }], license: [{ type: Input }], locale: [{ type: Input }], localizeFormatFunction: [{ type: Input }], messages: [{ type: Input }], rightToLeft: [{ type: Input }], theme: [{ type: Input }] } }); let Smart; if (typeof window !== "undefined") { Smart = window.Smart; } const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ColorPickerComponent), multi: true }; class ColorPickerComponent extends BaseElement { constructor(ref) { super(ref); this.eventHandlers = []; /** * @description * The registered callback function called when a change event occurs on the form elements. */ this._onChange = () => { }; /** * @description * The registered callback function called when a blur event occurs on the form elements. */ this._onTouched = () => { }; /** @description This event is triggered when the user clicks the action button. The "Ok" button will only appear if the applyValueMode property is set to useButtons. In other modes, the "Ok" button is hidden and this event will not be available. This setting allows developers to control when value changes are confirmed by requiring explicit user action. * @param event. The custom event. */ this.onActionButtonClick = new EventEmitter(); /** @description This event is triggered when the user clicks the 'Cancel' button. Note that the 'Cancel' button appears only if the applyValueMode property is set to useButtons. If a different value is set for applyValueMode, the 'Cancel' button will not be displayed, and this event will not be triggered. * @param event. The custom event. */ this.onCancelButtonClick = new EventEmitter(); /** @description This event is triggered whenever the color value is modified by the user or programmatically. It provides updated information about the new color selection, allowing you to perform actions—such as updating the UI or storing the new value—in response to the change. * @param event. The custom event. Custom event was created with: event.detail( oldValue, value) * oldValue - The previously selected color. * value - The new selected color. */ this.onChange = new EventEmitter(); /** @description This event is triggered when the dropdown menu is closed, either by selecting an option, clicking outside the dropdown, or pressing a key that dismisses the menu. It allows you to execute custom logic after the dropdown is no longer visible to the user. * @param event. The custom event. */ this.onClose = new EventEmitter(); /** @description This event is fired just before the dropdown menu is closed. By handling this event, you can intervene and prevent the dropdown from closing by calling event.preventDefault() within your event handler. This provides an opportunity to validate data, display a confirmation dialog, or perform any custom logic before the dropdown is hidden. * @param event. The custom event. */ this.onClosing = new EventEmitter(); /** @description This event is triggered whenever the custom color selection view is either opened or closed. The custom color selection view becomes accessible only when the enableCustomColors property is set to true. This event allows you to respond to user interactions with the custom color selector, such as initializing settings when the view opens or performing cleanup when it closes. * @param event. The custom event. Custom event was created with: event.detail( value) * value - A boolean that indicates whether the custom color view is shown or not. */ this.onCustomColorSelection = new EventEmitter(); /** @description This event is triggered when the user clicks on the dropdown button, indicating their intent to expand or collapse the dropdown menu. It can be used to execute custom logic—such as displaying options, updating UI elements, or tracking user interactions—whenever the dropdown button is activated. * @param event. The custom event. */ this.onDropDownButtonClick = new EventEmitter(); /** @description This event is triggered when the user clicks the "OK" button. It can be used to execute custom logic in response to the user's confirmation action, such as submitting a form, closing a modal dialog, or proceeding to the next step in a workflow. * @param event. The custom event. */ this.onOkButtonClick = new EventEmitter(); /** @description This event is triggered each time the dropdown menu becomes visible to the user, such as when it is clicked or otherwise activated. Use this event to execute custom logic when the dropdown opens, for example, loading dynamic content or initializing UI elements within the dropdown. * @param event. The custom event. */ this.onOpen = new EventEmitter(); /** @description This event is triggered immediately before the dropdown menu is opened. Within the event handler, you can prevent the dropdown from opening by calling event.preventDefault(). This provides an opportunity to perform validation, execute custom logic, or conditionally cancel the opening of the dropdown based on specific criteria. * @param event. The custom event. */ this.onOpening = new EventEmitter(); /** @description This event is triggered when the user initiates the resizing action on the dropdown component, such as by clicking and dragging the resize handle or edge. It indicates the start of the resize interaction, allowing you to perform actions like displaying visual cues or preparing to handle the size change. * @param event. The custom event. Custom event was created with: event.detail( position) * position - An object containing the current left and top positions of the drop down. */ this.onResizeStart = new EventEmitter(); /** @description This event is triggered when the resizing action of the dropdown component is complete, indicating that the user has finished adjusting its size. At this point, any changes to the dimensions of the dropdown are finalized, and you can safely perform operations that depend on its new size. * @param event. The custom event. Custom event was created with: event.detail( position) * position - An object containing the current left and top positions of the drop down. */ this.onResizeEnd = new EventEmitter(); this._initialChange = true; this.nativeElement = ref.nativeElement; } /** @description Creates the component on demand. * @param properties An optional object of properties, which will be added to the template binded ones. */ createComponent(properties = {}) { this.nativeElement = document.createElement('smart-color-picker'); for (let propertyName in properties) { this.nativeElement[propertyName] = properties[propertyName]; } return this.nativeElement; } /** @description Specifies or retrieves the animation mode for the element. When set to 'none', all animations are disabled and no animation effects will be applied. Assigning other valid values enables different animation behaviors according to the selected mode. */ get animation() { return this.nativeElement ? this.nativeElement.animation : undefined; } set animation(value) { this.nativeElement ? this.nativeElement.animation = value : undefined; } /** @description This property enables users to edit colors directly through the input field located within the element's action section. It accepts values in all supported color formats (such as HEX, RGB, or HSL). Please note, this property is effective only when the valueDisplayMode is set to either default or colorCode. */ get editable() { return this.nativeElement ? this.nativeElement.editable : undefined; } set editable(value) { this.nativeElement ? this.nativeElement.editable = value : undefined; } /** @description Specifies the duration (in milliseconds) to wait before automatically closing the dropdown menu after it has been opened, applicable only when dropDownOpenMode is set to 'auto'. This delay allows users sufficient time to interact with the dropdown before it closes automatically. */ get autoCloseDelay() { return this.nativeElement ? this.nativeElement.autoCloseDelay : undefined; } set autoCloseDelay(value) { this.nativeElement ? this.nativeElement.autoCloseDelay = value : undefined; } /** @description Defines the method for confirming the user's selected value in the color picker. - In ''instantly'' mode, the new value is applied immediately whenever the user selects a color, with no further confirmation required. - In ''useButtons'' mode, 'OK' and 'Cancel' buttons appear at the bottom of the color picker’s dropdown. The color change is only applied when the user clicks the 'OK' button. Clicking 'Cancel' will close the dropdown without applying the selected value. */ get applyValueMode() { return this.nativeElement ? this.nativeElement.applyValueMode : undefined; } set applyValueMode(value) { this.nativeElement ? this.nativeElement.applyValueMode = value : undefined; } /** @description Specifies how many columns of colors are displayed when using the 'grid', 'hexagonal', or 'spectrumGrid' displayModes. Adjusting this value determines the width of the color palette layout for these modes. */ get columnCount() { return this.nativeElement ? this.nativeElement.columnCount : undefined; } set columnCount(value) { this.nativeElement ? this.nativeElement.columnCount = value : undefined; } /** @description Specifies the color palette to be used, including individual colors and their arrangement within the layout. This setting controls both which colors are displayed and how they appear in the user interface. */ get displayMode() { return this.nativeElement ? this.nativeElement.displayMode : undefined; } set displayMode(value) { this.nativeElement ? this.nativeElement.displayMode = value : undefined; } /** @description Controls whether the element is interactive or not. When enabled, the element can be interacted with by the user; when disabled, the element is not interactive and may appear visually distinct (e.g., grayed out) to indicate its inactive state. */ get disabled() { return this.nativeElement ? this.nativeElement.disabled : undefined; } set disabled(value) { this.nativeElement ? this.nativeElement.disabled = value : undefined; } /** @description By default, clicking on the color panel's preview container reverts the selected color value to its previous state, effectively functioning as an undo action. Setting the 'disableUndo' option disables this functionality, so clicking the preview container will no longer revert the color value. */ get disableUndo() { return this.nativeElement ? this.nativeElement.disableUndo : undefined; } set disableUndo(value) { this.nativeElement ? this.nativeElement.disableUndo = value : undefined; } /** @description Defines the parent container in which the dropDown (popup) will be rendered. Accepts a CSS selector string, an element ID, or the literal value 'body'. This setting is helpful when the dropDown’s visibility is affected by CSS properties (such as overflow or z-index) applied to its parent elements. Specify 'body' to attach the dropDown directly to the document body element for maximum visibility. Example: 'body'. */ get dropDownAppendTo() { return this.nativeElement ? this.nativeElement.dropDownAppendTo : undefined; } set dropDownAppendTo(value) { this.nativeElement ? this.nativeElement.dropDownAppendTo = value : undefined; } /** @description Controls the direction or orientation in which the dropdown menu appears when activated (e.g., opening upwards, downwards, to the left, or to the right). This setting dictates the dropdown's display position relative to its trigger element. */ get dropDownOpenMode() { return this.nativeElement ? this.nativeElement.dropDownOpenMode : undefined; } set dropDownOpenMode(value) { this.nativeElement ? this.nativeElement.dropDownOpenMode = value : undefined; } /** @description Specifies the placement of the dropdown button relative to its parent element. This determines where the dropdown button will appear on the user interface, such as above, below, to the left, or to the right of the related element. */ get dropDownButtonPosition() { return this.nativeElement ? this.nativeElement.dropDownButtonPosition : undefined; } set dropDownButtonPosition(value) { this.nativeElement ? this.nativeElement.dropDownButtonPosition = value : undefined; } /** @description Specifies the vertical placement of the dropDown menu relative to its trigger element. When set to 'Auto', the component intelligently chooses to display the dropDown either above or below the trigger based on available space within the viewport, ensuring optimal visibility and user experience. */ get dropDownPosition() { return this.nativeElement ? this.nativeElement.dropDownPosition : undefined; } set dropDownPosition(value) { this.nativeElement ? this.nativeElement.dropDownPosition = value : undefined; } /** @description Specifies the height of the dropdown menu. By default, this property is set to null, which means the component will use CSS variables (custom properties) to determine its height. If the browser does not support CSS variables, set this property to a specific value (e.g., '200px' or '2.5em') to manually define the dropdown's height. Use this property only to ensure compatibility with browsers that lack support for CSS variables. */ get dropDownHeight() { return this.nativeElement ? this.nativeElement.dropDownHeight : undefined; } set dropDownHeight(value) { this.nativeElement ? this.nativeElement.dropDownHeight = value : undefined; } /** @description When this property is enabled, opening the element’s dropdown will display a transparent overlay that covers the area between the dropdown menu and the rest of the page. This overlay visually separates the dropdown from other content and can help capture user interactions outside the dropdown, such as clicks to close the menu. */ get dropDownOverlay() { return this.nativeElement ? this.nativeElement.dropDownOverlay : undefined; } set dropDownOverlay(value) { this.nativeElement ? this.nativeElement.dropDownOverlay = value : undefined; } /** @description Defines the width of the dropdown component. By default, this property is set to null, which means the dropdown will use CSS variables (such as '--dropdown-width') to determine its width. If you need to support browsers that do not support CSS variables, explicitly set this property to a specific width value (e.g., ''200px'' or ''20em''). This ensures consistent dropdown sizing across all browsers, including those without CSS variable support. */ get dropDownWidth() { return this.nativeElement ? this.nativeElement.dropDownWidth : undefined; } set dropDownWidth(value) { this.nativeElement ? this.nativeElement.dropDownWidth = value : undefined; } /** @description Enables users to adjust the alpha (transparency) level of colors through an editor or slider interface. This functionality is available in the following display modes: 'palette', 'radial', and 'hexagonal', allowing for precise control over color opacity in each mode. */ get editAlphaChannel() { return this.nativeElement ? this.nativeElement.editAlphaChannel : undefined; } set editAlphaChannel(value) { this.nativeElement ? this.nativeElement.editAlphaChannel = value : undefined; } /** @description Enables users to choose a custom color through an editor popup interface. This feature provides custom color selection in modes where it is not available by default—such as 'grid', 'default', and 'spectrum grid'—enhancing flexibility and user experience across different color selection modes. */ get enableCustomColors() { return this.nativeElement ? this.nativeElement.enableCustomColors : undefined; } set enableCustomColors(value) { this.nativeElement ? this.nativeElement.enableCustomColors = value : undefined; } /** @description Defines an array of color values that serve as the theme colors for the component or section. These colors will be applied when the displayMode is set to either 'grid' or 'default', ensuring consistent theming across these display modes. Each color in the array should be specified in a valid CSS color format (e.g., HEX, RGB, or named color). */ get gridThemeColors() { return this.nativeElement ? this.nativeElement.gridThemeColors : undefined; } set gridThemeColors(value) { this.nativeElement ? this.nativeElement.gridThemeColors = value : undefined; } /** @description Specifies an array of color values to be used as shade colors within the relevant section when the displayMode is set to either 'grid' or 'default'. These colors determine the visual shading or background color scheme that appears in these display modes. */ get gridShadeColors() { return this.nativeElement ? this.nativeElement.gridShadeColors : undefined; } set gridShadeColors(value) { this.nativeElement ? this.nativeElement.gridShadeColors = value : undefined; } /** @description Specifies an array of colors to be used as the standard color palette within the relevant section when the displayMode is set to either 'grid' or 'default'. These colors will be available for selection or display in these display modes, providing a consistent and predefined set of color options for users. */ get gridStandardColors() { return this.nativeElement ? this.nativeElement.gridStandardColors : undefined; } set gridStandardColors(value) { this.nativeElement ? this.nativeElement.gridStandardColors = value : undefined; } /** @description Hides the alpha editor. The alpha editor is an input field that allows users to adjust the opacity (alpha value) of the currently selected color. It is available in the following display modes: 'radial', 'palette', and 'hexagonal'. The alpha editor is only shown when there is sufficient space in the UI. By default, this editor is visible unless explicitly hidden using this setting. */ get hideAlphaEditor() { return this.nativeElement ? this.nativeElement.hideAlphaEditor : undefined; } set hideAlphaEditor(value) { this.nativeElement ? this.nativeElement.hideAlphaEditor = value : undefined; } /** @description Specifies the priority order in which color editors are hidden when there is insufficient space to display them all. By default, these editors are only visible in the 'palette', 'radial', and 'hexagonal' display modes. This property enables you to control which editors remain visible by defining their visibility priority, ensuring that the most important editors are retained as the available space decreases. */ get hideContentToFit() { return this.nativeElement ? this.nativeElement.hideContentToFit : undefined; } set hideContentToFit(value) { this.nativeElement ? this.nativeElement.hideContentToFit = value : undefined; } /** @description The HEX editor is a user input field that allows users to view and edit the hexadecimal (HEX) color code, representing the selected color. By default, the HEX editor is visible within the interface, enabling users to enter or modify HEX values such as #FF5733. To hide the HEX editor from the interface, set the 'hideHEXeditor' property to true. Note: Setting 'hideRGBeditor' to true only hides the RGB editor and does not affect the visibility of the HEX editor. */ get hideHEXEditor() { return this.nativeElement ? this.nativeElement.hideHEXEditor : undefined; } set hideHEXEditor(value) { this.nativeElement ? this.nativeElement.hideHEXEditor = value : undefined; } /** @description Hides the preview container, which displays the currently selected value when using the 'palette', 'radial', or 'hexagonal' display modes. When this option is enabled, the user will not see the visual preview of their selection within the interface. This can be useful for creating a more compact UI or when the preview is not necessary for your workflow. */ get hidePreviewContainer() { return this.nativeElement ? this.nativeElement.hidePreviewContainer : undefined; } set hidePreviewContainer(value) { this.nativeElement ? this.nativeElement.hidePreviewContainer = value : undefined; } /** @description Hides the RGB editor interface. The RGB editor consists of three individual input fields, each allowing users to specify the Red, Green, and Blue components of a color separately. By hiding the RGB editor, users will no longer see or interact with these color value inputs. */ get hideRGBEditor() { return this.nativeElement ? this.nativeElement.hideRGBEditor : undefined; } set hideRGBEditor(value) { this.nativeElement ? this.nativeElement.hideRGBEditor = value : undefined; } /** @description Displays supplementary helper text beneath the element, which becomes visible only when the element is focused, providing context-specific guidance to the user during interaction. */ get hint() { return this.nativeElement ? this.nativeElement.hint : undefined; } set hint(value) { this.nativeElement ? this.nativeElement.hint = value : undefined; } /** @description Inverts all colors displayed in the ‘spectrumGrid’, ‘hexagonal’, and ‘radial’ modes, producing their complementary (negative) color values for each element in these modes. This affects the entire color range shown, allowing for an alternative visual representation of the color palette. */ get inverted() { return this.nativeElement ? this.nativeElement.inverted : undefined; } set inverted(value) { this.nativeElement ? this.nativeElement.inverted = value : undefined; } /** @description Displays a descriptive label above the element to provide context or identify its purpose for users. */ get label() { return this.nativeElement ? this.nativeElement.label : undefined; } set label(value) { this.nativeElement ? this.nativeElement.label = value : undefined; } /** @description Sets or retrieves the unlockKey, a value required to activate or grant access to the product’s features. This key is typically used for licensing or security purposes, ensuring only authorized users can unlock the product. */ get unlockKey() { return this.nativeElement ? this.nativeElement.unlockKey : undefined; } set unlockKey(value) { this.nativeElement ? this.nativeElement.unlockKey = value : undefined; } /** @description Specifies or retrieves the current language code (e.g., 'en', 'fr', 'es') to be used for localization purposes. This property works together with the messages property, which contains language-specific translations or text. Setting this value determines which set of messages is displayed to users based on their selected language. */ get locale() { return this.nativeElement ? this.nativeElement.locale : undefined; } set locale(value) { this.nativeElement ? this.nativeElement.locale = value : undefined; } /** @description A callback function that allows you to define a custom format for messages returned by the Localization Module. Use this to modify the structure, content, or presentation of localized messages before they are delivered to your application. */ get localizeFormatFunction() { return this.nativeElement ? this.nativeElement.localizeFormatFunction : undefined; } set localizeFormatFunction(value) { this.nativeElement ? this.nativeElement.localizeFormatFunction = value : undefined; } /** @description Defines or retrieves an object containing the localized strings used within the widget’s user interface. This property works in conjunction with the locale property to enable the display of text in different languages, allowing developers to customize and provide translations for all UI elements and messages. */ get messages() { return this.nativeElement ? this.nativeElement.messages : undefined; } set messages(value) { this.nativeElement ? this.nativeElement.messages = value : undefined; } /** @description Specifies or retrieves the value of the element’s name attribute. The name attribute is used to identify form controls when submitting an HTML form; its value is included as the key in the form-data sent to the server and allows the server to process user input correctly. */ get name() { return this.nativeElement ? this.nativeElement.name : undefined; } set name(value) { this.nativeElement ? this.nativeElement.name = value : undefined; } /** @description Specifies if the popup component is currently visible (open) or hidden (closed). */ get opened() { return this.nativeElement ? this.nativeElement.opened : undefined; } set opened(value) { this.nativeElement ? this.nativeElement.opened = value : undefined; } /** @description Specifies the color palette that will appear in the 'spectrumGrid', 'grid', and 'hexagonal' display modes. These colors define the available color options shown to users when any of these display modes are active. */ get palette() { return this.nativeElement ? this.nativeElement.palette : undefined; } set palette(value) { this.nativeElement ? this.nativeElement.palette = value : undefined; } /** @description Defines a custom color palette as an array, which can be utilized in the display modes 'grid' and 'spectrum grid' when the palette property is set to custom. Each item in the array can either be a string representing a valid color format (such as HEX, RGB, or RGBA), or an object containing a color value. This allows you to specify a tailored set of colors for your application's interface, ensuring precise control over the available color options in supported display modes. */ get paletteColors() { return this.nativeElement ? this.nativeElement.paletteColors : undefined; } set paletteColors(value) { this.nativeElement ? this.nativeElement.paletteColors = value : undefined; } /** @description Specifies an array containing a predefined set of custom colors for use in the application's color picker component. This custom palette appears in the color grid when the color picker is in 'grid', 'default', or 'spectrum grid' displayModes. The custom colors are displayed below the custom color selection button, at the bottom of the color grid. These colors are only visible if the enableCustomColor property is set to true. This allows users to quickly access and select from your specified custom colors in supported display modes. */ get paletteCustomColors() { return this.nativeElement ? this.nativeElement.paletteCustomColors : undefined; } set paletteCustomColors(value) { this.nativeElement ? this.nativeElement.paletteCustomColors = value : undefined; } /** @description The placeholder appears when no value has been entered, or if the current value is null. It provides a visual cue or hint to the user about the expected input until an actual value is provided. */ get placeholder() { return this.nativeElement ? this.nativeElement.placeholder : undefined; } set placeholder(value) { this.nativeElement ? this.nativeElement.placeholder = value : undefined; } /** @description Prevents any user interactions with the element, such as clicking, typing, or focusing, rendering it completely unresponsive to pointer and keyboard events. */ get readonly() { return this.nativeElement ? this.nativeElement.readonly : undefined; } set readonly(value) { this.nativeElement ? this.nativeElement.readonly = value : undefined; } /** @description Controls the visibility of the resize indicator located in the bottom-right corner of the dropdown menu. When set to true, the resize handle is displayed, allowing users to adjust the size of the dropdown. This property should be used alongside the resizeMode property to specify how resizing is handled. */ get resizeIndicator() { return this.nativeElement ? this.nativeElement.resizeIndicator : undefined; } set resizeIndicator(value) { this.nativeElement ? this.nativeElement.resizeIndicator = value : undefined; } /** @description Specifies whether the drop-down menu can be resized by the user. When this option is enabled, a resize handle appears on either the top or bottom edge of the drop-down, allowing users to adjust its height interactively. If disabled, the drop-down’s size remains fixed and cannot be modified by the user. */ get resizeMode() { return this.nativeElement ? this.nativeElement.resizeMode : undefined; } set resizeMode(value) { this.nativeElement ? this.nativeElement.resizeMode = value : undefined; } /** @description Specifies or retrieves a value that determines whether the element's text direction is set to right-to-left (RTL) alignment, commonly used for languages such as Arabic or Hebrew. This property ensures the element properly supports locales that require right-to-left text display. */ get rightToLeft() { return this.nativeElement ? this.nativeElement.rightToLeft : undefined; } set rightToLeft(value) { this.nativeElement ? this.nativeElement.rightToLeft = value : undefined; } /** @description Specifies the theme to be applied to the element. The selected theme controls the overall appearance, including colors, fonts, and styles, ensuring visual consistency across the user interface. */ get theme() { return this.nativeElement ? this.nativeElement.theme : undefined; } set theme(value) { this.nativeElement ? this.nativeElement.theme = value : undefined; } /** @description Specifies the format and content used by the tooltip to display the value of the color when a user hovers over it. This setting controls how the color value is presented to the user, such as showing it as a HEX code, RGB value, or color name, within the tooltip interface. */ get tooltipDisplayMode() { return this.nativeElement ? this.nativeElement.tooltipDisplayMode : undefined; } set tooltipDisplayMode(value) { this.nativeElement ? this.nativeElement.tooltipDisplayMode = value : undefined; } /** @description When set to true, this property prevents the element from receiving keyboard focus, making it unreachable via tab navigation or programmatic focus methods (e.g., element.focus()). */ get unfocusable() { return this.nativeElement ? this.nativeElement.unfocusable : undefined; } set unfocusable(value) { this.nativeElement ? this.nativeElement.unfocusable = value : undefined; } /** @description Represents the currently selected color value assigned to the element. This value is typically formatted as a hexadecimal color code (e.g., "#FF5733"), reflecting the user's choice in a color picker input. */ get value() { return this.nativeElement ? this.nativeElement.value : undefined; } set value(value) { this.nativeElement ? this.nativeElement.value = value : undefined; } /** @description Specifies the color format to be used, allowing selection between HEX, RGB, or RGBA formats. By default, the color format is automatically determined based on the current displayMode setting. This property ensures that colors are displayed in the preferred or most appropriate format for the context. */ get valueFormat() { return this.nativeElement ? this.nativeElement.valueFormat : undefined; } set valueFormat(value) { this.nativeElement ? this.nativeElement.valueFormat = value : undefined; } /** @description Specifies which controls or buttons (such as ‘Apply’, ‘Cancel’, ‘Reset’, or custom actions) will appear in the action section of the color picker component. This determines the set of interactive elements available to users for confirming, cancelling, or modifying their color selection. */ get valueDisplayMode() { return this.nativeElement ? this.nativeElement.valueDisplayMode : undefined; } set valueDisplayMode(value) { this.nativeElement ? this.nativeElement.valueDisplayMode = value : undefined; } /** @description Displays the color picker’s drop-down panel, allowing users to select or customize a color. */ open() { if (this.nativeElement.isRendered) { this.nativeElement.open(); } else { this.nativeElement.whenRendered(() => { this.nativeElement.open(); }); } } /** @description Improved: "Closes the color picker dropdown menu, hiding the color selection options from view." */ close() { if (this.nativeElement.isRendered) { this.nativeElement.close(); } else { this.nativeElement.whenRendered(() => { this.nativeElement.close(); }); } } get isRendered() { return this.nativeElement ? this.nativeElement.isRendered : false; } ngOnInit() { } ngAfterViewInit() { const that = this; that.onCreate.emit(that.nativeElement); if (Smart) Smart.Render(); this.nativeElement.classList.add('smart-angular'); if (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); }); this.listen(); } ngOnDestroy() { this.unlisten(); } get ngValue() { if (!this.nativeElement) { return null; } const value = this.nativeElement.value; return value; } set ngValue(value) { if (this.nativeElement) { this.writeValue(value); } } writeValue(value) { const that = this; const normalizedValue = value == null ? '' : value; that.nativeElement.whenRendered(() => { that.value = normalizedValue; if (that._initialChange === false) { that._onChange(that.value); } }); } registerOnChange(fn) { this._onChange = fn; } registerOnTouched(fn) { this._onTouched = fn; } ngOnChanges(changes) { if (this.nativeElement && this.nativeElement.isRendered) { for (const propName in changes) { if (changes.hasOwnProperty(propName)) { this.nativeElement[propName] = changes[propName].currentValue; } } } } /** @description Add event listeners. */ listen() { const that = this; that.eventHandlers['actionButtonClickHandler'] = (event) => { that.onActionButtonClick.emit(event); }; that.nativeElement.addEventListener('actionButtonClick', that.eventHandlers['actionButtonClickHandler']); that.eventHandlers['cancelButtonClickHandler'] = (event) => { that.onCancelButtonClick.emit(event); }; that.nativeElement.addEventListener('cancelButtonClick', that.eventHandlers['cancelButtonClickHandler']); that.eventHandlers['changeHandler'] = (event) => { that.onChange.emit(event); }; that.nativeElement.addEventListener('change', that.eventHandlers['changeHandler']); that.eventHandlers['closeHandler'] = (event) => { that.onClose.emit(event); }; that.nativeElement.addEventListener('close', that.eventHandlers['closeHandler']); that.eventHandlers['closingHandler'] = (event) => { that.onClosing.emit(event); }; that.nativeElement.addEventListener('closing', that.eventHandlers['closingHandler']); that.eventHandlers['customColorSelectionHandler'] = (event) => { that.onCustomColorSelection.emit(event); }; that.nativeElement.addEventListener('customColorSelection', that.eventHandlers['customColorSelectionHandler']); that.eventHandlers['dropDownButtonClickHandler'] = (event) => { that.onDropDownButtonClick.emit(event); }; that.nativeElement.addEventListener('dropDownButtonClick', that.eventHandlers['dropDownButtonClickHandler']); that.eventHandlers['okButtonClickHandler'] = (event) => { that.onOkButtonClick.emit(event); }; that.nativeElement.addEventListener('okButtonClick', that.eventHandlers['okButtonClickHandler']); that.eventHandlers['openHandler'] = (event) => { that.onOpen.emit(event); }; that.nativeElement.addEventListener('open', that.eventHandlers['openHandler']); that.eventHandlers['openingHandler'] = (event) => { that.onOpening.emit(event); }; that.nativeElement.addEventListener('opening', that.eventHandlers['openingHandler']); that.eventHandlers['resizeStartHandler'] = (event) => { that.onResizeStart.emit(event); }; that.nativeElement.addEventListener('resizeStart', that.eventHandlers['resizeStartHandler']); that.eventHandlers['resizeEndHandler'] = (event) => { that.onResizeEnd.emit(event); }; that.nativeElement.addEventListener('resizeEnd', that.eventHandlers['resizeEndHandler']); that.eventHandlers['changeModelHandler'] = (event) => { that._initialChange = false; that._onChange(that.nativeElement.value); }; that.eventHandlers['blurModelHandler'] = (event) => { that._onTouched(); }; that.nativeElement.whenRendered(() => { if (that.nativeElement.querySelector('input')) { that.eventHandlers['keyupModelHandler'] = (event) => { setTimeout(() => { that.eventHandlers['changeModelHandler'](event); }, 50); }; that.nativeElement.querySelector('input').addEventListener('keyup', that.eventHandlers['keyupModelHandler']); } }); that.nativeElement.addEventListener('change', that.eventHandlers['changeModelHandler']); that.nativeElement.addEventListener('blur', that.eventHandlers['blurModelHandler']); } /** @description Remove event listeners. */ unlisten() { const that = this; if (that.eventHandlers['actionButtonClickHandler']) { that.nativeElement.removeEventListener('actionButtonClick', that.eventHandlers['actionButtonClickHandler']); } if (that.eventHandlers['cancelButtonClickHandler']) { that.nativeElement.removeEventListener('cancelButtonClick', that.eventHandlers['cancelButtonClickHandler']); } if (that.eventHandlers['changeHandler']) { that.nativeElement.removeEventListener('change', that.eventHandlers['changeHandler']); } if (that.eventHandlers['closeHandler']) { that.nativeElement.removeEventListener('close', that.eventHandlers['closeHandler']); } if (that.eventHandlers['closingHandler']) { that.nativeElement.removeEventListener('closing', that.eventHandlers['closingHandler']); } if (that.eventHandlers['customColorSelectionHandler']) { that.nativeElement.removeEventListener('customColorSelection', that.eventHandlers['customColorSelectionHandler']); } if (that.eventHandlers['dropDownButtonClickHandler']) { that.nativeElement.removeEventListener('dropDownButtonClick', that.eventHandlers['dropDownButtonClickHandler']); } if (that.eventHandlers['okButtonClickHandler']) { that.nativeElement.removeEventListener('okButtonClick', that.eventHandlers['okButtonClickHandler']); } if (that.eventHandlers['openHandler']) { that.nativeElement.removeEventListener('open', that.eventHandlers['openHandler']); } if (that.eventHandlers['openingHandler']) { that.nativeElement.removeEventListener('opening', that.eventHandlers['openingHandler']); } if (that.eventHandlers['resizeStartHandler']) { that.nativeElement.removeEventListener('resizeStart', that.eventHandlers['resizeStartHandler']); } if (that.eventHandlers['resizeEndHandler']) { that.nativeElement.removeEventListener('resizeEnd', that.eventHandlers['resizeEndHandler']); } if (that.eventHandlers['changeModelHandler']) { that.nativeElement.removeEventListener('change', that.eventHandlers['changeModelHandler']); if (that.nativeElement.querySelector('input')) { that.nativeElement.querySelector('input').removeEventListener('keyup', that.eventHandlers['keyupModelHandler']); } } if (that.eventHandlers['blurModelHandler']) { that.nativeElement.removeEventListener('blur', that.eventHandlers['blurModelHandler']); } } } ColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: ColorPickerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); ColorPickerComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.6", type: ColorPickerComponent, selector: "smart-color-picker, [smart-color-picker]", inputs: { animation: "animation", editable: "editable", autoCloseDelay: "autoCloseDelay", applyValueMode: "applyValueMode", columnCount: "columnCount", displayMode: "displayMode", disabled: "disabled", disableUndo: "disableUndo", dropDownAppendTo: "dropDownAppendTo", dropDownOpenMode: "dropDownOpenMode", dropDownButtonPosition: "dropDownButtonPosition", dropDownPosition: "dropDownPosition", dropDownHeight: "dropDownHeight", dropDownOverlay: "dropDownOverlay", dropDownWidth: "dropDownWidth", editAlphaChannel: "editAlphaChannel", enableCustomColors: "enableCustomColors", gridThemeColors: "gridThemeColors", gridShadeColors: "gridShadeColors", gridStandardColors: "gridStandardColors", hideAlphaEditor: "hideAlphaEditor", hideContentToFit: "hideContentToFit", hideHEXEditor: "hideHEXEditor", hidePreviewContainer: "hidePreviewContainer", hideRGBEditor: "hideRGBEditor", hint: "hint", inverted: "inverted", label: "label", unlockKey: "unlockKey", locale: "locale", localizeFormatFunction: "localizeFormatFunction", messages: "messages", name: "name", opened: "opened", palette: "palette", paletteColors: "paletteColors", paletteCustomColors: "paletteCustomColors", placeholder: "placeholder", readonly: "readonly", resizeIndicator: "resizeIndicator", resizeMode: "resizeMode", rightToLeft: "rightToLeft", theme: "theme", tooltipDisplayMode: "tooltipDisplayMode", unfocusable: "unfocusable", value: "value", valueFormat: "valueFormat", valueDisplayMode: "valueDisplayMode" }, outputs: { onActionButtonClick: "onActionButtonClick", onCancelButtonClick: "onCancelButtonClick", onChange: "onChange", onClose: "onClose", onClosing: "onClosing", onCustomColorSelection: "onCustomColorSelection", onDropDownButtonClick: "onDropDownButtonClick", onOkButtonClick: "onOkButtonClick", onOpen: "onOpen", onOpening: "onOpening", onResizeStart: "onResizeStart", onResizeEnd: "onResizeEnd" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], exportAs: ["smart-color-picker"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: ColorPickerComponent, decorators: [{ type: Directive, args: [{ exportAs: 'smart-color-picker', selector: 'smart-color-picker, [smart-color-picker]', providers: [CUSTO