@acorex/components 21.0.1-next.48 → 21.0.1-next.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-components-code-editor.mjs +2 -2
- package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-command.mjs +3 -3
- package/fesm2022/acorex-components-command.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +3 -15
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/package.json +3 -3
- package/types/acorex-components-command.d.ts +10 -4
|
@@ -875,7 +875,7 @@ class AXCodeEditorComponent extends MXValueComponent {
|
|
|
875
875
|
<ng-content select="ax-validation-rule"> </ng-content>
|
|
876
876
|
</div>
|
|
877
877
|
<div class="ax-error-container"></div>
|
|
878
|
-
`, isInline: true, styles: [":host{display:block;width:100%;height:
|
|
878
|
+
`, isInline: true, styles: [":host{display:block;width:100%;max-height:90vh}:host.ax-disable{opacity:.5;cursor:not-allowed}:host>.ax-editor-container{height:100%;width:100%;align-items:start;--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0;--ax-comp-editor-border-width: 1px}:host .ax-code-editor-container{display:flex;flex-direction:column;height:100%;width:100%}:host .cm-editor{width:100%;max-width:100%;overflow:auto}:host .cm-editor.cm-focused{outline:none}:host .ax-error-message{padding-inline:.5rem}\n"] }); }
|
|
879
879
|
}
|
|
880
880
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXCodeEditorComponent, decorators: [{
|
|
881
881
|
type: Component,
|
|
@@ -904,7 +904,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
904
904
|
<ng-content select="ax-validation-rule"> </ng-content>
|
|
905
905
|
</div>
|
|
906
906
|
<div class="ax-error-container"></div>
|
|
907
|
-
`, styles: [":host{display:block;width:100%;height:
|
|
907
|
+
`, styles: [":host{display:block;width:100%;max-height:90vh}:host.ax-disable{opacity:.5;cursor:not-allowed}:host>.ax-editor-container{height:100%;width:100%;align-items:start;--ax-comp-editor-space-start-size: 0;--ax-comp-editor-space-end-size: 0;--ax-comp-editor-border-width: 1px}:host .ax-code-editor-container{display:flex;flex-direction:column;height:100%;width:100%}:host .cm-editor{width:100%;max-width:100%;overflow:auto}:host .cm-editor.cm-focused{outline:none}:host .ax-error-message{padding-inline:.5rem}\n"] }]
|
|
908
908
|
}], ctorParameters: () => [], propDecorators: { language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], editorReadonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], lineNumbers: [{ type: i0.Input, args: [{ isSignal: true, alias: "lineNumbers", required: false }] }], lineWrapping: [{ type: i0.Input, args: [{ isSignal: true, alias: "lineWrapping", required: false }] }], tabSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabSize", required: false }] }], indentWithTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "indentWithTab", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], extensions: [{ type: i0.Input, args: [{ isSignal: true, alias: "extensions", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], focusOnReady: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusOnReady", required: false }] }], formatOnSave: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatOnSave", required: false }] }], minRow: [{ type: i0.Input, args: [{ isSignal: true, alias: "minRow", required: false }] }], customCompletions: [{ type: i0.Input, args: [{ isSignal: true, alias: "customCompletions", required: false }] }], ready: [{ type: i0.Output, args: ["ready"] }], save: [{ type: i0.Output, args: ["save"] }], host: [{ type: i0.ViewChild, args: ['host', { isSignal: true }] }] } });
|
|
909
909
|
|
|
910
910
|
class AXCodeEditorModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-code-editor.mjs","sources":["../../../../packages/components/code-editor/src/lib/plugins/default/formatters/prettier.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/css.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/html.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/javascript.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/json.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/markdown.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/sass.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/sql.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/typescript.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/xml.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/themes/github-dark.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/themes/github-light.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/themes/light.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/themes/one-dark.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/config.ts","../../../../packages/components/code-editor/src/lib/plugins/tokens.ts","../../../../packages/components/code-editor/src/lib/plugins/registry.service.ts","../../../../packages/components/code-editor/src/lib/code-editor.component.ts","../../../../packages/components/code-editor/src/lib/code-editor.module.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/index.ts","../../../../packages/components/code-editor/src/lib/plugins/default/index.ts","../../../../packages/components/code-editor/src/index.ts","../../../../packages/components/code-editor/src/acorex-components-code-editor.ts"],"sourcesContent":["import { AXCodeEditorFormatterPlugin } from '../../types';\n\nexport class PrettierFormatterPlugin implements AXCodeEditorFormatterPlugin {\n readonly id = 'prettier';\n readonly name = 'Prettier';\n readonly version = '1.0.0';\n readonly languages = ['javascript', 'js', 'typescript', 'ts', 'json', 'html', 'css', 'markdown'] as const;\n\n async format(text: string, language: string): Promise<string | null> {\n try {\n const prettier = await import('prettier/standalone');\n let parser: string | null = null;\n const plugins: any[] = [];\n\n switch (language) {\n case 'javascript':\n case 'js': {\n const [babel, estree] = await Promise.all([\n import('prettier/plugins/babel'),\n import('prettier/plugins/estree'),\n ]);\n plugins.push(babel, estree);\n parser = 'babel';\n break;\n }\n case 'typescript':\n case 'ts': {\n const [typescript, estree] = await Promise.all([\n import('prettier/plugins/typescript'),\n import('prettier/plugins/estree'),\n ]);\n plugins.push(typescript, estree);\n parser = 'typescript';\n break;\n }\n case 'json': {\n const [babel, estree] = await Promise.all([\n import('prettier/plugins/babel'),\n import('prettier/plugins/estree'),\n ]);\n plugins.push(babel, estree);\n parser = 'json';\n break;\n }\n case 'html': {\n const html = await import('prettier/plugins/html');\n plugins.push(html);\n parser = 'html';\n break;\n }\n case 'css': {\n const postcss = await import('prettier/plugins/postcss');\n plugins.push(postcss);\n parser = 'css';\n break;\n }\n case 'markdown': {\n const markdown = await import('prettier/plugins/markdown');\n plugins.push(markdown);\n parser = 'markdown';\n break;\n }\n default:\n return null;\n }\n\n if (!parser) return null;\n const formatted = await prettier.format(text, {\n parser,\n plugins,\n } as any);\n return formatted;\n } catch {\n return null;\n }\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class CSSLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'css';\n readonly name = 'CSS';\n readonly version = '1.0.0';\n readonly languages = ['css'] as const;\n\n async getExtension(): Promise<Extension> {\n const { css } = await import('@codemirror/lang-css');\n return css();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class HTMLLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'html';\n readonly name = 'HTML';\n readonly version = '1.0.0';\n readonly languages = ['html'] as const;\n\n async getExtension(): Promise<Extension> {\n const { html } = await import('@codemirror/lang-html');\n return html();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class JavaScriptLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'javascript';\n readonly name = 'JavaScript';\n readonly version = '1.0.0';\n readonly languages = ['javascript', 'js'] as const;\n\n async getExtension(): Promise<Extension> {\n const { javascript } = await import('@codemirror/lang-javascript');\n return javascript();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class JSONLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'json';\n readonly name = 'JSON';\n readonly version = '1.0.0';\n readonly languages = ['json'] as const;\n\n async getExtension(): Promise<Extension> {\n const { json } = await import('@codemirror/lang-json');\n return json();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class MarkdownLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'markdown';\n readonly name = 'Markdown';\n readonly version = '1.0.0';\n readonly languages = ['markdown'] as const;\n\n async getExtension(): Promise<Extension> {\n const { markdown } = await import('@codemirror/lang-markdown');\n return markdown();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class SassLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'sass';\n readonly name = 'Sass/SCSS';\n readonly version = '1.0.0';\n readonly languages = ['sass', 'scss'] as const;\n\n async getExtension(): Promise<Extension> {\n const { sass } = await import('@codemirror/lang-sass');\n return sass();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class SQLLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'sql';\n readonly name = 'SQL';\n readonly version = '1.0.0';\n readonly languages = ['sql'] as const;\n\n async getExtension(): Promise<Extension> {\n const { sql } = await import('@codemirror/lang-sql');\n return sql();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class TypeScriptLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'typescript';\n readonly name = 'TypeScript';\n readonly version = '1.0.0';\n readonly languages = ['typescript', 'ts'] as const;\n\n async getExtension(): Promise<Extension> {\n const { javascript } = await import('@codemirror/lang-javascript');\n return javascript({ typescript: true });\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class XMLLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'xml';\n readonly name = 'XML';\n readonly version = '1.0.0';\n readonly languages = ['xml'] as const;\n\n async getExtension(): Promise<Extension> {\n const { xml } = await import('@codemirror/lang-xml');\n return xml();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorThemePlugin } from '../../types';\n\nexport class GitHubDarkThemePlugin implements AXCodeEditorThemePlugin {\n readonly id = 'github-dark';\n readonly name = 'GitHub Dark';\n readonly version = '1.0.0';\n readonly dark = true;\n\n async getExtension(): Promise<Extension> {\n const [{ githubDark }, { EditorView }] = await Promise.all([\n import('@uiw/codemirror-theme-github'),\n import('@codemirror/view'),\n ]);\n return [\n githubDark,\n EditorView.theme(\n {\n // '&': { backgroundColor: 'transparent !important' },\n // '.cm-gutters': { backgroundColor: 'transparent !important' },\n },\n { dark: true },\n ),\n ];\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorThemePlugin } from '../../types';\n\nexport class GitHubLightThemePlugin implements AXCodeEditorThemePlugin {\n readonly id = 'github-light';\n readonly name = 'GitHub Light';\n readonly version = '1.0.0';\n readonly dark = false;\n\n async getExtension(): Promise<Extension> {\n const [{ githubLight }, { EditorView }] = await Promise.all([\n import('@uiw/codemirror-theme-github'),\n import('@codemirror/view'),\n ]);\n return [\n githubLight,\n EditorView.theme(\n {\n // '&': { backgroundColor: 'transparent !important' },\n // '.cm-gutters': { backgroundColor: 'transparent !important' },\n },\n { dark: false },\n ),\n ];\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorThemePlugin } from '../../types';\n\nexport class LightThemePlugin implements AXCodeEditorThemePlugin {\n readonly id = 'light';\n readonly name = 'Light';\n readonly version = '1.0.0';\n readonly dark = false;\n\n async getExtension(): Promise<Extension> {\n const { EditorView } = await import('@codemirror/view');\n return EditorView.theme(\n {\n // '&': { backgroundColor: 'transparent !important' },\n '.cm-gutters': {},\n },\n { dark: false },\n );\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorThemePlugin } from '../../types';\n\nexport class OneDarkThemePlugin implements AXCodeEditorThemePlugin {\n readonly id = 'one-dark';\n readonly name = 'One Dark';\n readonly version = '1.0.0';\n readonly dark = true;\n\n async getExtension(): Promise<Extension> {\n const { EditorView } = await import('@codemirror/view');\n try {\n const { oneDark } = await import('@codemirror/theme-one-dark');\n return [\n oneDark,\n EditorView.theme(\n {\n // '&': { backgroundColor: 'transparent !important' },\n '.cm-gutters': {},\n },\n { dark: true },\n ),\n ];\n } catch {\n return EditorView.theme(\n {\n // '&': { backgroundColor: 'transparent !important' },\n '.cm-gutters': {},\n },\n { dark: true },\n );\n }\n }\n}\n","import { AXCodeEditorPluginConfig } from '../types';\nimport { PrettierFormatterPlugin } from './formatters/prettier.plugin';\nimport { CSSLanguagePlugin } from './languages/css.plugin';\nimport { HTMLLanguagePlugin } from './languages/html.plugin';\nimport { JavaScriptLanguagePlugin } from './languages/javascript.plugin';\nimport { JSONLanguagePlugin } from './languages/json.plugin';\nimport { MarkdownLanguagePlugin } from './languages/markdown.plugin';\nimport { SassLanguagePlugin } from './languages/sass.plugin';\nimport { SQLLanguagePlugin } from './languages/sql.plugin';\nimport { TypeScriptLanguagePlugin } from './languages/typescript.plugin';\nimport { XMLLanguagePlugin } from './languages/xml.plugin';\nimport { GitHubDarkThemePlugin } from './themes/github-dark.plugin';\nimport { GitHubLightThemePlugin } from './themes/github-light.plugin';\nimport { LightThemePlugin } from './themes/light.plugin';\nimport { OneDarkThemePlugin } from './themes/one-dark.plugin';\n\n/**\n * Default plugin configuration with all built-in plugins\n */\nexport function provideDefaultCodeEditorPlugins(): AXCodeEditorPluginConfig {\n return {\n languages: [\n new JavaScriptLanguagePlugin(),\n new TypeScriptLanguagePlugin(),\n new JSONLanguagePlugin(),\n new HTMLLanguagePlugin(),\n new CSSLanguagePlugin(),\n new SassLanguagePlugin(),\n new SQLLanguagePlugin(),\n new XMLLanguagePlugin(),\n new MarkdownLanguagePlugin(),\n ],\n themes: [\n new OneDarkThemePlugin(),\n new LightThemePlugin(),\n new GitHubLightThemePlugin(),\n new GitHubDarkThemePlugin(),\n ],\n formatters: [new PrettierFormatterPlugin()],\n extensions: [],\n };\n}\n","import { InjectionToken } from '@angular/core';\nimport { provideDefaultCodeEditorPlugins } from './default/config';\nimport { AXCodeEditorPluginConfig } from './types';\n\n/**\n * Injection token for providing code editor plugin configuration\n */\nexport const AX_CODE_EDITOR_PLUGIN_CONFIG = new InjectionToken<AXCodeEditorPluginConfig>(\n 'AX_CODE_EDITOR_PLUGIN_CONFIG',\n {\n providedIn: 'root',\n factory: () => provideDefaultCodeEditorPlugins(),\n },\n);\n","import { Injectable, inject } from '@angular/core';\nimport type { Extension } from '@codemirror/state';\nimport {\n AXCodeEditorExtensionPlugin,\n AXCodeEditorFormatterPlugin,\n AXCodeEditorLanguagePlugin,\n AXCodeEditorPluginConfig,\n AXCodeEditorThemePlugin,\n} from './types';\nimport { AX_CODE_EDITOR_PLUGIN_CONFIG } from './tokens';\n\n/**\n * Registry service for managing code editor plugins\n */\n@Injectable({ providedIn: 'root' })\nexport class AXCodeEditorPluginRegistry {\n private config: AXCodeEditorPluginConfig | null = inject(AX_CODE_EDITOR_PLUGIN_CONFIG, { optional: true });\n\n private languagePlugins = new Map<string, AXCodeEditorLanguagePlugin>();\n private themePlugins = new Map<string, AXCodeEditorThemePlugin>();\n private formatterPlugins = new Map<string, AXCodeEditorFormatterPlugin>();\n private extensionPlugins = new Map<string, AXCodeEditorExtensionPlugin>();\n\n constructor() {\n this.initializePlugins();\n }\n\n private initializePlugins(): void {\n if (!this.config) return;\n\n // Register language plugins\n this.config.languages?.forEach((plugin) => {\n plugin.languages.forEach((lang) => {\n this.languagePlugins.set(lang, plugin);\n });\n });\n\n // Register theme plugins\n this.config.themes?.forEach((plugin) => {\n this.themePlugins.set(plugin.id, plugin);\n });\n\n // Register formatter plugins\n this.config.formatters?.forEach((plugin) => {\n plugin.languages.forEach((lang) => {\n this.formatterPlugins.set(lang, plugin);\n });\n });\n\n // Register extension plugins\n this.config.extensions?.forEach((plugin) => {\n this.extensionPlugins.set(plugin.id, plugin);\n });\n }\n\n /**\n * Get language extension for the specified language\n */\n async getLanguageExtension(language: string): Promise<Extension> {\n const plugin = this.languagePlugins.get(language);\n if (!plugin) {\n console.warn(`No language plugin found for: ${language}`);\n return [];\n }\n return plugin.getExtension();\n }\n\n /**\n * Get theme extension by theme ID\n */\n async getThemeExtension(themeId: string): Promise<Extension> {\n const plugin = this.themePlugins.get(themeId);\n if (!plugin) {\n console.warn(`No theme plugin found for: ${themeId}`);\n return [];\n }\n return plugin.getExtension();\n }\n\n /**\n * Format text using the appropriate formatter for the language\n */\n async format(text: string, language: string): Promise<string | null> {\n const plugin = this.formatterPlugins.get(language);\n if (!plugin) {\n return null;\n }\n return plugin.format(text, language);\n }\n\n /**\n * Get all registered extension plugins\n */\n async getExtensionPlugins(): Promise<Extension[]> {\n const extensions = await Promise.all(\n Array.from(this.extensionPlugins.values()).map((plugin) => plugin.getExtension()),\n );\n return extensions;\n }\n\n /**\n * Check if a language is supported\n */\n hasLanguage(language: string): boolean {\n return this.languagePlugins.has(language);\n }\n\n /**\n * Check if a theme is available\n */\n hasTheme(themeId: string): boolean {\n return this.themePlugins.has(themeId);\n }\n\n /**\n * Check if a formatter is available for a language\n */\n hasFormatter(language: string): boolean {\n return this.formatterPlugins.has(language);\n }\n\n /**\n * Get all available language identifiers\n */\n getAvailableLanguages(): string[] {\n return Array.from(this.languagePlugins.keys());\n }\n\n /**\n * Get all available theme identifiers\n */\n getAvailableThemes(): string[] {\n return Array.from(this.themePlugins.keys());\n }\n\n /**\n * Register a language plugin at runtime\n */\n registerLanguagePlugin(plugin: AXCodeEditorLanguagePlugin): void {\n plugin.languages.forEach((lang) => {\n this.languagePlugins.set(lang, plugin);\n });\n }\n\n /**\n * Register a theme plugin at runtime\n */\n registerThemePlugin(plugin: AXCodeEditorThemePlugin): void {\n this.themePlugins.set(plugin.id, plugin);\n }\n\n /**\n * Register a formatter plugin at runtime\n */\n registerFormatterPlugin(plugin: AXCodeEditorFormatterPlugin): void {\n plugin.languages.forEach((lang) => {\n this.formatterPlugins.set(lang, plugin);\n });\n }\n\n /**\n * Register an extension plugin at runtime\n */\n registerExtensionPlugin(plugin: AXCodeEditorExtensionPlugin): void {\n this.extensionPlugins.set(plugin.id, plugin);\n }\n}\n","import { AXComponent, AXValuableComponent, MXValueComponent } from '@acorex/cdk/common';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n ElementRef,\n PLATFORM_ID,\n afterNextRender,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { AXCodeEditorDefaultLanguage } from './plugins';\nimport { AXCodeEditorPluginRegistry } from './plugins/registry.service';\n\n// Re-export language type for external use\nexport type { AXCodeEditorDefaultLanguage } from './plugins/default/languages';\n\n// Type-only aliases for CodeMirror types (tree-shake friendly)\ntype AXCodeEditorEditorViewLike = import('@codemirror/view').EditorView;\ntype AXCodeEditorKeyBindingLike = import('@codemirror/view').KeyBinding;\nexport type AXCodeEditorExtensionLike = import('@codemirror/state').Extension;\ntype AXCodeEditorCompartmentLike = import('@codemirror/state').Compartment;\nexport type AXCodeEditorCompletionLike = import('@codemirror/autocomplete').Completion;\nexport type AXCodeEditorCompletionSourceLike = import('@codemirror/autocomplete').CompletionSource;\ntype AXCodeEditorCompletionContextLike = import('@codemirror/autocomplete').CompletionContext;\n\ntype AXCodeEditorViewModule = typeof import('@codemirror/view');\ntype AXCodeEditorStateModule = typeof import('@codemirror/state');\ntype AXCodeEditorLanguageModule = typeof import('@codemirror/language');\ntype AXCodeEditorAutocompleteModule = typeof import('@codemirror/autocomplete');\ntype AXCodeEditorCommandsModule = typeof import('@codemirror/commands');\ntype AXCodeEditorSearchModule = typeof import('@codemirror/search');\ntype AXCodeEditorLintModule = typeof import('@codemirror/lint');\n\n@Component({\n selector: 'ax-code-editor',\n host: {\n '(keydown.control.s)': 'onSaveShortcut($event)',\n class: 'ax-code-editor block',\n },\n inputs: ['disabled', 'value', 'state', 'name', 'id'],\n outputs: ['onValueChanged', 'valueChange', 'stateChange', 'readonlyChange', 'disabledChange'],\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n\n &.ax-disable {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n > .ax-editor-container {\n height: 100%;\n width: 100%;\n align-items: start;\n --ax-comp-editor-space-start-size: 0;\n --ax-comp-editor-space-end-size: 0;\n --ax-comp-editor-border-width: 1px;\n }\n\n .ax-code-editor-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n }\n\n .cm-editor {\n width: 100%;\n max-width: 100%;\n overflow: auto;\n }\n\n .cm-editor.cm-focused {\n outline: none;\n }\n\n .ax-error-message {\n padding-inline: 0.5rem;\n }\n }\n `,\n ],\n providers: [\n { provide: AXValuableComponent, useExisting: AXCodeEditorComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCodeEditorComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXCodeEditorComponent },\n ],\n template: `\n <div class=\"ax-editor-container\" [style.min-height]=\"getMinHeight()\">\n <div class=\"ax-code-editor-container\">\n <div\n #host\n class=\"cm-editor\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-readonly]=\"editorReadonly() ? 'true' : 'false'\"\n [attr.data-placeholder]=\"placeholder() ?? null\"\n ></div>\n </div>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n </div>\n <div class=\"ax-error-container\"></div>\n `,\n})\nexport class AXCodeEditorComponent extends MXValueComponent<string> {\n // Inputs (signals)\n // value = input<string>('');\n /** Active language identifier from default plugins. Default: 'javascript'. */\n language = input<AXCodeEditorDefaultLanguage>('javascript');\n /** When true, the editor becomes readonly (non-editable). */\n editorReadonly = input(false, { alias: 'readonly' });\n /** Placeholder text shown when the document is empty. */\n placeholder = input<string>('');\n /** Toggle rendering of line numbers in the gutter. */\n lineNumbers = input<boolean>(true);\n /** Soft-wrap long lines when true. */\n lineWrapping = input<boolean>(false);\n /** Tab size (spaces per indent level). */\n tabSize = input<number>(2);\n /** When true, the Tab key indents instead of moving focus. */\n indentWithTab = input<boolean>(true);\n /** Theme identifier. If null, uses platform theme mode (dark/light). */\n theme = input<string | null>(null);\n /** Additional CodeMirror extensions to apply. Reconfigures at runtime. */\n extensions = input<ReadonlyArray<AXCodeEditorExtensionLike>>([]);\n /** ARIA label for accessibility. */\n ariaLabel = input<string | null>(null);\n /** Focus the editor after first render. */\n focusOnReady = input<boolean>(false);\n /** If true, format the document via Prettier before emitting save. */\n formatOnSave = input<boolean>(false);\n /** Minimum number of rows (lines) to display. Controls the minimum height of the editor. */\n minRow = input<number | null>(null);\n\n /**\n * Custom autocompletion options: either a static array of Completion items\n * or a CodeMirror CompletionSource function.\n */\n customCompletions = input<ReadonlyArray<AXCodeEditorCompletionLike> | AXCodeEditorCompletionSourceLike | null>(null);\n\n // Outputs (signals)\n // valueChange = output<string>();\n /** Emits when the editor is fully initialized and ready. */\n ready = output<void>();\n /** Emits when the user triggers save (Ctrl/Cmd+S). Payload is the current text. */\n save = output<string>();\n\n // View container\n host = viewChild<ElementRef<HTMLDivElement>>('host');\n\n // Runtime state\n private platformId = inject(PLATFORM_ID);\n private destroyRef = inject(DestroyRef);\n private platformService = inject(AXPlatform);\n private pluginRegistry = inject(AXCodeEditorPluginRegistry);\n\n private editorViewSig = signal<AXCodeEditorEditorViewLike | null>(null);\n\n // Compartments to reconfigure editor without recreating it\n private languageCompartment: AXCodeEditorCompartmentLike | null = null;\n private readonlyCompartment: AXCodeEditorCompartmentLike | null = null;\n private themeCompartment: AXCodeEditorCompartmentLike | null = null;\n private placeholderCompartment: AXCodeEditorCompartmentLike | null = null;\n private wrappingCompartment: AXCodeEditorCompartmentLike | null = null;\n private keymapExtrasCompartment: AXCodeEditorCompartmentLike | null = null;\n private tabSizeCompartment: AXCodeEditorCompartmentLike | null = null;\n private lineNumbersCompartment: AXCodeEditorCompartmentLike | null = null;\n\n // Cached CodeMirror modules after initialization\n private cm: {\n view: AXCodeEditorViewModule | null;\n state: AXCodeEditorStateModule | null;\n language: AXCodeEditorLanguageModule | null;\n autocomplete: AXCodeEditorAutocompleteModule | null;\n commands: AXCodeEditorCommandsModule | null;\n search: AXCodeEditorSearchModule | null;\n lint: AXCodeEditorLintModule | null;\n } = { view: null, state: null, language: null, autocomplete: null, commands: null, search: null, lint: null };\n\n private isBrowser = computed(() => isPlatformBrowser(this.platformId));\n\n /** Computed minimum height based on minRow (excluding gutter/line numbers). */\n getMinHeight(): string | null {\n const rows = this.minRow();\n if (!rows || rows <= 0) return null;\n // CodeMirror default line height is typically 1.5em, but we use rem for consistency\n // This calculates height without accounting for gutter since gutter is separate\n return `calc(${rows} * 1.5rem)`;\n }\n\n constructor() {\n super();\n afterNextRender(() => {\n if (!this.isBrowser()) return;\n this.initializeEditor();\n });\n\n // Keep model in sync when external value changes\n effect(() => {\n const view = this.editorViewSig();\n if (!view) return;\n const newDoc = this.value ?? '';\n const current = view.state.doc.toString();\n if (newDoc !== current) {\n view.dispatch({\n changes: { from: 0, to: view.state.doc.length, insert: newDoc },\n });\n }\n });\n\n // React to dynamic configuration changes\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.languageCompartment) return;\n const lang = this.language();\n this.pluginRegistry.getLanguageExtension(lang).then((ext) => {\n if (!view || !this.languageCompartment) return;\n view.dispatch({ effects: this.languageCompartment.reconfigure(ext) });\n });\n });\n\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.readonlyCompartment) return;\n const editable = !this.editorReadonly();\n import('@codemirror/view').then(({ EditorView }) => {\n if (!view || !this.readonlyCompartment) return;\n view.dispatch({ effects: this.readonlyCompartment.reconfigure(EditorView.editable.of(editable)) });\n });\n });\n\n effect(() => {\n const view = this.editorViewSig();\n // Establish reactive dependency on theme and platform theme\n const customTheme = this.theme();\n const platformTheme = this.platformService.themeMode();\n if (!view || !this.themeCompartment) return;\n this.resolveThemeExtension(customTheme, platformTheme).then((themeExt) => {\n if (!view || !this.themeCompartment) return;\n view.dispatch({ effects: this.themeCompartment.reconfigure(themeExt) });\n });\n });\n\n effect(() => {\n this.placeholder();\n const view = this.editorViewSig();\n if (!view || !this.placeholderCompartment) return;\n import('@codemirror/view').then(({ placeholder }) => {\n if (!view || !this.placeholderCompartment) return;\n view.dispatch({ effects: this.placeholderCompartment.reconfigure(placeholder(this.placeholder() ?? '')) });\n });\n });\n\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.wrappingCompartment) return;\n const EditorView = this.cm.view?.EditorView;\n if (!EditorView) return;\n const nextExt = this.lineWrapping() ? EditorView.lineWrapping : [];\n this.reconfigure(this.wrappingCompartment, nextExt);\n });\n\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.tabSizeCompartment) return;\n const EditorState = this.cm.state?.EditorState;\n if (!EditorState) return;\n this.reconfigure(this.tabSizeCompartment, EditorState.tabSize.of(this.tabSize() ?? 2));\n });\n\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.keymapExtrasCompartment) return;\n const keymap = this.cm.view?.keymap;\n const commands = this.cm.commands;\n if (!keymap || !commands) return;\n this.reconfigure(this.keymapExtrasCompartment, keymap.of(this.indentWithTab() ? [commands.indentWithTab] : []));\n });\n\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.lineNumbersCompartment) return;\n const lineNumbers = this.cm.view?.lineNumbers;\n if (!lineNumbers) return;\n this.reconfigure(this.lineNumbersCompartment, this.lineNumbers() ? lineNumbers() : []);\n });\n }\n\n private async initializeEditor(): Promise<void> {\n const hostEl = this.host()?.nativeElement;\n if (!hostEl) return;\n\n await this.loadCodeMirrorModules();\n\n this.createCompartments();\n\n const keymaps = this.buildKeymaps();\n\n const viewMod = this.cm.view;\n const stateMod = this.cm.state;\n const languageMod = this.cm.language;\n const autoMod = this.cm.autocomplete;\n const commandsMod = this.cm.commands;\n const searchMod = this.cm.search;\n const lintMod = this.cm.lint;\n if (!viewMod || !stateMod || !languageMod || !autoMod || !commandsMod || !searchMod || !lintMod) return;\n const languageExt = await this.pluginRegistry.getLanguageExtension(this.language());\n const themeExt = await this.resolveThemeExtension(this.theme(), this.platformService.themeMode());\n const placeholderExt = viewMod.placeholder(this.placeholder() ?? '');\n const editableExt = viewMod.EditorView.editable.of(!this.editorReadonly());\n const wrappingExt = this.lineWrapping() ? viewMod.EditorView.lineWrapping : [];\n const tabSizeExt = stateMod.EditorState.tabSize.of(this.tabSize() ?? 2);\n const lineNumbersExt = this.lineNumbers() ? viewMod.lineNumbers() : [];\n\n const autoCompleteExt = autoMod.autocompletion({\n override: this.buildCustomCompletionSources(),\n });\n\n const baseExtensions: ReadonlyArray<AXCodeEditorExtensionLike> = [\n this.lineNumbersCompartment.of(lineNumbersExt),\n viewMod.highlightActiveLine(),\n viewMod.highlightActiveLineGutter(),\n viewMod.drawSelection(),\n viewMod.dropCursor(),\n viewMod.rectangularSelection(),\n viewMod.crosshairCursor(),\n viewMod.highlightSpecialChars(),\n languageMod.syntaxHighlighting(languageMod.defaultHighlightStyle, { fallback: true }),\n languageMod.bracketMatching(),\n languageMod.foldGutter(),\n commandsMod.history(),\n searchMod.highlightSelectionMatches(),\n viewMod.keymap.of(keymaps),\n autoCompleteExt,\n this.languageCompartment.of(languageExt),\n this.readonlyCompartment.of(editableExt),\n this.themeCompartment.of(themeExt),\n this.placeholderCompartment.of(placeholderExt),\n this.wrappingCompartment.of(wrappingExt),\n this.tabSizeCompartment.of(tabSizeExt),\n this.keymapExtrasCompartment.of(viewMod.keymap.of(this.indentWithTab() ? [commandsMod.indentWithTab] : [])),\n ...this.extensions(),\n ];\n\n const updateListener = viewMod.EditorView.updateListener.of((vu) => {\n if (vu.docChanged) {\n const text = vu.state.doc.toString();\n // this.writeValue(text);\n this.value = text;\n }\n });\n\n const state = stateMod.EditorState.create({\n doc: this.value ?? '',\n extensions: [...baseExtensions, updateListener],\n });\n\n const view = new viewMod.EditorView({ state, parent: hostEl });\n\n // Update listener for external changes (selection, viewport, etc.) if needed later\n view.dispatch({ effects: [] });\n\n this.editorViewSig.set(view);\n\n this.destroyRef.onDestroy(() => {\n view.destroy();\n this.editorViewSig.set(null);\n });\n\n if (this.focusOnReady()) {\n view.focus();\n }\n\n this.ready.emit();\n }\n\n private reconfigure(comp: AXCodeEditorCompartmentLike | null, ext: AXCodeEditorExtensionLike): void {\n const view = this.editorViewSig();\n if (!view || !comp) return;\n view.dispatch({ effects: comp.reconfigure(ext) });\n }\n\n /**\n * Handles Ctrl/Cmd+S on the host. If formatOnSave is enabled, attempts\n * to format the document first, then emits the saved text.\n */\n async onSaveShortcut(event: Event): Promise<void> {\n event.preventDefault();\n const view = this.editorViewSig();\n const current = view?.state.doc.toString() ?? this.value ?? '';\n const payload = current;\n if (this.formatOnSave()) {\n await this.format(true);\n }\n this.save.emit(payload);\n }\n\n private async loadCodeMirrorModules(): Promise<void> {\n const [viewMod, stateMod, langMod, autoMod, cmdMod, searchMod, lintMod] = await Promise.all([\n import('@codemirror/view'),\n import('@codemirror/state'),\n import('@codemirror/language'),\n import('@codemirror/autocomplete'),\n import('@codemirror/commands'),\n import('@codemirror/search'),\n import('@codemirror/lint'),\n ]);\n this.cm.view = viewMod;\n this.cm.state = stateMod;\n this.cm.language = langMod;\n this.cm.autocomplete = autoMod;\n this.cm.commands = cmdMod;\n this.cm.search = searchMod;\n this.cm.lint = lintMod;\n }\n\n private createCompartments(): void {\n const stateMod = this.cm.state;\n if (!stateMod) return;\n this.languageCompartment = new stateMod.Compartment();\n this.readonlyCompartment = new stateMod.Compartment();\n this.themeCompartment = new stateMod.Compartment();\n this.placeholderCompartment = new stateMod.Compartment();\n this.wrappingCompartment = new stateMod.Compartment();\n this.tabSizeCompartment = new stateMod.Compartment();\n this.keymapExtrasCompartment = new stateMod.Compartment();\n this.lineNumbersCompartment = new stateMod.Compartment();\n }\n\n private buildKeymaps(): ReadonlyArray<AXCodeEditorKeyBindingLike> {\n const cmdMod = this.cm.commands;\n const searchMod = this.cm.search;\n const autoMod = this.cm.autocomplete;\n const lintMod = this.cm.lint;\n if (!cmdMod || !searchMod || !autoMod || !lintMod) return [];\n return [\n ...cmdMod.defaultKeymap,\n ...cmdMod.historyKeymap,\n ...searchMod.searchKeymap,\n ...autoMod.completionKeymap,\n ...(lintMod.lintKeymap as unknown as readonly AXCodeEditorKeyBindingLike[]),\n ];\n }\n\n private async resolveThemeExtension(\n customTheme: string | null,\n platformTheme: string,\n ): Promise<AXCodeEditorExtensionLike> {\n // If custom theme is specified, use it\n if (customTheme) {\n return this.pluginRegistry.getThemeExtension(customTheme);\n }\n\n // Otherwise, use platform theme (handle 'system' by defaulting to 'github-light')\n const themeId = platformTheme === 'dark' ? 'github-dark' : 'github-light';\n return this.pluginRegistry.getThemeExtension(themeId);\n }\n\n private buildCustomCompletionSources(): ReadonlyArray<AXCodeEditorCompletionSourceLike> | undefined {\n const provided = this.customCompletions();\n if (!provided) return undefined;\n if (typeof provided === 'function') {\n return [provided as AXCodeEditorCompletionSourceLike];\n }\n // Treat array as a static completion list\n const staticSource: AXCodeEditorCompletionSourceLike = (context: AXCodeEditorCompletionContextLike) => {\n const from = context.pos;\n return { from, options: provided as ReadonlyArray<AXCodeEditorCompletionLike> };\n };\n return [staticSource];\n }\n\n // Public API\n /** Programmatically focus the editor. */\n public override focus(): void {\n const view = this.editorViewSig();\n if (view) view.focus();\n }\n\n /** Select all text in the current document. */\n public selectAll(): void {\n const view = this.editorViewSig();\n if (!view) return;\n const length = view.state.doc.length;\n view.dispatch({ selection: { anchor: 0, head: length } });\n }\n\n // Formats the current document using the registered formatter plugin (if available for the active language).\n // Returns the formatted text or null if unchanged/unsupported.\n public async format(affect = true): Promise<string | null> {\n const view = this.editorViewSig();\n if (!view) return null;\n const source = view.state.doc.toString();\n if (!source) return null;\n const formatted = await this.pluginRegistry.format(source, this.language());\n if (!formatted || formatted === source) return null;\n if (affect) {\n view.dispatch({ changes: { from: 0, to: view.state.doc.length, insert: formatted } });\n }\n return formatted;\n }\n\n /** Returns the total number of characters in the current document. */\n public getTotalCharacters(): number {\n const view = this.editorViewSig();\n if (view) return view.state.doc.length ?? 0;\n const text = this.value ?? '';\n return text.length;\n }\n\n /** Returns the total number of lines in the current document. */\n public getTotalLines(): number {\n const view = this.editorViewSig();\n if (view) {\n const doc: any = view.state.doc;\n return typeof doc?.lines === 'number' ? doc.lines : doc.toString().split(/\\r?\\n/).length;\n }\n const text = this.value ?? '';\n return text ? text.split(/\\r?\\n/).length : 1;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXCodeEditorComponent } from './code-editor.component';\n\n@NgModule({\n imports: [CommonModule, AXCodeEditorComponent],\n exports: [AXCodeEditorComponent],\n})\nexport class AXCodeEditorModule {}\n","// Language plugins\nexport * from './javascript.plugin';\nexport * from './typescript.plugin';\nexport * from './json.plugin';\nexport * from './html.plugin';\nexport * from './css.plugin';\nexport * from './sass.plugin';\nexport * from './sql.plugin';\nexport * from './xml.plugin';\nexport * from './markdown.plugin';\n\n// Type union of all supported languages from default plugins\nexport type AXCodeEditorDefaultLanguage =\n | 'javascript'\n | 'js'\n | 'typescript'\n | 'ts'\n | 'json'\n | 'html'\n | 'css'\n | 'scss'\n | 'sass'\n | 'sql'\n | 'xml'\n | 'markdown';\n","// Language plugins\nexport * from './languages';\n\n// Theme plugins\nexport * from './themes/one-dark.plugin';\nexport * from './themes/light.plugin';\nexport * from './themes/github-light.plugin';\nexport * from './themes/github-dark.plugin';\n\n// Formatter plugins\nexport * from './formatters/prettier.plugin';\n","// Component & Module\nexport * from './lib/code-editor.component';\nexport * from './lib/code-editor.module';\n\n// Plugins\nexport * from './lib/plugins';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-code-editor.mjs","sources":["../../../../packages/components/code-editor/src/lib/plugins/default/formatters/prettier.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/css.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/html.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/javascript.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/json.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/markdown.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/sass.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/sql.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/typescript.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/xml.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/themes/github-dark.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/themes/github-light.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/themes/light.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/themes/one-dark.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/config.ts","../../../../packages/components/code-editor/src/lib/plugins/tokens.ts","../../../../packages/components/code-editor/src/lib/plugins/registry.service.ts","../../../../packages/components/code-editor/src/lib/code-editor.component.ts","../../../../packages/components/code-editor/src/lib/code-editor.module.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/index.ts","../../../../packages/components/code-editor/src/lib/plugins/default/index.ts","../../../../packages/components/code-editor/src/index.ts","../../../../packages/components/code-editor/src/acorex-components-code-editor.ts"],"sourcesContent":["import { AXCodeEditorFormatterPlugin } from '../../types';\n\nexport class PrettierFormatterPlugin implements AXCodeEditorFormatterPlugin {\n readonly id = 'prettier';\n readonly name = 'Prettier';\n readonly version = '1.0.0';\n readonly languages = ['javascript', 'js', 'typescript', 'ts', 'json', 'html', 'css', 'markdown'] as const;\n\n async format(text: string, language: string): Promise<string | null> {\n try {\n const prettier = await import('prettier/standalone');\n let parser: string | null = null;\n const plugins: any[] = [];\n\n switch (language) {\n case 'javascript':\n case 'js': {\n const [babel, estree] = await Promise.all([\n import('prettier/plugins/babel'),\n import('prettier/plugins/estree'),\n ]);\n plugins.push(babel, estree);\n parser = 'babel';\n break;\n }\n case 'typescript':\n case 'ts': {\n const [typescript, estree] = await Promise.all([\n import('prettier/plugins/typescript'),\n import('prettier/plugins/estree'),\n ]);\n plugins.push(typescript, estree);\n parser = 'typescript';\n break;\n }\n case 'json': {\n const [babel, estree] = await Promise.all([\n import('prettier/plugins/babel'),\n import('prettier/plugins/estree'),\n ]);\n plugins.push(babel, estree);\n parser = 'json';\n break;\n }\n case 'html': {\n const html = await import('prettier/plugins/html');\n plugins.push(html);\n parser = 'html';\n break;\n }\n case 'css': {\n const postcss = await import('prettier/plugins/postcss');\n plugins.push(postcss);\n parser = 'css';\n break;\n }\n case 'markdown': {\n const markdown = await import('prettier/plugins/markdown');\n plugins.push(markdown);\n parser = 'markdown';\n break;\n }\n default:\n return null;\n }\n\n if (!parser) return null;\n const formatted = await prettier.format(text, {\n parser,\n plugins,\n } as any);\n return formatted;\n } catch {\n return null;\n }\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class CSSLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'css';\n readonly name = 'CSS';\n readonly version = '1.0.0';\n readonly languages = ['css'] as const;\n\n async getExtension(): Promise<Extension> {\n const { css } = await import('@codemirror/lang-css');\n return css();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class HTMLLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'html';\n readonly name = 'HTML';\n readonly version = '1.0.0';\n readonly languages = ['html'] as const;\n\n async getExtension(): Promise<Extension> {\n const { html } = await import('@codemirror/lang-html');\n return html();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class JavaScriptLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'javascript';\n readonly name = 'JavaScript';\n readonly version = '1.0.0';\n readonly languages = ['javascript', 'js'] as const;\n\n async getExtension(): Promise<Extension> {\n const { javascript } = await import('@codemirror/lang-javascript');\n return javascript();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class JSONLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'json';\n readonly name = 'JSON';\n readonly version = '1.0.0';\n readonly languages = ['json'] as const;\n\n async getExtension(): Promise<Extension> {\n const { json } = await import('@codemirror/lang-json');\n return json();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class MarkdownLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'markdown';\n readonly name = 'Markdown';\n readonly version = '1.0.0';\n readonly languages = ['markdown'] as const;\n\n async getExtension(): Promise<Extension> {\n const { markdown } = await import('@codemirror/lang-markdown');\n return markdown();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class SassLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'sass';\n readonly name = 'Sass/SCSS';\n readonly version = '1.0.0';\n readonly languages = ['sass', 'scss'] as const;\n\n async getExtension(): Promise<Extension> {\n const { sass } = await import('@codemirror/lang-sass');\n return sass();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class SQLLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'sql';\n readonly name = 'SQL';\n readonly version = '1.0.0';\n readonly languages = ['sql'] as const;\n\n async getExtension(): Promise<Extension> {\n const { sql } = await import('@codemirror/lang-sql');\n return sql();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class TypeScriptLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'typescript';\n readonly name = 'TypeScript';\n readonly version = '1.0.0';\n readonly languages = ['typescript', 'ts'] as const;\n\n async getExtension(): Promise<Extension> {\n const { javascript } = await import('@codemirror/lang-javascript');\n return javascript({ typescript: true });\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class XMLLanguagePlugin implements AXCodeEditorLanguagePlugin {\n readonly id = 'xml';\n readonly name = 'XML';\n readonly version = '1.0.0';\n readonly languages = ['xml'] as const;\n\n async getExtension(): Promise<Extension> {\n const { xml } = await import('@codemirror/lang-xml');\n return xml();\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorThemePlugin } from '../../types';\n\nexport class GitHubDarkThemePlugin implements AXCodeEditorThemePlugin {\n readonly id = 'github-dark';\n readonly name = 'GitHub Dark';\n readonly version = '1.0.0';\n readonly dark = true;\n\n async getExtension(): Promise<Extension> {\n const [{ githubDark }, { EditorView }] = await Promise.all([\n import('@uiw/codemirror-theme-github'),\n import('@codemirror/view'),\n ]);\n return [\n githubDark,\n EditorView.theme(\n {\n // '&': { backgroundColor: 'transparent !important' },\n // '.cm-gutters': { backgroundColor: 'transparent !important' },\n },\n { dark: true },\n ),\n ];\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorThemePlugin } from '../../types';\n\nexport class GitHubLightThemePlugin implements AXCodeEditorThemePlugin {\n readonly id = 'github-light';\n readonly name = 'GitHub Light';\n readonly version = '1.0.0';\n readonly dark = false;\n\n async getExtension(): Promise<Extension> {\n const [{ githubLight }, { EditorView }] = await Promise.all([\n import('@uiw/codemirror-theme-github'),\n import('@codemirror/view'),\n ]);\n return [\n githubLight,\n EditorView.theme(\n {\n // '&': { backgroundColor: 'transparent !important' },\n // '.cm-gutters': { backgroundColor: 'transparent !important' },\n },\n { dark: false },\n ),\n ];\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorThemePlugin } from '../../types';\n\nexport class LightThemePlugin implements AXCodeEditorThemePlugin {\n readonly id = 'light';\n readonly name = 'Light';\n readonly version = '1.0.0';\n readonly dark = false;\n\n async getExtension(): Promise<Extension> {\n const { EditorView } = await import('@codemirror/view');\n return EditorView.theme(\n {\n // '&': { backgroundColor: 'transparent !important' },\n '.cm-gutters': {},\n },\n { dark: false },\n );\n }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorThemePlugin } from '../../types';\n\nexport class OneDarkThemePlugin implements AXCodeEditorThemePlugin {\n readonly id = 'one-dark';\n readonly name = 'One Dark';\n readonly version = '1.0.0';\n readonly dark = true;\n\n async getExtension(): Promise<Extension> {\n const { EditorView } = await import('@codemirror/view');\n try {\n const { oneDark } = await import('@codemirror/theme-one-dark');\n return [\n oneDark,\n EditorView.theme(\n {\n // '&': { backgroundColor: 'transparent !important' },\n '.cm-gutters': {},\n },\n { dark: true },\n ),\n ];\n } catch {\n return EditorView.theme(\n {\n // '&': { backgroundColor: 'transparent !important' },\n '.cm-gutters': {},\n },\n { dark: true },\n );\n }\n }\n}\n","import { AXCodeEditorPluginConfig } from '../types';\nimport { PrettierFormatterPlugin } from './formatters/prettier.plugin';\nimport { CSSLanguagePlugin } from './languages/css.plugin';\nimport { HTMLLanguagePlugin } from './languages/html.plugin';\nimport { JavaScriptLanguagePlugin } from './languages/javascript.plugin';\nimport { JSONLanguagePlugin } from './languages/json.plugin';\nimport { MarkdownLanguagePlugin } from './languages/markdown.plugin';\nimport { SassLanguagePlugin } from './languages/sass.plugin';\nimport { SQLLanguagePlugin } from './languages/sql.plugin';\nimport { TypeScriptLanguagePlugin } from './languages/typescript.plugin';\nimport { XMLLanguagePlugin } from './languages/xml.plugin';\nimport { GitHubDarkThemePlugin } from './themes/github-dark.plugin';\nimport { GitHubLightThemePlugin } from './themes/github-light.plugin';\nimport { LightThemePlugin } from './themes/light.plugin';\nimport { OneDarkThemePlugin } from './themes/one-dark.plugin';\n\n/**\n * Default plugin configuration with all built-in plugins\n */\nexport function provideDefaultCodeEditorPlugins(): AXCodeEditorPluginConfig {\n return {\n languages: [\n new JavaScriptLanguagePlugin(),\n new TypeScriptLanguagePlugin(),\n new JSONLanguagePlugin(),\n new HTMLLanguagePlugin(),\n new CSSLanguagePlugin(),\n new SassLanguagePlugin(),\n new SQLLanguagePlugin(),\n new XMLLanguagePlugin(),\n new MarkdownLanguagePlugin(),\n ],\n themes: [\n new OneDarkThemePlugin(),\n new LightThemePlugin(),\n new GitHubLightThemePlugin(),\n new GitHubDarkThemePlugin(),\n ],\n formatters: [new PrettierFormatterPlugin()],\n extensions: [],\n };\n}\n","import { InjectionToken } from '@angular/core';\nimport { provideDefaultCodeEditorPlugins } from './default/config';\nimport { AXCodeEditorPluginConfig } from './types';\n\n/**\n * Injection token for providing code editor plugin configuration\n */\nexport const AX_CODE_EDITOR_PLUGIN_CONFIG = new InjectionToken<AXCodeEditorPluginConfig>(\n 'AX_CODE_EDITOR_PLUGIN_CONFIG',\n {\n providedIn: 'root',\n factory: () => provideDefaultCodeEditorPlugins(),\n },\n);\n","import { Injectable, inject } from '@angular/core';\nimport type { Extension } from '@codemirror/state';\nimport {\n AXCodeEditorExtensionPlugin,\n AXCodeEditorFormatterPlugin,\n AXCodeEditorLanguagePlugin,\n AXCodeEditorPluginConfig,\n AXCodeEditorThemePlugin,\n} from './types';\nimport { AX_CODE_EDITOR_PLUGIN_CONFIG } from './tokens';\n\n/**\n * Registry service for managing code editor plugins\n */\n@Injectable({ providedIn: 'root' })\nexport class AXCodeEditorPluginRegistry {\n private config: AXCodeEditorPluginConfig | null = inject(AX_CODE_EDITOR_PLUGIN_CONFIG, { optional: true });\n\n private languagePlugins = new Map<string, AXCodeEditorLanguagePlugin>();\n private themePlugins = new Map<string, AXCodeEditorThemePlugin>();\n private formatterPlugins = new Map<string, AXCodeEditorFormatterPlugin>();\n private extensionPlugins = new Map<string, AXCodeEditorExtensionPlugin>();\n\n constructor() {\n this.initializePlugins();\n }\n\n private initializePlugins(): void {\n if (!this.config) return;\n\n // Register language plugins\n this.config.languages?.forEach((plugin) => {\n plugin.languages.forEach((lang) => {\n this.languagePlugins.set(lang, plugin);\n });\n });\n\n // Register theme plugins\n this.config.themes?.forEach((plugin) => {\n this.themePlugins.set(plugin.id, plugin);\n });\n\n // Register formatter plugins\n this.config.formatters?.forEach((plugin) => {\n plugin.languages.forEach((lang) => {\n this.formatterPlugins.set(lang, plugin);\n });\n });\n\n // Register extension plugins\n this.config.extensions?.forEach((plugin) => {\n this.extensionPlugins.set(plugin.id, plugin);\n });\n }\n\n /**\n * Get language extension for the specified language\n */\n async getLanguageExtension(language: string): Promise<Extension> {\n const plugin = this.languagePlugins.get(language);\n if (!plugin) {\n console.warn(`No language plugin found for: ${language}`);\n return [];\n }\n return plugin.getExtension();\n }\n\n /**\n * Get theme extension by theme ID\n */\n async getThemeExtension(themeId: string): Promise<Extension> {\n const plugin = this.themePlugins.get(themeId);\n if (!plugin) {\n console.warn(`No theme plugin found for: ${themeId}`);\n return [];\n }\n return plugin.getExtension();\n }\n\n /**\n * Format text using the appropriate formatter for the language\n */\n async format(text: string, language: string): Promise<string | null> {\n const plugin = this.formatterPlugins.get(language);\n if (!plugin) {\n return null;\n }\n return plugin.format(text, language);\n }\n\n /**\n * Get all registered extension plugins\n */\n async getExtensionPlugins(): Promise<Extension[]> {\n const extensions = await Promise.all(\n Array.from(this.extensionPlugins.values()).map((plugin) => plugin.getExtension()),\n );\n return extensions;\n }\n\n /**\n * Check if a language is supported\n */\n hasLanguage(language: string): boolean {\n return this.languagePlugins.has(language);\n }\n\n /**\n * Check if a theme is available\n */\n hasTheme(themeId: string): boolean {\n return this.themePlugins.has(themeId);\n }\n\n /**\n * Check if a formatter is available for a language\n */\n hasFormatter(language: string): boolean {\n return this.formatterPlugins.has(language);\n }\n\n /**\n * Get all available language identifiers\n */\n getAvailableLanguages(): string[] {\n return Array.from(this.languagePlugins.keys());\n }\n\n /**\n * Get all available theme identifiers\n */\n getAvailableThemes(): string[] {\n return Array.from(this.themePlugins.keys());\n }\n\n /**\n * Register a language plugin at runtime\n */\n registerLanguagePlugin(plugin: AXCodeEditorLanguagePlugin): void {\n plugin.languages.forEach((lang) => {\n this.languagePlugins.set(lang, plugin);\n });\n }\n\n /**\n * Register a theme plugin at runtime\n */\n registerThemePlugin(plugin: AXCodeEditorThemePlugin): void {\n this.themePlugins.set(plugin.id, plugin);\n }\n\n /**\n * Register a formatter plugin at runtime\n */\n registerFormatterPlugin(plugin: AXCodeEditorFormatterPlugin): void {\n plugin.languages.forEach((lang) => {\n this.formatterPlugins.set(lang, plugin);\n });\n }\n\n /**\n * Register an extension plugin at runtime\n */\n registerExtensionPlugin(plugin: AXCodeEditorExtensionPlugin): void {\n this.extensionPlugins.set(plugin.id, plugin);\n }\n}\n","import { AXComponent, AXValuableComponent, MXValueComponent } from '@acorex/cdk/common';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n ElementRef,\n PLATFORM_ID,\n afterNextRender,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { AXCodeEditorDefaultLanguage } from './plugins';\nimport { AXCodeEditorPluginRegistry } from './plugins/registry.service';\n\n// Re-export language type for external use\nexport type { AXCodeEditorDefaultLanguage } from './plugins/default/languages';\n\n// Type-only aliases for CodeMirror types (tree-shake friendly)\ntype AXCodeEditorEditorViewLike = import('@codemirror/view').EditorView;\ntype AXCodeEditorKeyBindingLike = import('@codemirror/view').KeyBinding;\nexport type AXCodeEditorExtensionLike = import('@codemirror/state').Extension;\ntype AXCodeEditorCompartmentLike = import('@codemirror/state').Compartment;\nexport type AXCodeEditorCompletionLike = import('@codemirror/autocomplete').Completion;\nexport type AXCodeEditorCompletionSourceLike = import('@codemirror/autocomplete').CompletionSource;\ntype AXCodeEditorCompletionContextLike = import('@codemirror/autocomplete').CompletionContext;\n\ntype AXCodeEditorViewModule = typeof import('@codemirror/view');\ntype AXCodeEditorStateModule = typeof import('@codemirror/state');\ntype AXCodeEditorLanguageModule = typeof import('@codemirror/language');\ntype AXCodeEditorAutocompleteModule = typeof import('@codemirror/autocomplete');\ntype AXCodeEditorCommandsModule = typeof import('@codemirror/commands');\ntype AXCodeEditorSearchModule = typeof import('@codemirror/search');\ntype AXCodeEditorLintModule = typeof import('@codemirror/lint');\n\n@Component({\n selector: 'ax-code-editor',\n host: {\n '(keydown.control.s)': 'onSaveShortcut($event)',\n class: 'ax-code-editor block',\n },\n inputs: ['disabled', 'value', 'state', 'name', 'id'],\n outputs: ['onValueChanged', 'valueChange', 'stateChange', 'readonlyChange', 'disabledChange'],\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n max-height: 90vh;\n\n &.ax-disable {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n > .ax-editor-container {\n height: 100%;\n width: 100%;\n align-items: start;\n --ax-comp-editor-space-start-size: 0;\n --ax-comp-editor-space-end-size: 0;\n --ax-comp-editor-border-width: 1px;\n }\n\n .ax-code-editor-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n }\n\n .cm-editor {\n width: 100%;\n max-width: 100%;\n overflow: auto;\n }\n\n .cm-editor.cm-focused {\n outline: none;\n }\n\n .ax-error-message {\n padding-inline: 0.5rem;\n }\n }\n `,\n ],\n providers: [\n { provide: AXValuableComponent, useExisting: AXCodeEditorComponent },\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCodeEditorComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXCodeEditorComponent },\n ],\n template: `\n <div class=\"ax-editor-container\" [style.min-height]=\"getMinHeight()\">\n <div class=\"ax-code-editor-container\">\n <div\n #host\n class=\"cm-editor\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-readonly]=\"editorReadonly() ? 'true' : 'false'\"\n [attr.data-placeholder]=\"placeholder() ?? null\"\n ></div>\n </div>\n <ng-content select=\"ax-validation-rule\"> </ng-content>\n </div>\n <div class=\"ax-error-container\"></div>\n `,\n})\nexport class AXCodeEditorComponent extends MXValueComponent<string> {\n // Inputs (signals)\n // value = input<string>('');\n /** Active language identifier from default plugins. Default: 'javascript'. */\n language = input<AXCodeEditorDefaultLanguage>('javascript');\n /** When true, the editor becomes readonly (non-editable). */\n editorReadonly = input(false, { alias: 'readonly' });\n /** Placeholder text shown when the document is empty. */\n placeholder = input<string>('');\n /** Toggle rendering of line numbers in the gutter. */\n lineNumbers = input<boolean>(true);\n /** Soft-wrap long lines when true. */\n lineWrapping = input<boolean>(false);\n /** Tab size (spaces per indent level). */\n tabSize = input<number>(2);\n /** When true, the Tab key indents instead of moving focus. */\n indentWithTab = input<boolean>(true);\n /** Theme identifier. If null, uses platform theme mode (dark/light). */\n theme = input<string | null>(null);\n /** Additional CodeMirror extensions to apply. Reconfigures at runtime. */\n extensions = input<ReadonlyArray<AXCodeEditorExtensionLike>>([]);\n /** ARIA label for accessibility. */\n ariaLabel = input<string | null>(null);\n /** Focus the editor after first render. */\n focusOnReady = input<boolean>(false);\n /** If true, format the document via Prettier before emitting save. */\n formatOnSave = input<boolean>(false);\n /** Minimum number of rows (lines) to display. Controls the minimum height of the editor. */\n minRow = input<number | null>(null);\n\n /**\n * Custom autocompletion options: either a static array of Completion items\n * or a CodeMirror CompletionSource function.\n */\n customCompletions = input<ReadonlyArray<AXCodeEditorCompletionLike> | AXCodeEditorCompletionSourceLike | null>(null);\n\n // Outputs (signals)\n // valueChange = output<string>();\n /** Emits when the editor is fully initialized and ready. */\n ready = output<void>();\n /** Emits when the user triggers save (Ctrl/Cmd+S). Payload is the current text. */\n save = output<string>();\n\n // View container\n host = viewChild<ElementRef<HTMLDivElement>>('host');\n\n // Runtime state\n private platformId = inject(PLATFORM_ID);\n private destroyRef = inject(DestroyRef);\n private platformService = inject(AXPlatform);\n private pluginRegistry = inject(AXCodeEditorPluginRegistry);\n\n private editorViewSig = signal<AXCodeEditorEditorViewLike | null>(null);\n\n // Compartments to reconfigure editor without recreating it\n private languageCompartment: AXCodeEditorCompartmentLike | null = null;\n private readonlyCompartment: AXCodeEditorCompartmentLike | null = null;\n private themeCompartment: AXCodeEditorCompartmentLike | null = null;\n private placeholderCompartment: AXCodeEditorCompartmentLike | null = null;\n private wrappingCompartment: AXCodeEditorCompartmentLike | null = null;\n private keymapExtrasCompartment: AXCodeEditorCompartmentLike | null = null;\n private tabSizeCompartment: AXCodeEditorCompartmentLike | null = null;\n private lineNumbersCompartment: AXCodeEditorCompartmentLike | null = null;\n\n // Cached CodeMirror modules after initialization\n private cm: {\n view: AXCodeEditorViewModule | null;\n state: AXCodeEditorStateModule | null;\n language: AXCodeEditorLanguageModule | null;\n autocomplete: AXCodeEditorAutocompleteModule | null;\n commands: AXCodeEditorCommandsModule | null;\n search: AXCodeEditorSearchModule | null;\n lint: AXCodeEditorLintModule | null;\n } = { view: null, state: null, language: null, autocomplete: null, commands: null, search: null, lint: null };\n\n private isBrowser = computed(() => isPlatformBrowser(this.platformId));\n\n /** Computed minimum height based on minRow (excluding gutter/line numbers). */\n getMinHeight(): string | null {\n const rows = this.minRow();\n if (!rows || rows <= 0) return null;\n // CodeMirror default line height is typically 1.5em, but we use rem for consistency\n // This calculates height without accounting for gutter since gutter is separate\n return `calc(${rows} * 1.5rem)`;\n }\n\n constructor() {\n super();\n afterNextRender(() => {\n if (!this.isBrowser()) return;\n this.initializeEditor();\n });\n\n // Keep model in sync when external value changes\n effect(() => {\n const view = this.editorViewSig();\n if (!view) return;\n const newDoc = this.value ?? '';\n const current = view.state.doc.toString();\n if (newDoc !== current) {\n view.dispatch({\n changes: { from: 0, to: view.state.doc.length, insert: newDoc },\n });\n }\n });\n\n // React to dynamic configuration changes\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.languageCompartment) return;\n const lang = this.language();\n this.pluginRegistry.getLanguageExtension(lang).then((ext) => {\n if (!view || !this.languageCompartment) return;\n view.dispatch({ effects: this.languageCompartment.reconfigure(ext) });\n });\n });\n\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.readonlyCompartment) return;\n const editable = !this.editorReadonly();\n import('@codemirror/view').then(({ EditorView }) => {\n if (!view || !this.readonlyCompartment) return;\n view.dispatch({ effects: this.readonlyCompartment.reconfigure(EditorView.editable.of(editable)) });\n });\n });\n\n effect(() => {\n const view = this.editorViewSig();\n // Establish reactive dependency on theme and platform theme\n const customTheme = this.theme();\n const platformTheme = this.platformService.themeMode();\n if (!view || !this.themeCompartment) return;\n this.resolveThemeExtension(customTheme, platformTheme).then((themeExt) => {\n if (!view || !this.themeCompartment) return;\n view.dispatch({ effects: this.themeCompartment.reconfigure(themeExt) });\n });\n });\n\n effect(() => {\n this.placeholder();\n const view = this.editorViewSig();\n if (!view || !this.placeholderCompartment) return;\n import('@codemirror/view').then(({ placeholder }) => {\n if (!view || !this.placeholderCompartment) return;\n view.dispatch({ effects: this.placeholderCompartment.reconfigure(placeholder(this.placeholder() ?? '')) });\n });\n });\n\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.wrappingCompartment) return;\n const EditorView = this.cm.view?.EditorView;\n if (!EditorView) return;\n const nextExt = this.lineWrapping() ? EditorView.lineWrapping : [];\n this.reconfigure(this.wrappingCompartment, nextExt);\n });\n\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.tabSizeCompartment) return;\n const EditorState = this.cm.state?.EditorState;\n if (!EditorState) return;\n this.reconfigure(this.tabSizeCompartment, EditorState.tabSize.of(this.tabSize() ?? 2));\n });\n\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.keymapExtrasCompartment) return;\n const keymap = this.cm.view?.keymap;\n const commands = this.cm.commands;\n if (!keymap || !commands) return;\n this.reconfigure(this.keymapExtrasCompartment, keymap.of(this.indentWithTab() ? [commands.indentWithTab] : []));\n });\n\n effect(() => {\n const view = this.editorViewSig();\n if (!view || !this.lineNumbersCompartment) return;\n const lineNumbers = this.cm.view?.lineNumbers;\n if (!lineNumbers) return;\n this.reconfigure(this.lineNumbersCompartment, this.lineNumbers() ? lineNumbers() : []);\n });\n }\n\n private async initializeEditor(): Promise<void> {\n const hostEl = this.host()?.nativeElement;\n if (!hostEl) return;\n\n await this.loadCodeMirrorModules();\n\n this.createCompartments();\n\n const keymaps = this.buildKeymaps();\n\n const viewMod = this.cm.view;\n const stateMod = this.cm.state;\n const languageMod = this.cm.language;\n const autoMod = this.cm.autocomplete;\n const commandsMod = this.cm.commands;\n const searchMod = this.cm.search;\n const lintMod = this.cm.lint;\n if (!viewMod || !stateMod || !languageMod || !autoMod || !commandsMod || !searchMod || !lintMod) return;\n const languageExt = await this.pluginRegistry.getLanguageExtension(this.language());\n const themeExt = await this.resolveThemeExtension(this.theme(), this.platformService.themeMode());\n const placeholderExt = viewMod.placeholder(this.placeholder() ?? '');\n const editableExt = viewMod.EditorView.editable.of(!this.editorReadonly());\n const wrappingExt = this.lineWrapping() ? viewMod.EditorView.lineWrapping : [];\n const tabSizeExt = stateMod.EditorState.tabSize.of(this.tabSize() ?? 2);\n const lineNumbersExt = this.lineNumbers() ? viewMod.lineNumbers() : [];\n\n const autoCompleteExt = autoMod.autocompletion({\n override: this.buildCustomCompletionSources(),\n });\n\n const baseExtensions: ReadonlyArray<AXCodeEditorExtensionLike> = [\n this.lineNumbersCompartment.of(lineNumbersExt),\n viewMod.highlightActiveLine(),\n viewMod.highlightActiveLineGutter(),\n viewMod.drawSelection(),\n viewMod.dropCursor(),\n viewMod.rectangularSelection(),\n viewMod.crosshairCursor(),\n viewMod.highlightSpecialChars(),\n languageMod.syntaxHighlighting(languageMod.defaultHighlightStyle, { fallback: true }),\n languageMod.bracketMatching(),\n languageMod.foldGutter(),\n commandsMod.history(),\n searchMod.highlightSelectionMatches(),\n viewMod.keymap.of(keymaps),\n autoCompleteExt,\n this.languageCompartment.of(languageExt),\n this.readonlyCompartment.of(editableExt),\n this.themeCompartment.of(themeExt),\n this.placeholderCompartment.of(placeholderExt),\n this.wrappingCompartment.of(wrappingExt),\n this.tabSizeCompartment.of(tabSizeExt),\n this.keymapExtrasCompartment.of(viewMod.keymap.of(this.indentWithTab() ? [commandsMod.indentWithTab] : [])),\n ...this.extensions(),\n ];\n\n const updateListener = viewMod.EditorView.updateListener.of((vu) => {\n if (vu.docChanged) {\n const text = vu.state.doc.toString();\n // this.writeValue(text);\n this.value = text;\n }\n });\n\n const state = stateMod.EditorState.create({\n doc: this.value ?? '',\n extensions: [...baseExtensions, updateListener],\n });\n\n const view = new viewMod.EditorView({ state, parent: hostEl });\n\n // Update listener for external changes (selection, viewport, etc.) if needed later\n view.dispatch({ effects: [] });\n\n this.editorViewSig.set(view);\n\n this.destroyRef.onDestroy(() => {\n view.destroy();\n this.editorViewSig.set(null);\n });\n\n if (this.focusOnReady()) {\n view.focus();\n }\n\n this.ready.emit();\n }\n\n private reconfigure(comp: AXCodeEditorCompartmentLike | null, ext: AXCodeEditorExtensionLike): void {\n const view = this.editorViewSig();\n if (!view || !comp) return;\n view.dispatch({ effects: comp.reconfigure(ext) });\n }\n\n /**\n * Handles Ctrl/Cmd+S on the host. If formatOnSave is enabled, attempts\n * to format the document first, then emits the saved text.\n */\n async onSaveShortcut(event: Event): Promise<void> {\n event.preventDefault();\n const view = this.editorViewSig();\n const current = view?.state.doc.toString() ?? this.value ?? '';\n const payload = current;\n if (this.formatOnSave()) {\n await this.format(true);\n }\n this.save.emit(payload);\n }\n\n private async loadCodeMirrorModules(): Promise<void> {\n const [viewMod, stateMod, langMod, autoMod, cmdMod, searchMod, lintMod] = await Promise.all([\n import('@codemirror/view'),\n import('@codemirror/state'),\n import('@codemirror/language'),\n import('@codemirror/autocomplete'),\n import('@codemirror/commands'),\n import('@codemirror/search'),\n import('@codemirror/lint'),\n ]);\n this.cm.view = viewMod;\n this.cm.state = stateMod;\n this.cm.language = langMod;\n this.cm.autocomplete = autoMod;\n this.cm.commands = cmdMod;\n this.cm.search = searchMod;\n this.cm.lint = lintMod;\n }\n\n private createCompartments(): void {\n const stateMod = this.cm.state;\n if (!stateMod) return;\n this.languageCompartment = new stateMod.Compartment();\n this.readonlyCompartment = new stateMod.Compartment();\n this.themeCompartment = new stateMod.Compartment();\n this.placeholderCompartment = new stateMod.Compartment();\n this.wrappingCompartment = new stateMod.Compartment();\n this.tabSizeCompartment = new stateMod.Compartment();\n this.keymapExtrasCompartment = new stateMod.Compartment();\n this.lineNumbersCompartment = new stateMod.Compartment();\n }\n\n private buildKeymaps(): ReadonlyArray<AXCodeEditorKeyBindingLike> {\n const cmdMod = this.cm.commands;\n const searchMod = this.cm.search;\n const autoMod = this.cm.autocomplete;\n const lintMod = this.cm.lint;\n if (!cmdMod || !searchMod || !autoMod || !lintMod) return [];\n return [\n ...cmdMod.defaultKeymap,\n ...cmdMod.historyKeymap,\n ...searchMod.searchKeymap,\n ...autoMod.completionKeymap,\n ...(lintMod.lintKeymap as unknown as readonly AXCodeEditorKeyBindingLike[]),\n ];\n }\n\n private async resolveThemeExtension(\n customTheme: string | null,\n platformTheme: string,\n ): Promise<AXCodeEditorExtensionLike> {\n // If custom theme is specified, use it\n if (customTheme) {\n return this.pluginRegistry.getThemeExtension(customTheme);\n }\n\n // Otherwise, use platform theme (handle 'system' by defaulting to 'github-light')\n const themeId = platformTheme === 'dark' ? 'github-dark' : 'github-light';\n return this.pluginRegistry.getThemeExtension(themeId);\n }\n\n private buildCustomCompletionSources(): ReadonlyArray<AXCodeEditorCompletionSourceLike> | undefined {\n const provided = this.customCompletions();\n if (!provided) return undefined;\n if (typeof provided === 'function') {\n return [provided as AXCodeEditorCompletionSourceLike];\n }\n // Treat array as a static completion list\n const staticSource: AXCodeEditorCompletionSourceLike = (context: AXCodeEditorCompletionContextLike) => {\n const from = context.pos;\n return { from, options: provided as ReadonlyArray<AXCodeEditorCompletionLike> };\n };\n return [staticSource];\n }\n\n // Public API\n /** Programmatically focus the editor. */\n public override focus(): void {\n const view = this.editorViewSig();\n if (view) view.focus();\n }\n\n /** Select all text in the current document. */\n public selectAll(): void {\n const view = this.editorViewSig();\n if (!view) return;\n const length = view.state.doc.length;\n view.dispatch({ selection: { anchor: 0, head: length } });\n }\n\n // Formats the current document using the registered formatter plugin (if available for the active language).\n // Returns the formatted text or null if unchanged/unsupported.\n public async format(affect = true): Promise<string | null> {\n const view = this.editorViewSig();\n if (!view) return null;\n const source = view.state.doc.toString();\n if (!source) return null;\n const formatted = await this.pluginRegistry.format(source, this.language());\n if (!formatted || formatted === source) return null;\n if (affect) {\n view.dispatch({ changes: { from: 0, to: view.state.doc.length, insert: formatted } });\n }\n return formatted;\n }\n\n /** Returns the total number of characters in the current document. */\n public getTotalCharacters(): number {\n const view = this.editorViewSig();\n if (view) return view.state.doc.length ?? 0;\n const text = this.value ?? '';\n return text.length;\n }\n\n /** Returns the total number of lines in the current document. */\n public getTotalLines(): number {\n const view = this.editorViewSig();\n if (view) {\n const doc: any = view.state.doc;\n return typeof doc?.lines === 'number' ? doc.lines : doc.toString().split(/\\r?\\n/).length;\n }\n const text = this.value ?? '';\n return text ? text.split(/\\r?\\n/).length : 1;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXCodeEditorComponent } from './code-editor.component';\n\n@NgModule({\n imports: [CommonModule, AXCodeEditorComponent],\n exports: [AXCodeEditorComponent],\n})\nexport class AXCodeEditorModule {}\n","// Language plugins\nexport * from './javascript.plugin';\nexport * from './typescript.plugin';\nexport * from './json.plugin';\nexport * from './html.plugin';\nexport * from './css.plugin';\nexport * from './sass.plugin';\nexport * from './sql.plugin';\nexport * from './xml.plugin';\nexport * from './markdown.plugin';\n\n// Type union of all supported languages from default plugins\nexport type AXCodeEditorDefaultLanguage =\n | 'javascript'\n | 'js'\n | 'typescript'\n | 'ts'\n | 'json'\n | 'html'\n | 'css'\n | 'scss'\n | 'sass'\n | 'sql'\n | 'xml'\n | 'markdown';\n","// Language plugins\nexport * from './languages';\n\n// Theme plugins\nexport * from './themes/one-dark.plugin';\nexport * from './themes/light.plugin';\nexport * from './themes/github-light.plugin';\nexport * from './themes/github-dark.plugin';\n\n// Formatter plugins\nexport * from './formatters/prettier.plugin';\n","// Component & Module\nexport * from './lib/code-editor.component';\nexport * from './lib/code-editor.module';\n\n// Plugins\nexport * from './lib/plugins';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ class AXCommandComponent extends classes((MXInputBaseValueComponent), MXLookComp
|
|
|
37
37
|
const searchValue = this.searchValue();
|
|
38
38
|
let filtered;
|
|
39
39
|
if (searchValue) {
|
|
40
|
-
filtered = this.filterRecursive(this.value?.items ?? [], searchValue);
|
|
40
|
+
filtered = this.filterRecursive(this.value.list?.items ?? [], searchValue);
|
|
41
41
|
}
|
|
42
42
|
else {
|
|
43
43
|
filtered = [];
|
|
@@ -108,7 +108,7 @@ class AXCommandComponent extends classes((MXInputBaseValueComponent), MXLookComp
|
|
|
108
108
|
},
|
|
109
109
|
{ provide: AXComponent, useExisting: AXCommandComponent },
|
|
110
110
|
{ provide: AXValuableComponent, useExisting: AXCommandComponent },
|
|
111
|
-
], viewQueries: [{ propertyName: "searchBox", first: true, predicate: ["f"], descendants: true, isSignal: true }, { propertyName: "listNavigation", first: true, predicate: ["l"], descendants: true, read: AXListNavigationDirective, isSignal: true }, { propertyName: "listNav", first: true, predicate: AXListNavigationDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (searchBar()) {\n <div class=\"ax-search-box-container\">\n <ax-search-box\n #f\n [delayTime]=\"20\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [(ngModel)]=\"searchValue\"\n (onFocus)=\"focusHandler($event)\"\n (onBlur)=\"blurHandler($event)\"\n (onKeyDown)=\"searchEscapeHandler($event)\"\n [axAutoFocus]=\"true\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n}\n\n<div #l class=\"ax-command-container\" #s=\"axListNavigation\" axListNavigation (onKeypress)=\"closeHandler($event)\">\n @if (value?.pinned && !searchValue()) {\n <div class=\"ax-command-item-pinned-container\">\n <ax-text class=\"ax-command-item-pinned-text\">{{ value.pinned.title }}</ax-text>\n\n @for (item of value.pinned.items; track item.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n }\n </div>\n }\n\n @if (displayItems() && searchValue()) {\n <div class=\"ax-command-item-wrapper\">\n @for (item of displayItems(); track $index) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n } @empty {\n <div class=\"ax-command-not-found\">\n <ax-text>No results found for \"{{ searchValue() }}\"</ax-text>\n </div>\n }\n </div>\n }\n\n <ng-template #renderItem let-item let-level=\"level\" let-listNavigation=\"listNavigation\">\n <div\n (mouseenter)=\"activeHandler(listNavigation, a)\"\n class=\"ax-command-item-container ax-remove-default-select-style\"\n [style.padding-inline-start.rem]=\"level * 0.625\"\n [class.ax-command-item-container-active]=\"a.isActive() && !customTemplate()\"\n #a=\"axListNavigationItem\"\n axListNavigationItem\n (click)=\"onItemClick(item)\"\n (onKeypress)=\"keyPress($event, item)\"\n >\n @if (customTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: item,\n level: level,\n isActive: a.isActive(),\n }\"\n ></ng-container>\n } @else {\n <div class=\"ax-command-item\">\n @if (item.icon) {\n <i class=\"ax-command-item-icon\" [class]=\"item.icon\"></i>\n }\n <span class=\"ax-command-item-text\">{{ item.text }}</span>\n </div>\n }\n </div>\n\n @if (item.children?.length) {\n @for (child of item.children; track child.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level + 1, listNavigation: s }\"\n >\n </ng-container>\n }\n }\n </ng-template>\n</div>\n\n@if (footerButtons().navigation || footerButtons().select || footerButtons().close) {\n <div class=\"ax-command-footer\">\n @if (footerButtons().navigation) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['↑']\"></ax-kbd-item>\n <ax-kbd-item [keys]=\"['↓']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to navigate</ax-text>\n </div>\n }\n\n @if (footerButtons().select) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['↩']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to select</ax-text>\n </div>\n }\n\n @if (footerButtons().close) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['esc']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to close</ax-text>\n </div>\n }\n </div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-outline-style:solid;--tw-font-weight:initial;--tw-border-style:solid}}}@layer components{ax-command{border-radius:var(--radius-lg,.5rem);outline-style:var(--tw-outline-style);outline-width:1px;outline-color:var(--color-border-light,rgba(var(--ax-sys-color-border-light-surface)));display:block;overflow:hidden}ax-command .ax-search-box-container{background-color:var(--color-lightest,rgba(var(--ax-sys-color-lightest-surface)));padding:calc(var(--spacing,.25rem) * 3)}ax-command .ax-search-box-container:where(.dark,.dark *){background-color:var(--color-darker,rgba(var(--ax-sys-color-darker-surface)))}ax-command .ax-command-container{max-height:calc(var(--spacing,.25rem) * 80);background-color:var(--color-lightest,rgba(var(--ax-sys-color-lightest-surface)));color:var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)));overflow:auto}ax-command .ax-command-container:where(.dark,.dark *){background-color:var(--color-darker,rgba(var(--ax-sys-color-darker-surface)))}ax-command .ax-command-container{scrollbar-width:none;-ms-overflow-style:none}ax-command .ax-command-container .ax-command-item-pinned-container{padding-inline:calc(var(--spacing,.25rem) * 3)}ax-command .ax-command-container .ax-command-item-pinned-container .ax-command-item-pinned-text{padding:calc(var(--spacing,.25rem) * 3);font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:color-mix(in srgb,rgba(var(--ax-sys-color-on-lighter-surface)) 50%,transparent);display:block}@supports (color:color-mix(in lab,red,red)){ax-command .ax-command-container .ax-command-item-pinned-container .ax-command-item-pinned-text{color:color-mix(in oklab,var(--color-on-lighter,rgba(var(--ax-sys-color-on-lighter-surface))) 50%,transparent)}}ax-command .ax-command-container .ax-command-item-wrapper{padding-inline:calc(var(--spacing,.25rem) * 3)}ax-command .ax-command-container .ax-command-item-container{cursor:pointer;border-style:var(--tw-border-style);padding:calc(var(--spacing,.25rem) * 2);border-width:1px;border-color:#0000}ax-command .ax-command-container .ax-command-item-container .ax-command-item{align-items:center;gap:calc(var(--spacing,.25rem) * 2);display:flex}ax-command .ax-command-container .ax-command-item-container .ax-command-item-text{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-on-lightest,rgba(var(--ax-sys-color-on-lightest-surface)))}ax-command .ax-command-container .ax-command-item-container .ax-command-item-icon{color:color-mix(in srgb,rgba(var(--ax-sys-color-on-lighter-surface)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){ax-command .ax-command-container .ax-command-item-container .ax-command-item-icon{color:color-mix(in oklab,var(--color-on-lighter,rgba(var(--ax-sys-color-on-lighter-surface))) 50%,transparent)}}ax-command .ax-command-container .ax-command-not-found{padding:calc(var(--spacing,.25rem) * 4);justify-content:center;display:flex}ax-command .ax-command-container .ax-remove-default-select-style{outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:#0000}ax-command .ax-command-container .ax-command-item-container-active{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border-light,rgba(var(--ax-sys-color-border-light-surface)));background-color:var(--color-light,rgba(var(--ax-sys-color-light-surface)))}ax-command .ax-kbd{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 2);height:100%;display:flex}ax-command .ax-command-footer{align-items:center;gap:calc(var(--spacing,.25rem) * 6);border-bottom-right-radius:var(--radius-lg,.5rem);border-bottom-left-radius:var(--radius-lg,.5rem);background-color:var(--color-light,rgba(var(--ax-sys-color-light-surface)));padding:calc(var(--spacing,.25rem) * 3);color:color-mix(in srgb,rgba(var(--ax-sys-color-on-light-surface)) 50%,transparent);display:flex}@supports (color:color-mix(in lab,red,red)){ax-command .ax-command-footer{color:color-mix(in oklab,var(--color-on-light,rgba(var(--ax-sys-color-on-light-surface))) 50%,transparent)}}ax-command .ax-command-footer .ax-kbd-footer{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 3);display:flex}ax-command .ax-command-footer .ax-kbd-footer kbd{background-color:var(--color-lightest,rgba(var(--ax-sys-color-lightest-surface)))}ax-command .ax-command-footer .ax-kbd-text{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600)}}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}\n/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXListNavigationModule }, { kind: "directive", type: i5.AXListNavigationDirective, selector: "[axListNavigation]", inputs: ["orientation"], outputs: ["onNavigationChanged", "onKeypress"], exportAs: ["axListNavigation"] }, { kind: "directive", type: i5.AXListNavigationItemDirective, selector: "[axListNavigationItem]", outputs: ["onKeypress"], exportAs: ["axListNavigationItem"] }, { kind: "component", type: AXKBDComponent, selector: "ax-kbd", inputs: ["look"] }, { kind: "component", type: AXKBDItemComponent, selector: "ax-kbd-item", inputs: ["keys", "join", "look"], outputs: ["lookChange"] }, { kind: "directive", type: AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
111
|
+
], viewQueries: [{ propertyName: "searchBox", first: true, predicate: ["f"], descendants: true, isSignal: true }, { propertyName: "listNavigation", first: true, predicate: ["l"], descendants: true, read: AXListNavigationDirective, isSignal: true }, { propertyName: "listNav", first: true, predicate: AXListNavigationDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (searchBar()) {\n <div class=\"ax-search-box-container\">\n <ax-search-box\n #f\n [delayTime]=\"20\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [(ngModel)]=\"searchValue\"\n (onFocus)=\"focusHandler($event)\"\n (onBlur)=\"blurHandler($event)\"\n (onKeyDown)=\"searchEscapeHandler($event)\"\n [axAutoFocus]=\"true\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n}\n\n<div #l class=\"ax-command-container\" #s=\"axListNavigation\" axListNavigation (onKeypress)=\"closeHandler($event)\">\n @if (value?.pinned && !searchValue()) {\n <div class=\"ax-command-item-pinned-container\">\n @if (value.pinned.title) {\n <ax-text class=\"ax-command-item-pinned-text\">{{ value.pinned.title }}</ax-text>\n }\n\n @for (item of value.pinned.items; track item.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n }\n </div>\n }\n\n @if (value?.list && !searchValue()) {\n <div class=\"ax-command-item-pinned-container\">\n @if (value.list.title) {\n <ax-text class=\"ax-command-item-pinned-text\">{{ value.list.title }}</ax-text>\n } @else {\n <div class=\"ax-command-divider\"></div>\n }\n\n @for (item of value.list.items; track item.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n }\n </div>\n }\n\n @if (displayItems() && searchValue()) {\n <div class=\"ax-command-item-wrapper\">\n @for (item of displayItems(); track item.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n } @empty {\n <div class=\"ax-command-not-found\">\n <ax-text>No results found for \"{{ searchValue() }}\"</ax-text>\n </div>\n }\n </div>\n }\n\n <ng-template #renderItem let-item let-level=\"level\" let-listNavigation=\"listNavigation\">\n <div\n (mouseenter)=\"activeHandler(listNavigation, a)\"\n class=\"ax-remove-default-select-style\"\n [class.ax-command-item-container]=\"!customTemplate()\"\n [style.padding-inline-start.rem]=\"!customTemplate() ? level * 0.625 : 0\"\n [class.ax-command-item-container-active]=\"a.isActive() && !customTemplate()\"\n #a=\"axListNavigationItem\"\n axListNavigationItem\n (click)=\"onItemClick(item)\"\n (onKeypress)=\"keyPress($event, item)\"\n >\n @if (customTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: item,\n level: level,\n isActive: a.isActive(),\n }\"\n ></ng-container>\n } @else {\n <div class=\"ax-command-item\">\n @if (item.icon) {\n <i class=\"ax-command-item-icon\" [class]=\"item.icon\"></i>\n }\n <span class=\"ax-command-item-text\">{{ item.text }}</span>\n </div>\n }\n </div>\n\n @if (item.children?.length) {\n @for (child of item.children; track child.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level + 1, listNavigation: s }\"\n >\n </ng-container>\n }\n }\n </ng-template>\n</div>\n\n@if (footerButtons().navigation || footerButtons().select || footerButtons().close) {\n <div class=\"ax-command-footer\">\n @if (footerButtons().navigation) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['↑']\"></ax-kbd-item>\n <ax-kbd-item [keys]=\"['↓']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to navigate</ax-text>\n </div>\n }\n\n @if (footerButtons().select) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['↩']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to select</ax-text>\n </div>\n }\n\n @if (footerButtons().close) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['esc']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to close</ax-text>\n </div>\n }\n </div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-outline-style:solid;--tw-font-weight:initial;--tw-border-style:solid}}}@layer components{ax-command{border-radius:var(--radius-lg,.5rem);outline-style:var(--tw-outline-style);outline-width:1px;outline-color:var(--color-border-light,rgba(var(--ax-sys-color-border-light-surface)));display:block;overflow:hidden}ax-command .ax-search-box-container{background-color:var(--color-lightest,rgba(var(--ax-sys-color-lightest-surface)));padding:calc(var(--spacing,.25rem) * 3)}ax-command .ax-search-box-container:where(.dark,.dark *){background-color:var(--color-darker,rgba(var(--ax-sys-color-darker-surface)))}ax-command .ax-command-container{max-height:calc(var(--spacing,.25rem) * 80);background-color:var(--color-lightest,rgba(var(--ax-sys-color-lightest-surface)));color:var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)));overflow:auto}ax-command .ax-command-container:where(.dark,.dark *){background-color:var(--color-darker,rgba(var(--ax-sys-color-darker-surface)))}ax-command .ax-command-container{scrollbar-width:none;-ms-overflow-style:none}ax-command .ax-command-container .ax-command-item-pinned-container{padding-inline:calc(var(--spacing,.25rem) * 3)}ax-command .ax-command-container .ax-command-item-pinned-container .ax-command-item-pinned-text{padding:calc(var(--spacing,.25rem) * 3);font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:color-mix(in srgb,rgba(var(--ax-sys-color-on-lighter-surface)) 50%,transparent);display:block}@supports (color:color-mix(in lab,red,red)){ax-command .ax-command-container .ax-command-item-pinned-container .ax-command-item-pinned-text{color:color-mix(in oklab,var(--color-on-lighter,rgba(var(--ax-sys-color-on-lighter-surface))) 50%,transparent)}}ax-command .ax-command-container .ax-command-item-pinned-container .ax-command-divider{background-color:var(--color-surface,rgba(var(--ax-sys-color-surface)));background-color:rgba(var(--ax-sys-color-surface));width:100%;height:1px}ax-command .ax-command-container .ax-command-item-wrapper{padding-inline:calc(var(--spacing,.25rem) * 3)}ax-command .ax-command-container .ax-command-item-container{cursor:pointer;border-style:var(--tw-border-style);padding:calc(var(--spacing,.25rem) * 2);border-width:1px;border-color:#0000}ax-command .ax-command-container .ax-command-item-container .ax-command-item{align-items:center;gap:calc(var(--spacing,.25rem) * 2);display:flex}ax-command .ax-command-container .ax-command-item-container .ax-command-item-text{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-on-lightest,rgba(var(--ax-sys-color-on-lightest-surface)))}ax-command .ax-command-container .ax-command-item-container .ax-command-item-icon{color:color-mix(in srgb,rgba(var(--ax-sys-color-on-lighter-surface)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){ax-command .ax-command-container .ax-command-item-container .ax-command-item-icon{color:color-mix(in oklab,var(--color-on-lighter,rgba(var(--ax-sys-color-on-lighter-surface))) 50%,transparent)}}ax-command .ax-command-container .ax-command-not-found{padding:calc(var(--spacing,.25rem) * 4);justify-content:center;display:flex}ax-command .ax-command-container .ax-remove-default-select-style{outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:#0000}ax-command .ax-command-container .ax-command-item-container-active{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border-light,rgba(var(--ax-sys-color-border-light-surface)));background-color:var(--color-light,rgba(var(--ax-sys-color-light-surface)))}ax-command .ax-kbd{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 2);height:100%;display:flex}ax-command .ax-command-footer{align-items:center;gap:calc(var(--spacing,.25rem) * 6);border-bottom-right-radius:var(--radius-lg,.5rem);border-bottom-left-radius:var(--radius-lg,.5rem);background-color:var(--color-light,rgba(var(--ax-sys-color-light-surface)));padding:calc(var(--spacing,.25rem) * 3);color:color-mix(in srgb,rgba(var(--ax-sys-color-on-light-surface)) 50%,transparent);display:flex}@supports (color:color-mix(in lab,red,red)){ax-command .ax-command-footer{color:color-mix(in oklab,var(--color-on-light,rgba(var(--ax-sys-color-on-light-surface))) 50%,transparent)}}ax-command .ax-command-footer .ax-kbd-footer{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 3);display:flex}ax-command .ax-command-footer .ax-kbd-footer kbd{background-color:var(--color-lightest,rgba(var(--ax-sys-color-lightest-surface)))}ax-command .ax-command-footer .ax-kbd-text{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600)}}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}\n/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXListNavigationModule }, { kind: "directive", type: i5.AXListNavigationDirective, selector: "[axListNavigation]", inputs: ["orientation"], outputs: ["onNavigationChanged", "onKeypress"], exportAs: ["axListNavigation"] }, { kind: "directive", type: i5.AXListNavigationItemDirective, selector: "[axListNavigationItem]", outputs: ["onKeypress"], exportAs: ["axListNavigationItem"] }, { kind: "component", type: AXKBDComponent, selector: "ax-kbd", inputs: ["look"] }, { kind: "component", type: AXKBDItemComponent, selector: "ax-kbd-item", inputs: ["keys", "join", "look"], outputs: ["lookChange"] }, { kind: "directive", type: AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
112
112
|
}
|
|
113
113
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXCommandComponent, decorators: [{
|
|
114
114
|
type: Component,
|
|
@@ -129,7 +129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
129
129
|
},
|
|
130
130
|
{ provide: AXComponent, useExisting: AXCommandComponent },
|
|
131
131
|
{ provide: AXValuableComponent, useExisting: AXCommandComponent },
|
|
132
|
-
], inputs: ['disabled', 'readonly', 'tabIndex', 'placeholder', 'value', 'state', 'name', 'id'], template: "@if (searchBar()) {\n <div class=\"ax-search-box-container\">\n <ax-search-box\n #f\n [delayTime]=\"20\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [(ngModel)]=\"searchValue\"\n (onFocus)=\"focusHandler($event)\"\n (onBlur)=\"blurHandler($event)\"\n (onKeyDown)=\"searchEscapeHandler($event)\"\n [axAutoFocus]=\"true\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n}\n\n<div #l class=\"ax-command-container\" #s=\"axListNavigation\" axListNavigation (onKeypress)=\"closeHandler($event)\">\n @if (value?.pinned && !searchValue()) {\n <div class=\"ax-command-item-pinned-container\">\n <ax-text class=\"ax-command-item-pinned-text\">{{ value.pinned.title }}</ax-text>\n\n @for (item of value.pinned.items; track item.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n }\n </div>\n }\n\n @if (displayItems() && searchValue()) {\n <div class=\"ax-command-item-wrapper\">\n @for (item of displayItems(); track $index) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n } @empty {\n <div class=\"ax-command-not-found\">\n <ax-text>No results found for \"{{ searchValue() }}\"</ax-text>\n </div>\n }\n </div>\n }\n\n <ng-template #renderItem let-item let-level=\"level\" let-listNavigation=\"listNavigation\">\n <div\n (mouseenter)=\"activeHandler(listNavigation, a)\"\n class=\"ax-command-item-container ax-remove-default-select-style\"\n [style.padding-inline-start.rem]=\"level * 0.625\"\n [class.ax-command-item-container-active]=\"a.isActive() && !customTemplate()\"\n #a=\"axListNavigationItem\"\n axListNavigationItem\n (click)=\"onItemClick(item)\"\n (onKeypress)=\"keyPress($event, item)\"\n >\n @if (customTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: item,\n level: level,\n isActive: a.isActive(),\n }\"\n ></ng-container>\n } @else {\n <div class=\"ax-command-item\">\n @if (item.icon) {\n <i class=\"ax-command-item-icon\" [class]=\"item.icon\"></i>\n }\n <span class=\"ax-command-item-text\">{{ item.text }}</span>\n </div>\n }\n </div>\n\n @if (item.children?.length) {\n @for (child of item.children; track child.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level + 1, listNavigation: s }\"\n >\n </ng-container>\n }\n }\n </ng-template>\n</div>\n\n@if (footerButtons().navigation || footerButtons().select || footerButtons().close) {\n <div class=\"ax-command-footer\">\n @if (footerButtons().navigation) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['↑']\"></ax-kbd-item>\n <ax-kbd-item [keys]=\"['↓']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to navigate</ax-text>\n </div>\n }\n\n @if (footerButtons().select) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['↩']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to select</ax-text>\n </div>\n }\n\n @if (footerButtons().close) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['esc']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to close</ax-text>\n </div>\n }\n </div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-outline-style:solid;--tw-font-weight:initial;--tw-border-style:solid}}}@layer components{ax-command{border-radius:var(--radius-lg,.5rem);outline-style:var(--tw-outline-style);outline-width:1px;outline-color:var(--color-border-light,rgba(var(--ax-sys-color-border-light-surface)));display:block;overflow:hidden}ax-command .ax-search-box-container{background-color:var(--color-lightest,rgba(var(--ax-sys-color-lightest-surface)));padding:calc(var(--spacing,.25rem) * 3)}ax-command .ax-search-box-container:where(.dark,.dark *){background-color:var(--color-darker,rgba(var(--ax-sys-color-darker-surface)))}ax-command .ax-command-container{max-height:calc(var(--spacing,.25rem) * 80);background-color:var(--color-lightest,rgba(var(--ax-sys-color-lightest-surface)));color:var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)));overflow:auto}ax-command .ax-command-container:where(.dark,.dark *){background-color:var(--color-darker,rgba(var(--ax-sys-color-darker-surface)))}ax-command .ax-command-container{scrollbar-width:none;-ms-overflow-style:none}ax-command .ax-command-container .ax-command-item-pinned-container{padding-inline:calc(var(--spacing,.25rem) * 3)}ax-command .ax-command-container .ax-command-item-pinned-container .ax-command-item-pinned-text{padding:calc(var(--spacing,.25rem) * 3);font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:color-mix(in srgb,rgba(var(--ax-sys-color-on-lighter-surface)) 50%,transparent);display:block}@supports (color:color-mix(in lab,red,red)){ax-command .ax-command-container .ax-command-item-pinned-container .ax-command-item-pinned-text{color:color-mix(in oklab,var(--color-on-lighter,rgba(var(--ax-sys-color-on-lighter-surface))) 50%,transparent)}}ax-command .ax-command-container .ax-command-item-wrapper{padding-inline:calc(var(--spacing,.25rem) * 3)}ax-command .ax-command-container .ax-command-item-container{cursor:pointer;border-style:var(--tw-border-style);padding:calc(var(--spacing,.25rem) * 2);border-width:1px;border-color:#0000}ax-command .ax-command-container .ax-command-item-container .ax-command-item{align-items:center;gap:calc(var(--spacing,.25rem) * 2);display:flex}ax-command .ax-command-container .ax-command-item-container .ax-command-item-text{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-on-lightest,rgba(var(--ax-sys-color-on-lightest-surface)))}ax-command .ax-command-container .ax-command-item-container .ax-command-item-icon{color:color-mix(in srgb,rgba(var(--ax-sys-color-on-lighter-surface)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){ax-command .ax-command-container .ax-command-item-container .ax-command-item-icon{color:color-mix(in oklab,var(--color-on-lighter,rgba(var(--ax-sys-color-on-lighter-surface))) 50%,transparent)}}ax-command .ax-command-container .ax-command-not-found{padding:calc(var(--spacing,.25rem) * 4);justify-content:center;display:flex}ax-command .ax-command-container .ax-remove-default-select-style{outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:#0000}ax-command .ax-command-container .ax-command-item-container-active{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border-light,rgba(var(--ax-sys-color-border-light-surface)));background-color:var(--color-light,rgba(var(--ax-sys-color-light-surface)))}ax-command .ax-kbd{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 2);height:100%;display:flex}ax-command .ax-command-footer{align-items:center;gap:calc(var(--spacing,.25rem) * 6);border-bottom-right-radius:var(--radius-lg,.5rem);border-bottom-left-radius:var(--radius-lg,.5rem);background-color:var(--color-light,rgba(var(--ax-sys-color-light-surface)));padding:calc(var(--spacing,.25rem) * 3);color:color-mix(in srgb,rgba(var(--ax-sys-color-on-light-surface)) 50%,transparent);display:flex}@supports (color:color-mix(in lab,red,red)){ax-command .ax-command-footer{color:color-mix(in oklab,var(--color-on-light,rgba(var(--ax-sys-color-on-light-surface))) 50%,transparent)}}ax-command .ax-command-footer .ax-kbd-footer{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 3);display:flex}ax-command .ax-command-footer .ax-kbd-footer kbd{background-color:var(--color-lightest,rgba(var(--ax-sys-color-lightest-surface)))}ax-command .ax-command-footer .ax-kbd-text{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600)}}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}\n/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */\n"] }]
|
|
132
|
+
], inputs: ['disabled', 'readonly', 'tabIndex', 'placeholder', 'value', 'state', 'name', 'id'], template: "@if (searchBar()) {\n <div class=\"ax-search-box-container\">\n <ax-search-box\n #f\n [delayTime]=\"20\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [(ngModel)]=\"searchValue\"\n (onFocus)=\"focusHandler($event)\"\n (onBlur)=\"blurHandler($event)\"\n (onKeyDown)=\"searchEscapeHandler($event)\"\n [axAutoFocus]=\"true\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n}\n\n<div #l class=\"ax-command-container\" #s=\"axListNavigation\" axListNavigation (onKeypress)=\"closeHandler($event)\">\n @if (value?.pinned && !searchValue()) {\n <div class=\"ax-command-item-pinned-container\">\n @if (value.pinned.title) {\n <ax-text class=\"ax-command-item-pinned-text\">{{ value.pinned.title }}</ax-text>\n }\n\n @for (item of value.pinned.items; track item.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n }\n </div>\n }\n\n @if (value?.list && !searchValue()) {\n <div class=\"ax-command-item-pinned-container\">\n @if (value.list.title) {\n <ax-text class=\"ax-command-item-pinned-text\">{{ value.list.title }}</ax-text>\n } @else {\n <div class=\"ax-command-divider\"></div>\n }\n\n @for (item of value.list.items; track item.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n }\n </div>\n }\n\n @if (displayItems() && searchValue()) {\n <div class=\"ax-command-item-wrapper\">\n @for (item of displayItems(); track item.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n } @empty {\n <div class=\"ax-command-not-found\">\n <ax-text>No results found for \"{{ searchValue() }}\"</ax-text>\n </div>\n }\n </div>\n }\n\n <ng-template #renderItem let-item let-level=\"level\" let-listNavigation=\"listNavigation\">\n <div\n (mouseenter)=\"activeHandler(listNavigation, a)\"\n class=\"ax-remove-default-select-style\"\n [class.ax-command-item-container]=\"!customTemplate()\"\n [style.padding-inline-start.rem]=\"!customTemplate() ? level * 0.625 : 0\"\n [class.ax-command-item-container-active]=\"a.isActive() && !customTemplate()\"\n #a=\"axListNavigationItem\"\n axListNavigationItem\n (click)=\"onItemClick(item)\"\n (onKeypress)=\"keyPress($event, item)\"\n >\n @if (customTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: item,\n level: level,\n isActive: a.isActive(),\n }\"\n ></ng-container>\n } @else {\n <div class=\"ax-command-item\">\n @if (item.icon) {\n <i class=\"ax-command-item-icon\" [class]=\"item.icon\"></i>\n }\n <span class=\"ax-command-item-text\">{{ item.text }}</span>\n </div>\n }\n </div>\n\n @if (item.children?.length) {\n @for (child of item.children; track child.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level + 1, listNavigation: s }\"\n >\n </ng-container>\n }\n }\n </ng-template>\n</div>\n\n@if (footerButtons().navigation || footerButtons().select || footerButtons().close) {\n <div class=\"ax-command-footer\">\n @if (footerButtons().navigation) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['↑']\"></ax-kbd-item>\n <ax-kbd-item [keys]=\"['↓']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to navigate</ax-text>\n </div>\n }\n\n @if (footerButtons().select) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['↩']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to select</ax-text>\n </div>\n }\n\n @if (footerButtons().close) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['esc']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to close</ax-text>\n </div>\n }\n </div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-outline-style:solid;--tw-font-weight:initial;--tw-border-style:solid}}}@layer components{ax-command{border-radius:var(--radius-lg,.5rem);outline-style:var(--tw-outline-style);outline-width:1px;outline-color:var(--color-border-light,rgba(var(--ax-sys-color-border-light-surface)));display:block;overflow:hidden}ax-command .ax-search-box-container{background-color:var(--color-lightest,rgba(var(--ax-sys-color-lightest-surface)));padding:calc(var(--spacing,.25rem) * 3)}ax-command .ax-search-box-container:where(.dark,.dark *){background-color:var(--color-darker,rgba(var(--ax-sys-color-darker-surface)))}ax-command .ax-command-container{max-height:calc(var(--spacing,.25rem) * 80);background-color:var(--color-lightest,rgba(var(--ax-sys-color-lightest-surface)));color:var(--color-on-surface,rgba(var(--ax-sys-color-on-surface)));overflow:auto}ax-command .ax-command-container:where(.dark,.dark *){background-color:var(--color-darker,rgba(var(--ax-sys-color-darker-surface)))}ax-command .ax-command-container{scrollbar-width:none;-ms-overflow-style:none}ax-command .ax-command-container .ax-command-item-pinned-container{padding-inline:calc(var(--spacing,.25rem) * 3)}ax-command .ax-command-container .ax-command-item-pinned-container .ax-command-item-pinned-text{padding:calc(var(--spacing,.25rem) * 3);font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:color-mix(in srgb,rgba(var(--ax-sys-color-on-lighter-surface)) 50%,transparent);display:block}@supports (color:color-mix(in lab,red,red)){ax-command .ax-command-container .ax-command-item-pinned-container .ax-command-item-pinned-text{color:color-mix(in oklab,var(--color-on-lighter,rgba(var(--ax-sys-color-on-lighter-surface))) 50%,transparent)}}ax-command .ax-command-container .ax-command-item-pinned-container .ax-command-divider{background-color:var(--color-surface,rgba(var(--ax-sys-color-surface)));background-color:rgba(var(--ax-sys-color-surface));width:100%;height:1px}ax-command .ax-command-container .ax-command-item-wrapper{padding-inline:calc(var(--spacing,.25rem) * 3)}ax-command .ax-command-container .ax-command-item-container{cursor:pointer;border-style:var(--tw-border-style);padding:calc(var(--spacing,.25rem) * 2);border-width:1px;border-color:#0000}ax-command .ax-command-container .ax-command-item-container .ax-command-item{align-items:center;gap:calc(var(--spacing,.25rem) * 2);display:flex}ax-command .ax-command-container .ax-command-item-container .ax-command-item-text{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);color:var(--color-on-lightest,rgba(var(--ax-sys-color-on-lightest-surface)))}ax-command .ax-command-container .ax-command-item-container .ax-command-item-icon{color:color-mix(in srgb,rgba(var(--ax-sys-color-on-lighter-surface)) 50%,transparent)}@supports (color:color-mix(in lab,red,red)){ax-command .ax-command-container .ax-command-item-container .ax-command-item-icon{color:color-mix(in oklab,var(--color-on-lighter,rgba(var(--ax-sys-color-on-lighter-surface))) 50%,transparent)}}ax-command .ax-command-container .ax-command-not-found{padding:calc(var(--spacing,.25rem) * 4);justify-content:center;display:flex}ax-command .ax-command-container .ax-remove-default-select-style{outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:#0000}ax-command .ax-command-container .ax-command-item-container-active{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border-light,rgba(var(--ax-sys-color-border-light-surface)));background-color:var(--color-light,rgba(var(--ax-sys-color-light-surface)))}ax-command .ax-kbd{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 2);height:100%;display:flex}ax-command .ax-command-footer{align-items:center;gap:calc(var(--spacing,.25rem) * 6);border-bottom-right-radius:var(--radius-lg,.5rem);border-bottom-left-radius:var(--radius-lg,.5rem);background-color:var(--color-light,rgba(var(--ax-sys-color-light-surface)));padding:calc(var(--spacing,.25rem) * 3);color:color-mix(in srgb,rgba(var(--ax-sys-color-on-light-surface)) 50%,transparent);display:flex}@supports (color:color-mix(in lab,red,red)){ax-command .ax-command-footer{color:color-mix(in oklab,var(--color-on-light,rgba(var(--ax-sys-color-on-light-surface))) 50%,transparent)}}ax-command .ax-command-footer .ax-kbd-footer{justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 3);display:flex}ax-command .ax-command-footer .ax-kbd-footer kbd{background-color:var(--color-lightest,rgba(var(--ax-sys-color-lightest-surface)))}ax-command .ax-command-footer .ax-kbd-text{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600)}}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}\n/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */\n"] }]
|
|
133
133
|
}], propDecorators: { searchBox: [{ type: i0.ViewChild, args: ['f', { isSignal: true }] }], onSubmit: [{ type: i0.Output, args: ["onSubmit"] }], onEscape: [{ type: i0.Output, args: ["onEscape"] }], onSearchBoxFocus: [{ type: i0.Output, args: ["onSearchBoxFocus"] }], onSearchBoxBlur: [{ type: i0.Output, args: ["onSearchBoxBlur"] }], listNavigation: [{ type: i0.ViewChild, args: ['l', { ...{ read: AXListNavigationDirective }, isSignal: true }] }], listNav: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXListNavigationDirective), { isSignal: true }] }], customTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "customTemplate", required: false }] }], searchBar: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchBar", required: false }] }], footerButtons: [{ type: i0.Input, args: [{ isSignal: true, alias: "footerButtons", required: false }] }] } });
|
|
134
134
|
|
|
135
135
|
const COMPONENT = [AXCommandComponent];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-command.mjs","sources":["../../../../packages/components/command/src/lib/command.component.ts","../../../../packages/components/command/src/lib/command.component.html","../../../../packages/components/command/src/lib/command.module.ts","../../../../packages/components/command/src/lib/command.type.ts","../../../../packages/components/command/src/acorex-components-command.ts"],"sourcesContent":["import {\n AXAutoFocusDirective,\n AXComponent,\n AXFocusEvent,\n AXHtmlEvent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\nimport {\n AXListNavigationDirective,\n AXListNavigationItemDirective,\n AXListNavigationModule,\n} from '@acorex/cdk/list-navigation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXKBDComponent, AXKBDItemComponent } from '@acorex/components/kbd';\nimport { AXSearchBoxComponent, AXSearchBoxModule } from '@acorex/components/search-box';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n forwardRef,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\n\nimport { AXCommandComponentEvent, AXCommandFooter, AXCommandItem, AXCommandMenuItem } from './command.type';\n\n@Component({\n selector: 'ax-command',\n templateUrl: './command.component.html',\n styleUrl: './command.component.compiled.css',\n encapsulation: ViewEncapsulation.None,\n imports: [\n AXSearchBoxModule,\n AXDecoratorModule,\n CommonModule,\n FormsModule,\n AXListNavigationModule,\n AXKBDComponent,\n AXKBDItemComponent,\n AXAutoFocusDirective,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCommandComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXCommandComponent },\n { provide: AXValuableComponent, useExisting: AXCommandComponent },\n ],\n inputs: ['disabled', 'readonly', 'tabIndex', 'placeholder', 'value', 'state', 'name', 'id'],\n})\nexport class AXCommandComponent extends classes(MXInputBaseValueComponent<AXCommandMenuItem>, MXLookComponent) {\n protected searchValue = signal('');\n protected searchBox = viewChild<AXSearchBoxComponent>('f');\n readonly onSubmit = output<AXCommandComponentEvent>();\n readonly onEscape = output<AXHtmlEvent<KeyboardEvent>>();\n readonly onSearchBoxFocus = output<AXHtmlEvent<FocusEvent>>();\n readonly onSearchBoxBlur = output<AXHtmlEvent<FocusEvent>>();\n protected listNavigation = viewChild('l', { read: AXListNavigationDirective });\n private listNav = viewChild(AXListNavigationDirective);\n\n /**\n * The custom template used for rendering content.\n *\n * @param {TemplateRef<any>} customTemplate\n */\n customTemplate = input<TemplateRef<any>>();\n\n searchBar = input(true);\n\n footerButtons = input<AXCommandFooter>({ navigation: true, select: true, close: true });\n\n protected displayItems = computed<AXCommandItem[]>(() => {\n const searchValue = this.searchValue();\n let filtered: AXCommandItem[];\n if (searchValue) {\n filtered = this.filterRecursive(this.value?.items ?? [], searchValue);\n } else {\n filtered = [];\n }\n\n return filtered;\n });\n\n protected focusHandler(e: AXFocusEvent) {\n this.onSearchBoxFocus.emit({ component: this, nativeEvent: e.nativeEvent });\n }\n\n protected blurHandler(e: AXFocusEvent) {\n this.onSearchBoxBlur.emit({ component: this, nativeEvent: e.nativeEvent });\n }\n\n private filterRecursive(items: any[], value: string): any[] {\n const lowerSignal = value.toLowerCase();\n\n return items\n .map((item) => {\n const isMatch =\n item.text?.toLowerCase().includes(lowerSignal) || item.href?.toLowerCase().includes(lowerSignal);\n\n const filteredChildren = item.children ? this.filterRecursive(item.children, value) : [];\n\n if (isMatch || filteredChildren.length > 0) {\n return {\n ...item,\n children: filteredChildren,\n };\n }\n\n return null;\n })\n .filter(Boolean);\n }\n\n protected onItemClick(item: AXCommandItem) {\n this.onSubmit.emit({ data: item, component: this });\n }\n\n protected keyPress(e: AXHtmlEvent<KeyboardEvent>, item: AXCommandItem) {\n if (e.nativeEvent.key === 'Enter' || e.nativeEvent.code === 'Space') {\n e.nativeEvent.stopPropagation();\n e.nativeEvent.preventDefault();\n this.onSubmit.emit({ data: item, component: this });\n }\n }\n\n protected searchEscapeHandler(e: AXHtmlEvent<KeyboardEvent>) {\n if (e.nativeEvent.key === 'Escape') {\n this.onEscape.emit({ component: this, nativeEvent: e.nativeEvent });\n }\n if (e.nativeEvent.key === 'ArrowDown') {\n this.listNavigation().focusOnIndex(0);\n }\n }\n\n protected closeHandler(e: AXHtmlEvent<KeyboardEvent>) {\n if (!this.listNav().activeIndex() && e.nativeEvent.key === 'ArrowUp') {\n this.searchBox().focus();\n }\n\n if (\n e.nativeEvent.key === 'ArrowUp' ||\n e.nativeEvent.key === 'ArrowDown' ||\n e.nativeEvent.key === 'Tab' ||\n e.nativeEvent.key === 'Shift'\n )\n return;\n\n this.searchBox().focus();\n }\n\n protected activeHandler(l: AXListNavigationDirective, i: AXListNavigationItemDirective) {\n l?.navigateTo(i);\n }\n}\n","@if (searchBar()) {\n <div class=\"ax-search-box-container\">\n <ax-search-box\n #f\n [delayTime]=\"20\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [(ngModel)]=\"searchValue\"\n (onFocus)=\"focusHandler($event)\"\n (onBlur)=\"blurHandler($event)\"\n (onKeyDown)=\"searchEscapeHandler($event)\"\n [axAutoFocus]=\"true\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n}\n\n<div #l class=\"ax-command-container\" #s=\"axListNavigation\" axListNavigation (onKeypress)=\"closeHandler($event)\">\n @if (value?.pinned && !searchValue()) {\n <div class=\"ax-command-item-pinned-container\">\n <ax-text class=\"ax-command-item-pinned-text\">{{ value.pinned.title }}</ax-text>\n\n @for (item of value.pinned.items; track item.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n }\n </div>\n }\n\n @if (displayItems() && searchValue()) {\n <div class=\"ax-command-item-wrapper\">\n @for (item of displayItems(); track $index) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n } @empty {\n <div class=\"ax-command-not-found\">\n <ax-text>No results found for \"{{ searchValue() }}\"</ax-text>\n </div>\n }\n </div>\n }\n\n <ng-template #renderItem let-item let-level=\"level\" let-listNavigation=\"listNavigation\">\n <div\n (mouseenter)=\"activeHandler(listNavigation, a)\"\n class=\"ax-command-item-container ax-remove-default-select-style\"\n [style.padding-inline-start.rem]=\"level * 0.625\"\n [class.ax-command-item-container-active]=\"a.isActive() && !customTemplate()\"\n #a=\"axListNavigationItem\"\n axListNavigationItem\n (click)=\"onItemClick(item)\"\n (onKeypress)=\"keyPress($event, item)\"\n >\n @if (customTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: item,\n level: level,\n isActive: a.isActive(),\n }\"\n ></ng-container>\n } @else {\n <div class=\"ax-command-item\">\n @if (item.icon) {\n <i class=\"ax-command-item-icon\" [class]=\"item.icon\"></i>\n }\n <span class=\"ax-command-item-text\">{{ item.text }}</span>\n </div>\n }\n </div>\n\n @if (item.children?.length) {\n @for (child of item.children; track child.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level + 1, listNavigation: s }\"\n >\n </ng-container>\n }\n }\n </ng-template>\n</div>\n\n@if (footerButtons().navigation || footerButtons().select || footerButtons().close) {\n <div class=\"ax-command-footer\">\n @if (footerButtons().navigation) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['↑']\"></ax-kbd-item>\n <ax-kbd-item [keys]=\"['↓']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to navigate</ax-text>\n </div>\n }\n\n @if (footerButtons().select) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['↩']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to select</ax-text>\n </div>\n }\n\n @if (footerButtons().close) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['esc']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to close</ax-text>\n </div>\n }\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { AXCommandComponent } from './command.component';\n\nconst COMPONENT = [AXCommandComponent];\nconst MODULES = [];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXCommandModule {}\n","import { AXEvent } from '@acorex/cdk/common';\n\nexport type AXCommandItem = {\n id: string | number;\n text: string;\n icon?: string;\n href?: string;\n children?: AXCommandItem[];\n index?: number;\n data?: any;\n};\n\nexport type AXCommandMenuItem = {\n pinned?: { title: string; items: AXCommandItem[] | any[] };\n items: AXCommandItem[] | any[];\n};\n\nexport class AXCommandComponentEvent extends AXEvent {\n data: AXCommandItem;\n}\n\nexport type AXCommandFooter = { navigation: boolean; select: boolean; close: boolean };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-command.mjs","sources":["../../../../packages/components/command/src/lib/command.component.ts","../../../../packages/components/command/src/lib/command.component.html","../../../../packages/components/command/src/lib/command.module.ts","../../../../packages/components/command/src/lib/command.type.ts","../../../../packages/components/command/src/acorex-components-command.ts"],"sourcesContent":["import {\n AXAutoFocusDirective,\n AXComponent,\n AXFocusEvent,\n AXHtmlEvent,\n AXValuableComponent,\n MXInputBaseValueComponent,\n MXLookComponent,\n} from '@acorex/cdk/common';\nimport {\n AXListNavigationDirective,\n AXListNavigationItemDirective,\n AXListNavigationModule,\n} from '@acorex/cdk/list-navigation';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXKBDComponent, AXKBDItemComponent } from '@acorex/components/kbd';\nimport { AXSearchBoxComponent, AXSearchBoxModule } from '@acorex/components/search-box';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n forwardRef,\n input,\n output,\n signal,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\n\nimport { AXCommandComponentEvent, AXCommandFooter, AXCommandItem, AXCommandMenuItem } from './command.type';\n\n@Component({\n selector: 'ax-command',\n templateUrl: './command.component.html',\n styleUrl: './command.component.compiled.css',\n encapsulation: ViewEncapsulation.None,\n imports: [\n AXSearchBoxModule,\n AXDecoratorModule,\n CommonModule,\n FormsModule,\n AXListNavigationModule,\n AXKBDComponent,\n AXKBDItemComponent,\n AXAutoFocusDirective,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AXCommandComponent),\n multi: true,\n },\n { provide: AXComponent, useExisting: AXCommandComponent },\n { provide: AXValuableComponent, useExisting: AXCommandComponent },\n ],\n inputs: ['disabled', 'readonly', 'tabIndex', 'placeholder', 'value', 'state', 'name', 'id'],\n})\nexport class AXCommandComponent extends classes(MXInputBaseValueComponent<AXCommandMenuItem>, MXLookComponent) {\n protected searchValue = signal('');\n protected searchBox = viewChild<AXSearchBoxComponent>('f');\n readonly onSubmit = output<AXCommandComponentEvent>();\n readonly onEscape = output<AXHtmlEvent<KeyboardEvent>>();\n readonly onSearchBoxFocus = output<AXHtmlEvent<FocusEvent>>();\n readonly onSearchBoxBlur = output<AXHtmlEvent<FocusEvent>>();\n protected listNavigation = viewChild('l', { read: AXListNavigationDirective });\n private listNav = viewChild(AXListNavigationDirective);\n\n /**\n * The custom template used for rendering content.\n *\n * @param {TemplateRef<any>} customTemplate\n */\n customTemplate = input<TemplateRef<any>>();\n\n searchBar = input(true);\n\n footerButtons = input<AXCommandFooter>({ navigation: true, select: true, close: true });\n\n protected displayItems = computed<AXCommandItem[]>(() => {\n const searchValue = this.searchValue();\n let filtered: AXCommandItem[];\n if (searchValue) {\n filtered = this.filterRecursive(this.value.list?.items ?? [], searchValue);\n } else {\n filtered = [];\n }\n return filtered;\n });\n\n protected focusHandler(e: AXFocusEvent) {\n this.onSearchBoxFocus.emit({ component: this, nativeEvent: e.nativeEvent });\n }\n\n protected blurHandler(e: AXFocusEvent) {\n this.onSearchBoxBlur.emit({ component: this, nativeEvent: e.nativeEvent });\n }\n\n private filterRecursive(items: any[], value: string): any[] {\n const lowerSignal = value.toLowerCase();\n\n return items\n .map((item) => {\n const isMatch =\n item.text?.toLowerCase().includes(lowerSignal) || item.href?.toLowerCase().includes(lowerSignal);\n\n const filteredChildren = item.children ? this.filterRecursive(item.children, value) : [];\n\n if (isMatch || filteredChildren.length > 0) {\n return {\n ...item,\n children: filteredChildren,\n };\n }\n\n return null;\n })\n .filter(Boolean);\n }\n\n protected onItemClick(item: AXCommandItem) {\n this.onSubmit.emit({ data: item, component: this });\n }\n\n protected keyPress(e: AXHtmlEvent<KeyboardEvent>, item: AXCommandItem) {\n if (e.nativeEvent.key === 'Enter' || e.nativeEvent.code === 'Space') {\n e.nativeEvent.stopPropagation();\n e.nativeEvent.preventDefault();\n this.onSubmit.emit({ data: item, component: this });\n }\n }\n\n protected searchEscapeHandler(e: AXHtmlEvent<KeyboardEvent>) {\n if (e.nativeEvent.key === 'Escape') {\n this.onEscape.emit({ component: this, nativeEvent: e.nativeEvent });\n }\n if (e.nativeEvent.key === 'ArrowDown') {\n this.listNavigation().focusOnIndex(0);\n }\n }\n\n protected closeHandler(e: AXHtmlEvent<KeyboardEvent>) {\n if (!this.listNav().activeIndex() && e.nativeEvent.key === 'ArrowUp') {\n this.searchBox().focus();\n }\n\n if (\n e.nativeEvent.key === 'ArrowUp' ||\n e.nativeEvent.key === 'ArrowDown' ||\n e.nativeEvent.key === 'Tab' ||\n e.nativeEvent.key === 'Shift'\n )\n return;\n\n this.searchBox().focus();\n }\n\n protected activeHandler(l: AXListNavigationDirective, i: AXListNavigationItemDirective) {\n l?.navigateTo(i);\n }\n}\n","@if (searchBar()) {\n <div class=\"ax-search-box-container\">\n <ax-search-box\n #f\n [delayTime]=\"20\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [(ngModel)]=\"searchValue\"\n (onFocus)=\"focusHandler($event)\"\n (onBlur)=\"blurHandler($event)\"\n (onKeyDown)=\"searchEscapeHandler($event)\"\n [axAutoFocus]=\"true\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n}\n\n<div #l class=\"ax-command-container\" #s=\"axListNavigation\" axListNavigation (onKeypress)=\"closeHandler($event)\">\n @if (value?.pinned && !searchValue()) {\n <div class=\"ax-command-item-pinned-container\">\n @if (value.pinned.title) {\n <ax-text class=\"ax-command-item-pinned-text\">{{ value.pinned.title }}</ax-text>\n }\n\n @for (item of value.pinned.items; track item.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n }\n </div>\n }\n\n @if (value?.list && !searchValue()) {\n <div class=\"ax-command-item-pinned-container\">\n @if (value.list.title) {\n <ax-text class=\"ax-command-item-pinned-text\">{{ value.list.title }}</ax-text>\n } @else {\n <div class=\"ax-command-divider\"></div>\n }\n\n @for (item of value.list.items; track item.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n }\n </div>\n }\n\n @if (displayItems() && searchValue()) {\n <div class=\"ax-command-item-wrapper\">\n @for (item of displayItems(); track item.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item, level: 1, listNavigation: s }\"\n >\n </ng-container>\n } @empty {\n <div class=\"ax-command-not-found\">\n <ax-text>No results found for \"{{ searchValue() }}\"</ax-text>\n </div>\n }\n </div>\n }\n\n <ng-template #renderItem let-item let-level=\"level\" let-listNavigation=\"listNavigation\">\n <div\n (mouseenter)=\"activeHandler(listNavigation, a)\"\n class=\"ax-remove-default-select-style\"\n [class.ax-command-item-container]=\"!customTemplate()\"\n [style.padding-inline-start.rem]=\"!customTemplate() ? level * 0.625 : 0\"\n [class.ax-command-item-container-active]=\"a.isActive() && !customTemplate()\"\n #a=\"axListNavigationItem\"\n axListNavigationItem\n (click)=\"onItemClick(item)\"\n (onKeypress)=\"keyPress($event, item)\"\n >\n @if (customTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"customTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: item,\n level: level,\n isActive: a.isActive(),\n }\"\n ></ng-container>\n } @else {\n <div class=\"ax-command-item\">\n @if (item.icon) {\n <i class=\"ax-command-item-icon\" [class]=\"item.icon\"></i>\n }\n <span class=\"ax-command-item-text\">{{ item.text }}</span>\n </div>\n }\n </div>\n\n @if (item.children?.length) {\n @for (child of item.children; track child.id) {\n <ng-container\n [ngTemplateOutlet]=\"renderItem\"\n [ngTemplateOutletContext]=\"{ $implicit: child, level: level + 1, listNavigation: s }\"\n >\n </ng-container>\n }\n }\n </ng-template>\n</div>\n\n@if (footerButtons().navigation || footerButtons().select || footerButtons().close) {\n <div class=\"ax-command-footer\">\n @if (footerButtons().navigation) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['↑']\"></ax-kbd-item>\n <ax-kbd-item [keys]=\"['↓']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to navigate</ax-text>\n </div>\n }\n\n @if (footerButtons().select) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['↩']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to select</ax-text>\n </div>\n }\n\n @if (footerButtons().close) {\n <div class=\"ax-kbd-footer\">\n <ax-kbd class=\"ax-kbd\">\n <ax-kbd-item [keys]=\"['esc']\"></ax-kbd-item>\n </ax-kbd>\n <ax-text class=\"ax-kbd-text\">to close</ax-text>\n </div>\n }\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { AXCommandComponent } from './command.component';\n\nconst COMPONENT = [AXCommandComponent];\nconst MODULES = [];\n\n@NgModule({\n imports: [...MODULES, ...COMPONENT],\n exports: [...COMPONENT],\n providers: [],\n})\nexport class AXCommandModule {}\n","import { AXEvent } from '@acorex/cdk/common';\n\nexport type AXCommandItem = {\n id: string | number;\n text: string;\n icon?: string;\n href?: string;\n children?: AXCommandItem[];\n index?: number;\n data?: any;\n};\n\ntype forceId = {\n id: string | number;\n};\n\nexport type AXCommandMenuItem<T extends forceId = AXCommandItem> = {\n pinned?: { title?: string; items: T[] };\n list: { title?: string; items: T[] };\n};\n\nexport class AXCommandComponentEvent extends AXEvent {\n data: AXCommandItem;\n}\n\nexport type AXCommandFooter = { navigation: boolean; select: boolean; close: boolean };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -221,25 +221,13 @@ class AXFormComponent extends MXValueComponent {
|
|
|
221
221
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
222
222
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.3", type: AXFormComponent, isStandalone: true, selector: "ax-form", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: null }, labelMode: { classPropertyName: "labelMode", publicName: "labelMode", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: true, isRequired: false, transformFunction: null }, messageStyle: { classPropertyName: "messageStyle", publicName: "messageStyle", isSignal: true, isRequired: false, transformFunction: null }, updateOn: { classPropertyName: "updateOn", publicName: "updateOn", isSignal: false, isRequired: false, transformFunction: null }, inUserInteractionActive: { classPropertyName: "inUserInteractionActive", publicName: "inUserInteractionActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onValidate: "onValidate", updateOnChange: "updateOnChange" }, providers: [{ provide: AXComponent, useExisting: AXFormComponent }], queries: [{ propertyName: "content", predicate: AXFormFieldComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `<form (submit)="_handleSubmit($event)" (reset)="_handleReset()" class="ax-{{ messageStyle() }}-error">
|
|
223
223
|
<ng-content></ng-content>
|
|
224
|
-
</form>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
224
|
+
</form>`, isInline: true, styles: ["form{height:inherit}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
225
225
|
}
|
|
226
226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXFormComponent, decorators: [{
|
|
227
227
|
type: Component,
|
|
228
|
-
args: [{
|
|
229
|
-
selector: 'ax-form',
|
|
230
|
-
template: `<form (submit)="_handleSubmit($event)" (reset)="_handleReset()" class="ax-{{ messageStyle() }}-error">
|
|
228
|
+
args: [{ selector: 'ax-form', template: `<form (submit)="_handleSubmit($event)" (reset)="_handleReset()" class="ax-{{ messageStyle() }}-error">
|
|
231
229
|
<ng-content></ng-content>
|
|
232
|
-
</form>`,
|
|
233
|
-
inputs: ['disabled', 'readonly'],
|
|
234
|
-
encapsulation: ViewEncapsulation.None,
|
|
235
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
236
|
-
providers: [{ provide: AXComponent, useExisting: AXFormComponent }],
|
|
237
|
-
// styles: `
|
|
238
|
-
// form {
|
|
239
|
-
// height: 100%;
|
|
240
|
-
// }
|
|
241
|
-
// `,
|
|
242
|
-
}]
|
|
230
|
+
</form>`, inputs: ['disabled', 'readonly'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: AXComponent, useExisting: AXFormComponent }], styles: ["form{height:inherit}\n"] }]
|
|
243
231
|
}], ctorParameters: () => [], propDecorators: { labelMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelMode", required: false }] }], look: [{ type: i0.Input, args: [{ isSignal: true, alias: "look", required: false }] }], content: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => AXFormFieldComponent), { ...{ descendants: true }, isSignal: true }] }], messageStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "messageStyle", required: false }] }], onValidate: [{
|
|
244
232
|
type: Output
|
|
245
233
|
}], updateOnChange: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-form.mjs","sources":["../../../../packages/components/form/src/lib/form.component.ts","../../../../packages/components/form/src/lib/form-field.component.ts","../../../../packages/components/form/src/lib/form.config.ts","../../../../packages/components/form/src/lib/validation-rule.directive.ts","../../../../packages/components/form/src/lib/validation-summary.component.ts","../../../../packages/components/form/src/lib/form.module.ts","../../../../packages/components/form/src/acorex-components-form.ts"],"sourcesContent":["import {\n AXComponent,\n AXEvent,\n AXStyleLookType,\n AXValuableComponent,\n AXValueChangedEvent,\n MXValueComponent,\n} from '@acorex/cdk/common';\nimport { AXValidationSummary } from '@acorex/core/validation';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewEncapsulation,\n afterNextRender,\n contentChildren,\n effect,\n input,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AXFormFieldComponent } from './form-field.component';\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXFormValidationEvent extends AXEvent {\n result: AXValidationSummary;\n}\n\n/**\n * Contains native event\n * @category Events\n */\nexport type AXFormUpdateOn = 'change' | 'blur' | 'submit';\nexport type AXFormMessageStyle = 'bottom' | 'float';\nexport type AXLabelMode = 'static' | 'floating' | 'over';\n\n/**\n * The AXForm is a component which detects user interaction and triggers a corresponding event\n *\n * @category Components\n */\n@Component({\n selector: 'ax-form',\n template: `<form (submit)=\"_handleSubmit($event)\" (reset)=\"_handleReset()\" class=\"ax-{{ messageStyle() }}-error\">\n <ng-content></ng-content>\n </form>`,\n inputs: ['disabled', 'readonly'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXComponent, useExisting: AXFormComponent }],\n // styles: `\n // form {\n // height: 100%;\n // }\n // `,\n})\nexport class AXFormComponent extends MXValueComponent implements OnDestroy, AfterViewInit {\n /**\n * Specifies the mode of the label in the form field.\n * @defaultValue 'static'\n */\n readonly labelMode = input<AXLabelMode>('static');\n\n readonly look = input<AXStyleLookType>(null);\n\n content = contentChildren(AXFormFieldComponent, { descendants: true });\n\n #applyLooks = effect(() => {\n const currentLook = this.look();\n if (!currentLook) return;\n this.content().forEach((item: any) => {\n if (item.input) {\n item.input.look = currentLook;\n }\n });\n });\n\n #init = afterNextRender(() => {\n this.content().forEach((item: any) => {\n if (item.input?.readonly === null) {\n item.input.readonly = this.readonly;\n }\n if (item.input?.disabled === null) {\n item.input.disabled = this.disabled;\n }\n });\n this.disabledChange.subscribe((disabled) => {\n this.content().forEach((item: any) => {\n item.input.disabled = disabled;\n });\n });\n this.readonlyChange.subscribe((readonly) => {\n this.content().forEach((item: any) => {\n item.input.readonly = readonly;\n });\n });\n });\n\n /**\n * Determines the style of the message in the form field.\n * @defaultValue 'bottom'\n */\n readonly messageStyle = input<AXFormMessageStyle>('bottom');\n\n /**\n * Emitted when the form is validated.\n *\n * @event\n */\n @Output()\n onValidate: EventEmitter<AXFormValidationEvent> = new EventEmitter<AXFormValidationEvent>();\n\n /**\n * Emitted when the form's update mode changes.\n *\n * @event\n */\n @Output()\n updateOnChange: EventEmitter<AXFormUpdateOn> = new EventEmitter<AXFormUpdateOn>();\n\n /**\n * @ignore\n */\n private _updateOn: AXFormUpdateOn = 'blur';\n\n /**\n * Determines when the form should be updated.\n */\n @Input()\n public get updateOn(): AXFormUpdateOn {\n return this._updateOn;\n }\n\n /**\n * Sets the criteria for when the form should be updated.\n * @param v The criteria to set (e.g., 'change', 'blur').\n */\n public set updateOn(v: AXFormUpdateOn) {\n this.setOption({\n name: 'updateOn',\n value: v,\n afterCallback: () => {\n this._bindEvents();\n },\n });\n }\n\n inUserInteractionActive = input(true);\n\n /**\n * @ignore\n */\n private _subs: Subscription[] = [];\n\n /**\n * @ignore\n */\n protected async _handleSubmit(e: SubmitEvent) {\n e.preventDefault();\n await this.validate();\n }\n\n /**\n * @ignore\n */\n protected _handleReset() {\n this.reset();\n }\n\n /**\n * @ignore\n */\n constructor() {\n super();\n }\n\n ngAfterViewInit(): void {\n this._bindEvents();\n }\n\n private _bindEvents() {\n this._clearSubs();\n const widgets = this.content();\n\n widgets.forEach((w: any) => {\n const input = w?.input;\n if (!input) return;\n\n const shouldValidate = () => this.updateOn === 'change';\n const applyUpdate = () => (shouldValidate() ? input.validate() : input.resetErrors());\n\n if (this.updateOn === 'blur') {\n this._subs.push(input.onBlur?.subscribe(() => input.validate()));\n return;\n }\n\n this._subs.push(\n input.onValueChanged?.subscribe((e: AXValueChangedEvent) => {\n // Only gate on user interaction when that mode is active\n if (this.inUserInteractionActive() && !e.isUserInteraction) return;\n applyUpdate();\n }),\n );\n });\n }\n\n /**\n * @ignore\n */\n private _clearSubs() {\n this._subs.forEach((c) => c?.unsubscribe());\n this._subs = [];\n }\n\n /**\n * @ignore\n */\n private get fields(): AXValuableComponent[] {\n return Array.from(this.getHostElement().querySelectorAll('[ax-form-item=\"true\"]'))\n .map((c) => (c as any).__axContext__)\n .filter((c) => c != null);\n }\n\n /**\n * Validates the form fields.\n *\n * @param names - Optional array of field names to validate.\n * @returns Promise<AXValidationSummary> - Promise that resolves with validation results.\n */\n override async validate(...names: string[]): Promise<AXValidationSummary> {\n const results = await Promise.all(\n this.fields\n .filter((c) => names == null || names.length == 0 || names.includes(c.name))\n .map((field) => field.validate()),\n );\n // Merge all validation summaries into one\n const mergedSummary: AXValidationSummary = {\n result: results.every((res) => res.result),\n rules: results.flatMap((res) => res.rules),\n };\n this._emitOnValidateEvent(mergedSummary);\n return mergedSummary;\n }\n\n /**\n * @ignore\n */\n private _emitOnValidateEvent(e: AXValidationSummary) {\n this.onValidate.emit({\n component: this,\n result: e,\n htmlElement: this.getHostElement(),\n });\n }\n\n /**\n * Resets all form fields without clearing errors.\n *\n * @returns void - No return value. Form fields are reset to their initial values.\n */\n override reset() {\n this.fields.forEach((c) => c.reset(false));\n this.fields.forEach((c) => c.resetErrors());\n }\n\n /**\n * Resets validation errors for all form fields.\n *\n * @returns void - No return value. All validation errors are cleared.\n */\n override resetErrors() {\n this.fields.forEach((c) => c.resetErrors());\n }\n\n /**\n * @ignore\n */\n override ngOnDestroy(): void {\n this._clearSubs();\n }\n}\n","import { AXComponent, AXValuableComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n HostBinding,\n ViewContainerRef,\n ViewEncapsulation,\n WritableSignal,\n afterNextRender,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AXFormComponent, AXLabelMode } from './form.component';\n\n/**\n * A container component for form fields that provides styling and structure.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-form-field',\n template: `<ng-content></ng-content>`,\n styleUrls: ['./form-field.component.compiled.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [AXUnsubscriber, { provide: AXComponent, useExisting: AXFormFieldComponent }],\n})\nexport class AXFormFieldComponent extends MXBaseComponent implements AfterContentChecked {\n /**\n * Specifies the mode of the label in the form field.\n * @defaultValue 'static'\n */\n readonly labelMode = input<AXLabelMode>('static');\n\n /**\n * @ignore\n */\n protected _labelMode: WritableSignal<AXLabelMode> = signal(this.labelMode());\n\n private unsubscriber = inject(AXUnsubscriber);\n\n @ContentChild(AXValuableComponent)\n private input: AXValuableComponent;\n\n /**\n * @ignore\n */\n @ContentChild(AXLabelComponent)\n private label: AXLabelComponent;\n\n private form = inject(AXFormComponent, { optional: true });\n\n private host = inject(ViewContainerRef);\n\n /**\n * @ignore\n */\n protected prefix: HTMLElement;\n\n /**\n * @ignore\n */\n constructor() {\n super();\n\n afterNextRender(() => {\n this.setRequired();\n this.listeningEvent();\n // this.calcIndentSize();\n this.autoSetLabelAssociation();\n });\n\n effect(() => {\n this.setLabelMode();\n });\n }\n\n ngAfterContentChecked(): void {\n // this.calcIndentSize();\n }\n\n /**\n * Calculates and sets the indentation size for the label based on the width of the prefix element.\n * @ignore\n */\n protected calcIndentSize() {\n const prefix = (this.input as any)?.getHostElement()?.querySelector('ax-prefix') as HTMLElement;\n\n if (prefix && this.label) {\n this.label.getHostElement().style.insetInlineStart = `calc(${prefix?.clientWidth}px + calc(var(--spacing) * 2) + calc(var(--spacing) * 3))`;\n this.label.getHostElement().style.paddingInline = '0px';\n }\n }\n\n /**\n * Sets the required attribute for the input field based on validation rules.\n * Automatically updates if validation rules change.\n * @ignore\n */\n protected setRequired() {\n this.autoSetRequired();\n this.input?.validationRulesChange.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n this.autoSetRequired();\n });\n }\n /**\n * Sets the label mode based on the form's label mode configuration.\n * @ignore\n */\n protected setLabelMode() {\n this._labelMode.set(this.form?.labelMode());\n }\n\n /**\n * Subscribes to focus and blur events on the input element.\n * Adds or removes the 'ax-state-focused' class to/from the host element based on the focus state.\n * @ignone\n */\n protected listeningEvent() {\n if (this.input instanceof AXCheckBoxComponent) return;\n const focusEvent = this.input?.['onFocus'] as Subject<any>;\n focusEvent?.subscribe((e) => {\n // this.handleFloating('focus');\n this.host.element.nativeElement.classList.add('ax-state-focused');\n });\n //\n const blurEvent = this.input?.['onBlur'] as Subject<any>;\n blurEvent?.subscribe((e) => {\n // this.handleFloating('blur');\n this.host.element.nativeElement.classList.remove('ax-state-focused');\n });\n }\n // protected handleFloating(mode: 'focus' | 'blur') {\n // const _host = this.host.element.nativeElement as HTMLElement;\n // const placeholder = this.input;\n\n // switch (mode) {\n // case 'focus':\n // _host.classList.add('ax-state-floating');\n // this.label.getHostElement().style.insetInlineStart = 'inherit';\n\n // break;\n // case 'blur':\n // _host.classList.remove('ax-state-floating');\n\n // break;\n // }\n // }\n\n /**\n * @ignore\n */\n private autoSetRequired() {\n if (this.label && this.input) {\n if (this.label.required == null || this.label['autoSetRequired']) {\n this.label.required = this.input.isRequired;\n this.label['autoSetRequired'] = true;\n }\n }\n }\n\n /**\n * @ignore\n */\n private autoSetLabelAssociation() {\n if (this.label && this.input) {\n this.label.for = this.input as any;\n }\n }\n\n /**\n * @ignore\n */\n @HostBinding('class')\n get __hostClass(): string[] {\n let hasValue;\n let isCheckbox = this.input instanceof AXCheckBoxComponent;\n\n if (this.input) {\n if (this.input instanceof AXSelectBoxComponent && this.input.multiple) {\n hasValue = (this.input as any).value?.length;\n } else {\n hasValue = this.input.value;\n }\n }\n\n if (isCheckbox) {\n return [`ax-state-static-label`];\n } else {\n return [`ax-state-${this._labelMode()}-label`, `${hasValue && 'ax-state-has-value'}`];\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface AXFormConfig {}\n\nexport const AX_FORM_CONFIG = new InjectionToken<AXFormConfig>('AX_FORM_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXFormDefaultConfig;\n },\n});\n\nexport const AXFormDefaultConfig: AXFormConfig = {};\n\nexport type PartialFormConfig = Partial<AXFormConfig>;\n\nexport function formConfig(config: PartialFormConfig = {}): AXFormConfig {\n const result = {\n ...AXFormDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { AXValuableComponent } from '@acorex/cdk/common';\nimport { AXValidationRuleOptions } from '@acorex/core/validation';\nimport { Directive, effect, inject, input, OnDestroy } from '@angular/core';\n\n@Directive({ selector: 'ax-validation-rule' })\nexport class AXValidationRuleDirective implements OnDestroy {\n private host = inject(AXValuableComponent);\n\n rule = input<string>();\n options = input<Omit<AXValidationRuleOptions, 'message'>>();\n message = input<string>();\n disabled = input(false);\n\n #disabledChanged = effect(() => {\n if (this.disabled()) {\n this.removeValidation();\n } else {\n this.addValidation();\n }\n });\n\n ngOnDestroy() {\n this.removeValidation();\n }\n\n private addValidation() {\n this.host.addValidationRule({ rule: this.rule(), disabled: this.disabled(), options: this.ruleOptions });\n }\n private removeValidation() {\n this.host.removeValidationRule({\n rule: this.rule(),\n disabled: this.disabled(),\n options: this.ruleOptions,\n });\n }\n\n private get ruleOptions(): AXValidationRuleOptions {\n return Object.assign({ message: this.message(), name: this.host.name }, this.options());\n }\n}\n","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXAlertComponent } from '@acorex/components/alert';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnDestroy, ViewEncapsulation, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AXFormComponent, AXFormValidationEvent } from './form.component';\n\nexport type AXValidationSummaryDisplayMode = 'toast' | 'alert';\n\n/**\n * Displays validation summaries in the form of an alert.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-validation-summary',\n template: `\n @if (displayMode === 'alert' && _content) {\n <ax-alert color=\"danger\" [timeOut]=\"_timeOut\" #a (onClosed)=\"_handleOnDismissed()\">\n <ax-icon></ax-icon>\n <ax-title>{{ title | translate | async }}</ax-title>\n <ax-content>\n <div [innerHTML]=\"_content\"></div>\n </ax-content>\n <ax-footer>\n <ax-suffix>\n <ax-button text=\"Dismiss\" (onClick)=\"a.close()\"></ax-button>\n </ax-suffix>\n </ax-footer>\n </ax-alert>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n AXAlertComponent,\n AXDecoratorIconComponent,\n AXDecoratorGenericComponent,\n AXButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXValidationSummaryComponent }],\n})\nexport class AXValidationSummaryComponent extends MXBaseComponent implements OnDestroy {\n private _tosatService = inject(AXToastService);\n private host = inject<AXFormComponent>(AXFormComponent, { optional: true });\n private translateService = inject(AXTranslationService);\n\n /**\n * @ignore\n */\n protected _content?: string = null;\n\n /**\n * @ignore\n */\n private _title = '@acorex:validation.messages.title';\n\n /**\n * The title of the validation summary alert.\n */\n @Input()\n public get title(): string {\n return this._title;\n }\n\n /**\n * Sets the title of the validation summary alert.\n *\n * @param v The title to be set.\n */\n public set title(v: string) {\n this._title = v;\n }\n\n /**\n * Specifies the display mode for the validation summary.\n *\n * @defaultValue 'toast'\n */\n @Input()\n displayMode: AXValidationSummaryDisplayMode = 'toast';\n\n /**\n * Specifies the time in milliseconds before the validation summary automatically hides.\n */\n @Input()\n timeOut?: number;\n\n /**\n * Determines whether the validation summary should automatically hide after a specified time.\n * @defaultValue false\n */\n @Input()\n autoHide = false;\n\n /**\n * @ignore\n */\n protected _timeOut: number;\n\n /**\n * @ignore\n */\n private sub: Subscription;\n\n /**\n * @ignore\n */\n constructor() {\n super();\n const host = this.host;\n\n //\n this.sub = host.onValidate.subscribe(async (e: AXFormValidationEvent) => {\n if (e.result.result) {\n this._content = null;\n } else {\n const failedRules = e.result.rules.filter((c) => !c.result && c.message);\n\n this._content = `<ul>${failedRules.map((c) => this.formatRule({ title: c['title'] as string, message: c.message })).join('')}</ul>`;\n this._timeOut = this.autoHide ? (this.timeOut ?? Math.max(failedRules.length * 1000, 2000)) : 0;\n\n if (this.displayMode == 'toast') {\n this._tosatService.show({\n color: 'danger',\n closeButton: true,\n timeOut: this._timeOut,\n timeOutProgress: true,\n content: this._content,\n title: await this.translateService.translateAsync(this.title),\n location: 'bottom-center',\n });\n }\n }\n this.cdr.markForCheck();\n });\n }\n\n /**\n * @ignore\n */\n private formatRule(rule: { title?: string; message: string }): string {\n return rule.title ? `<li><b>${rule.title}:</b> ${rule.message}</li>` : `<li>${rule.message}</li>`;\n }\n\n /**\n * @ignore\n */\n protected _handleOnDismissed() {\n this._content = null;\n }\n\n /**\n * @ignore\n */\n ngOnDestroy() {\n this.sub?.unsubscribe();\n }\n}\n","import { AXAlertModule } from '@acorex/components/alert';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXFormFieldComponent } from './form-field.component';\nimport { AXFormComponent } from './form.component';\nimport { AXValidationRuleDirective } from './validation-rule.directive';\nimport { AXValidationSummaryComponent } from './validation-summary.component';\n\n@NgModule({\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXAlertModule,\n AXButtonModule,\n AXValidationModule,\n AXTranslationModule,\n AXFormFieldComponent,\n AXFormComponent,\n AXValidationRuleDirective,\n AXValidationSummaryComponent,\n ],\n exports: [AXFormFieldComponent, AXFormComponent, AXValidationRuleDirective, AXValidationSummaryComponent],\n providers: [],\n})\nexport class AXFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-form.mjs","sources":["../../../../packages/components/form/src/lib/form.component.ts","../../../../packages/components/form/src/lib/form-field.component.ts","../../../../packages/components/form/src/lib/form.config.ts","../../../../packages/components/form/src/lib/validation-rule.directive.ts","../../../../packages/components/form/src/lib/validation-summary.component.ts","../../../../packages/components/form/src/lib/form.module.ts","../../../../packages/components/form/src/acorex-components-form.ts"],"sourcesContent":["import {\n AXComponent,\n AXEvent,\n AXStyleLookType,\n AXValuableComponent,\n AXValueChangedEvent,\n MXValueComponent,\n} from '@acorex/cdk/common';\nimport { AXValidationSummary } from '@acorex/core/validation';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewEncapsulation,\n afterNextRender,\n contentChildren,\n effect,\n input,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AXFormFieldComponent } from './form-field.component';\n\n/**\n * Contains native event\n * @category Events\n */\nexport class AXFormValidationEvent extends AXEvent {\n result: AXValidationSummary;\n}\n\n/**\n * Contains native event\n * @category Events\n */\nexport type AXFormUpdateOn = 'change' | 'blur' | 'submit';\nexport type AXFormMessageStyle = 'bottom' | 'float';\nexport type AXLabelMode = 'static' | 'floating' | 'over';\n\n/**\n * The AXForm is a component which detects user interaction and triggers a corresponding event\n *\n * @category Components\n */\n@Component({\n selector: 'ax-form',\n template: `<form (submit)=\"_handleSubmit($event)\" (reset)=\"_handleReset()\" class=\"ax-{{ messageStyle() }}-error\">\n <ng-content></ng-content>\n </form>`,\n inputs: ['disabled', 'readonly'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: AXComponent, useExisting: AXFormComponent }],\n styles: `\n form {\n height: inherit;\n }\n `,\n})\nexport class AXFormComponent extends MXValueComponent implements OnDestroy, AfterViewInit {\n /**\n * Specifies the mode of the label in the form field.\n * @defaultValue 'static'\n */\n readonly labelMode = input<AXLabelMode>('static');\n\n readonly look = input<AXStyleLookType>(null);\n\n content = contentChildren(AXFormFieldComponent, { descendants: true });\n\n #applyLooks = effect(() => {\n const currentLook = this.look();\n if (!currentLook) return;\n this.content().forEach((item: any) => {\n if (item.input) {\n item.input.look = currentLook;\n }\n });\n });\n\n #init = afterNextRender(() => {\n this.content().forEach((item: any) => {\n if (item.input?.readonly === null) {\n item.input.readonly = this.readonly;\n }\n if (item.input?.disabled === null) {\n item.input.disabled = this.disabled;\n }\n });\n this.disabledChange.subscribe((disabled) => {\n this.content().forEach((item: any) => {\n item.input.disabled = disabled;\n });\n });\n this.readonlyChange.subscribe((readonly) => {\n this.content().forEach((item: any) => {\n item.input.readonly = readonly;\n });\n });\n });\n\n /**\n * Determines the style of the message in the form field.\n * @defaultValue 'bottom'\n */\n readonly messageStyle = input<AXFormMessageStyle>('bottom');\n\n /**\n * Emitted when the form is validated.\n *\n * @event\n */\n @Output()\n onValidate: EventEmitter<AXFormValidationEvent> = new EventEmitter<AXFormValidationEvent>();\n\n /**\n * Emitted when the form's update mode changes.\n *\n * @event\n */\n @Output()\n updateOnChange: EventEmitter<AXFormUpdateOn> = new EventEmitter<AXFormUpdateOn>();\n\n /**\n * @ignore\n */\n private _updateOn: AXFormUpdateOn = 'blur';\n\n /**\n * Determines when the form should be updated.\n */\n @Input()\n public get updateOn(): AXFormUpdateOn {\n return this._updateOn;\n }\n\n /**\n * Sets the criteria for when the form should be updated.\n * @param v The criteria to set (e.g., 'change', 'blur').\n */\n public set updateOn(v: AXFormUpdateOn) {\n this.setOption({\n name: 'updateOn',\n value: v,\n afterCallback: () => {\n this._bindEvents();\n },\n });\n }\n\n inUserInteractionActive = input(true);\n\n /**\n * @ignore\n */\n private _subs: Subscription[] = [];\n\n /**\n * @ignore\n */\n protected async _handleSubmit(e: SubmitEvent) {\n e.preventDefault();\n await this.validate();\n }\n\n /**\n * @ignore\n */\n protected _handleReset() {\n this.reset();\n }\n\n /**\n * @ignore\n */\n constructor() {\n super();\n }\n\n ngAfterViewInit(): void {\n this._bindEvents();\n }\n\n private _bindEvents() {\n this._clearSubs();\n const widgets = this.content();\n\n widgets.forEach((w: any) => {\n const input = w?.input;\n if (!input) return;\n\n const shouldValidate = () => this.updateOn === 'change';\n const applyUpdate = () => (shouldValidate() ? input.validate() : input.resetErrors());\n\n if (this.updateOn === 'blur') {\n this._subs.push(input.onBlur?.subscribe(() => input.validate()));\n return;\n }\n\n this._subs.push(\n input.onValueChanged?.subscribe((e: AXValueChangedEvent) => {\n // Only gate on user interaction when that mode is active\n if (this.inUserInteractionActive() && !e.isUserInteraction) return;\n applyUpdate();\n }),\n );\n });\n }\n\n /**\n * @ignore\n */\n private _clearSubs() {\n this._subs.forEach((c) => c?.unsubscribe());\n this._subs = [];\n }\n\n /**\n * @ignore\n */\n private get fields(): AXValuableComponent[] {\n return Array.from(this.getHostElement().querySelectorAll('[ax-form-item=\"true\"]'))\n .map((c) => (c as any).__axContext__)\n .filter((c) => c != null);\n }\n\n /**\n * Validates the form fields.\n *\n * @param names - Optional array of field names to validate.\n * @returns Promise<AXValidationSummary> - Promise that resolves with validation results.\n */\n override async validate(...names: string[]): Promise<AXValidationSummary> {\n const results = await Promise.all(\n this.fields\n .filter((c) => names == null || names.length == 0 || names.includes(c.name))\n .map((field) => field.validate()),\n );\n // Merge all validation summaries into one\n const mergedSummary: AXValidationSummary = {\n result: results.every((res) => res.result),\n rules: results.flatMap((res) => res.rules),\n };\n this._emitOnValidateEvent(mergedSummary);\n return mergedSummary;\n }\n\n /**\n * @ignore\n */\n private _emitOnValidateEvent(e: AXValidationSummary) {\n this.onValidate.emit({\n component: this,\n result: e,\n htmlElement: this.getHostElement(),\n });\n }\n\n /**\n * Resets all form fields without clearing errors.\n *\n * @returns void - No return value. Form fields are reset to their initial values.\n */\n override reset() {\n this.fields.forEach((c) => c.reset(false));\n this.fields.forEach((c) => c.resetErrors());\n }\n\n /**\n * Resets validation errors for all form fields.\n *\n * @returns void - No return value. All validation errors are cleared.\n */\n override resetErrors() {\n this.fields.forEach((c) => c.resetErrors());\n }\n\n /**\n * @ignore\n */\n override ngOnDestroy(): void {\n this._clearSubs();\n }\n}\n","import { AXComponent, AXValuableComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXCheckBoxComponent } from '@acorex/components/check-box';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n HostBinding,\n ViewContainerRef,\n ViewEncapsulation,\n WritableSignal,\n afterNextRender,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { AXFormComponent, AXLabelMode } from './form.component';\n\n/**\n * A container component for form fields that provides styling and structure.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-form-field',\n template: `<ng-content></ng-content>`,\n styleUrls: ['./form-field.component.compiled.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [AXUnsubscriber, { provide: AXComponent, useExisting: AXFormFieldComponent }],\n})\nexport class AXFormFieldComponent extends MXBaseComponent implements AfterContentChecked {\n /**\n * Specifies the mode of the label in the form field.\n * @defaultValue 'static'\n */\n readonly labelMode = input<AXLabelMode>('static');\n\n /**\n * @ignore\n */\n protected _labelMode: WritableSignal<AXLabelMode> = signal(this.labelMode());\n\n private unsubscriber = inject(AXUnsubscriber);\n\n @ContentChild(AXValuableComponent)\n private input: AXValuableComponent;\n\n /**\n * @ignore\n */\n @ContentChild(AXLabelComponent)\n private label: AXLabelComponent;\n\n private form = inject(AXFormComponent, { optional: true });\n\n private host = inject(ViewContainerRef);\n\n /**\n * @ignore\n */\n protected prefix: HTMLElement;\n\n /**\n * @ignore\n */\n constructor() {\n super();\n\n afterNextRender(() => {\n this.setRequired();\n this.listeningEvent();\n // this.calcIndentSize();\n this.autoSetLabelAssociation();\n });\n\n effect(() => {\n this.setLabelMode();\n });\n }\n\n ngAfterContentChecked(): void {\n // this.calcIndentSize();\n }\n\n /**\n * Calculates and sets the indentation size for the label based on the width of the prefix element.\n * @ignore\n */\n protected calcIndentSize() {\n const prefix = (this.input as any)?.getHostElement()?.querySelector('ax-prefix') as HTMLElement;\n\n if (prefix && this.label) {\n this.label.getHostElement().style.insetInlineStart = `calc(${prefix?.clientWidth}px + calc(var(--spacing) * 2) + calc(var(--spacing) * 3))`;\n this.label.getHostElement().style.paddingInline = '0px';\n }\n }\n\n /**\n * Sets the required attribute for the input field based on validation rules.\n * Automatically updates if validation rules change.\n * @ignore\n */\n protected setRequired() {\n this.autoSetRequired();\n this.input?.validationRulesChange.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n this.autoSetRequired();\n });\n }\n /**\n * Sets the label mode based on the form's label mode configuration.\n * @ignore\n */\n protected setLabelMode() {\n this._labelMode.set(this.form?.labelMode());\n }\n\n /**\n * Subscribes to focus and blur events on the input element.\n * Adds or removes the 'ax-state-focused' class to/from the host element based on the focus state.\n * @ignone\n */\n protected listeningEvent() {\n if (this.input instanceof AXCheckBoxComponent) return;\n const focusEvent = this.input?.['onFocus'] as Subject<any>;\n focusEvent?.subscribe((e) => {\n // this.handleFloating('focus');\n this.host.element.nativeElement.classList.add('ax-state-focused');\n });\n //\n const blurEvent = this.input?.['onBlur'] as Subject<any>;\n blurEvent?.subscribe((e) => {\n // this.handleFloating('blur');\n this.host.element.nativeElement.classList.remove('ax-state-focused');\n });\n }\n // protected handleFloating(mode: 'focus' | 'blur') {\n // const _host = this.host.element.nativeElement as HTMLElement;\n // const placeholder = this.input;\n\n // switch (mode) {\n // case 'focus':\n // _host.classList.add('ax-state-floating');\n // this.label.getHostElement().style.insetInlineStart = 'inherit';\n\n // break;\n // case 'blur':\n // _host.classList.remove('ax-state-floating');\n\n // break;\n // }\n // }\n\n /**\n * @ignore\n */\n private autoSetRequired() {\n if (this.label && this.input) {\n if (this.label.required == null || this.label['autoSetRequired']) {\n this.label.required = this.input.isRequired;\n this.label['autoSetRequired'] = true;\n }\n }\n }\n\n /**\n * @ignore\n */\n private autoSetLabelAssociation() {\n if (this.label && this.input) {\n this.label.for = this.input as any;\n }\n }\n\n /**\n * @ignore\n */\n @HostBinding('class')\n get __hostClass(): string[] {\n let hasValue;\n let isCheckbox = this.input instanceof AXCheckBoxComponent;\n\n if (this.input) {\n if (this.input instanceof AXSelectBoxComponent && this.input.multiple) {\n hasValue = (this.input as any).value?.length;\n } else {\n hasValue = this.input.value;\n }\n }\n\n if (isCheckbox) {\n return [`ax-state-static-label`];\n } else {\n return [`ax-state-${this._labelMode()}-label`, `${hasValue && 'ax-state-has-value'}`];\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface AXFormConfig {}\n\nexport const AX_FORM_CONFIG = new InjectionToken<AXFormConfig>('AX_FORM_CONFIG', {\n providedIn: 'root',\n factory: () => {\n return AXFormDefaultConfig;\n },\n});\n\nexport const AXFormDefaultConfig: AXFormConfig = {};\n\nexport type PartialFormConfig = Partial<AXFormConfig>;\n\nexport function formConfig(config: PartialFormConfig = {}): AXFormConfig {\n const result = {\n ...AXFormDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { AXValuableComponent } from '@acorex/cdk/common';\nimport { AXValidationRuleOptions } from '@acorex/core/validation';\nimport { Directive, effect, inject, input, OnDestroy } from '@angular/core';\n\n@Directive({ selector: 'ax-validation-rule' })\nexport class AXValidationRuleDirective implements OnDestroy {\n private host = inject(AXValuableComponent);\n\n rule = input<string>();\n options = input<Omit<AXValidationRuleOptions, 'message'>>();\n message = input<string>();\n disabled = input(false);\n\n #disabledChanged = effect(() => {\n if (this.disabled()) {\n this.removeValidation();\n } else {\n this.addValidation();\n }\n });\n\n ngOnDestroy() {\n this.removeValidation();\n }\n\n private addValidation() {\n this.host.addValidationRule({ rule: this.rule(), disabled: this.disabled(), options: this.ruleOptions });\n }\n private removeValidation() {\n this.host.removeValidationRule({\n rule: this.rule(),\n disabled: this.disabled(),\n options: this.ruleOptions,\n });\n }\n\n private get ruleOptions(): AXValidationRuleOptions {\n return Object.assign({ message: this.message(), name: this.host.name }, this.options());\n }\n}\n","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXAlertComponent } from '@acorex/components/alert';\nimport { AXButtonComponent } from '@acorex/components/button';\nimport { AXDecoratorGenericComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnDestroy, ViewEncapsulation, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { AXFormComponent, AXFormValidationEvent } from './form.component';\n\nexport type AXValidationSummaryDisplayMode = 'toast' | 'alert';\n\n/**\n * Displays validation summaries in the form of an alert.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-validation-summary',\n template: `\n @if (displayMode === 'alert' && _content) {\n <ax-alert color=\"danger\" [timeOut]=\"_timeOut\" #a (onClosed)=\"_handleOnDismissed()\">\n <ax-icon></ax-icon>\n <ax-title>{{ title | translate | async }}</ax-title>\n <ax-content>\n <div [innerHTML]=\"_content\"></div>\n </ax-content>\n <ax-footer>\n <ax-suffix>\n <ax-button text=\"Dismiss\" (onClick)=\"a.close()\"></ax-button>\n </ax-suffix>\n </ax-footer>\n </ax-alert>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n AXAlertComponent,\n AXDecoratorIconComponent,\n AXDecoratorGenericComponent,\n AXButtonComponent,\n AsyncPipe,\n AXTranslatorPipe,\n ],\n providers: [{ provide: AXComponent, useExisting: AXValidationSummaryComponent }],\n})\nexport class AXValidationSummaryComponent extends MXBaseComponent implements OnDestroy {\n private _tosatService = inject(AXToastService);\n private host = inject<AXFormComponent>(AXFormComponent, { optional: true });\n private translateService = inject(AXTranslationService);\n\n /**\n * @ignore\n */\n protected _content?: string = null;\n\n /**\n * @ignore\n */\n private _title = '@acorex:validation.messages.title';\n\n /**\n * The title of the validation summary alert.\n */\n @Input()\n public get title(): string {\n return this._title;\n }\n\n /**\n * Sets the title of the validation summary alert.\n *\n * @param v The title to be set.\n */\n public set title(v: string) {\n this._title = v;\n }\n\n /**\n * Specifies the display mode for the validation summary.\n *\n * @defaultValue 'toast'\n */\n @Input()\n displayMode: AXValidationSummaryDisplayMode = 'toast';\n\n /**\n * Specifies the time in milliseconds before the validation summary automatically hides.\n */\n @Input()\n timeOut?: number;\n\n /**\n * Determines whether the validation summary should automatically hide after a specified time.\n * @defaultValue false\n */\n @Input()\n autoHide = false;\n\n /**\n * @ignore\n */\n protected _timeOut: number;\n\n /**\n * @ignore\n */\n private sub: Subscription;\n\n /**\n * @ignore\n */\n constructor() {\n super();\n const host = this.host;\n\n //\n this.sub = host.onValidate.subscribe(async (e: AXFormValidationEvent) => {\n if (e.result.result) {\n this._content = null;\n } else {\n const failedRules = e.result.rules.filter((c) => !c.result && c.message);\n\n this._content = `<ul>${failedRules.map((c) => this.formatRule({ title: c['title'] as string, message: c.message })).join('')}</ul>`;\n this._timeOut = this.autoHide ? (this.timeOut ?? Math.max(failedRules.length * 1000, 2000)) : 0;\n\n if (this.displayMode == 'toast') {\n this._tosatService.show({\n color: 'danger',\n closeButton: true,\n timeOut: this._timeOut,\n timeOutProgress: true,\n content: this._content,\n title: await this.translateService.translateAsync(this.title),\n location: 'bottom-center',\n });\n }\n }\n this.cdr.markForCheck();\n });\n }\n\n /**\n * @ignore\n */\n private formatRule(rule: { title?: string; message: string }): string {\n return rule.title ? `<li><b>${rule.title}:</b> ${rule.message}</li>` : `<li>${rule.message}</li>`;\n }\n\n /**\n * @ignore\n */\n protected _handleOnDismissed() {\n this._content = null;\n }\n\n /**\n * @ignore\n */\n ngOnDestroy() {\n this.sub?.unsubscribe();\n }\n}\n","import { AXAlertModule } from '@acorex/components/alert';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXFormFieldComponent } from './form-field.component';\nimport { AXFormComponent } from './form.component';\nimport { AXValidationRuleDirective } from './validation-rule.directive';\nimport { AXValidationSummaryComponent } from './validation-summary.component';\n\n@NgModule({\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXAlertModule,\n AXButtonModule,\n AXValidationModule,\n AXTranslationModule,\n AXFormFieldComponent,\n AXFormComponent,\n AXValidationRuleDirective,\n AXValidationSummaryComponent,\n ],\n exports: [AXFormFieldComponent, AXFormComponent, AXValidationRuleDirective, AXValidationSummaryComponent],\n providers: [],\n})\nexport class AXFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/components",
|
|
3
|
-
"version": "21.0.1-next.
|
|
3
|
+
"version": "21.0.1-next.49",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@acorex/core": "21.0.1-next.
|
|
6
|
-
"@acorex/cdk": "21.0.1-next.
|
|
5
|
+
"@acorex/core": "21.0.1-next.49",
|
|
6
|
+
"@acorex/cdk": "21.0.1-next.49",
|
|
7
7
|
"@angular/common": ">=21.0.0",
|
|
8
8
|
"@angular/core": ">=21.0.0",
|
|
9
9
|
"@angular/cdk": ">=21.0.0",
|
|
@@ -14,12 +14,18 @@ type AXCommandItem = {
|
|
|
14
14
|
index?: number;
|
|
15
15
|
data?: any;
|
|
16
16
|
};
|
|
17
|
-
type
|
|
17
|
+
type forceId = {
|
|
18
|
+
id: string | number;
|
|
19
|
+
};
|
|
20
|
+
type AXCommandMenuItem<T extends forceId = AXCommandItem> = {
|
|
18
21
|
pinned?: {
|
|
19
|
-
title
|
|
20
|
-
items:
|
|
22
|
+
title?: string;
|
|
23
|
+
items: T[];
|
|
24
|
+
};
|
|
25
|
+
list: {
|
|
26
|
+
title?: string;
|
|
27
|
+
items: T[];
|
|
21
28
|
};
|
|
22
|
-
items: AXCommandItem[] | any[];
|
|
23
29
|
};
|
|
24
30
|
declare class AXCommandComponentEvent extends AXEvent {
|
|
25
31
|
data: AXCommandItem;
|