From 065abe61b4393f753f42b12da0a04e6bcb247ad4 Mon Sep 17 00:00:00 2001 From: lskramarov Date: Thu, 4 Jun 2026 21:15:31 +0300 Subject: [PATCH 01/12] chore: update eslint to v9 with flat config Replace the legacy .eslintrc.js/.eslintignore with a flat eslint.config.js and bump eslint to v9. Swap the unmaintained eslint-plugin-rxjs for the maintained eslint-plugin-rxjs-x fork (rxjs-x/* namespace) and adopt the typescript-eslint and angular-eslint umbrella packages. Preserve the previous lint behavior: disable the rxjs-x rules new to its recommended set (prefer-root-operators, prefer-observer), ignore .yarn (flat config lints .cjs by default), and restore no-unused-vars caughtErrors: 'none'. --- .eslintignore | 18 - .eslintrc.js | 532 ------------- eslint.config.js | 522 ++++++++++++ package.json | 19 +- .../components/app-switcher/app-switcher.ts | 2 +- .../dropdown/dropdown-trigger.directive.ts | 2 +- .../notification-center.ts | 2 +- packages/components/toast/toast.service.ts | 2 +- yarn.lock | 748 ++++++++---------- 9 files changed, 861 insertions(+), 986 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.js create mode 100644 eslint.config.js diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 3fabd0f9a..000000000 --- a/.eslintignore +++ /dev/null @@ -1,18 +0,0 @@ -dist -node_modules -coverage - -# eslint ignores root level "dot" files by default -!/.*.js - -# ignore build tokens -/apps/docs/src/styles/koobiq/default-theme/ - -# ignore nunjuck templates -/tools/api-gen/rendering/templates - -# ignore index.html -**/index.html - -# ignore mocks -**/mock.ts diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 0e15b32b9..000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,532 +0,0 @@ -// @ts-check - -const isCI = !!process.env.CI; - -/** - * @param {string} str - * @returns {string} - */ -const capitalizeFirst = (str) => str.charAt(0).toUpperCase() + str.slice(1); - -/** - * @see https://typescript-eslint.io/rules/naming-convention/#options - * - * @param {string} prefix - */ -const makeNamingConventionOptions = (prefix) => { - return [ - { selector: 'variable', format: ['camelCase', 'UPPER_CASE'], leadingUnderscore: 'allow' }, - { - selector: 'variable', - modifiers: ['exported'], - format: ['StrictPascalCase', 'UPPER_CASE'], - prefix: [prefix, `${prefix.toUpperCase()}_`] - }, - - { selector: 'function', format: ['camelCase'] }, - { selector: 'function', modifiers: ['exported'], format: ['StrictPascalCase'], prefix: [prefix] }, - - { selector: 'interface', format: ['PascalCase'] }, - { - selector: 'interface', - modifiers: ['exported'], - format: ['StrictPascalCase'], - prefix: [capitalizeFirst(prefix)] - }, - - { selector: 'typeLike', format: ['PascalCase'] }, - { - selector: 'typeLike', - modifiers: ['exported'], - format: ['StrictPascalCase'], - prefix: [capitalizeFirst(prefix)] - }, - - { selector: 'enum', format: ['PascalCase'] }, - { selector: 'enum', modifiers: ['exported'], format: ['StrictPascalCase'], prefix: [capitalizeFirst(prefix)] }, - { selector: 'enumMember', format: ['PascalCase'] }, - - { selector: 'class', format: ['PascalCase'] }, - { selector: 'class', modifiers: ['exported'], format: ['PascalCase'], prefix: [capitalizeFirst(prefix)] }, - { selector: 'classMethod', format: ['camelCase'] }, - { selector: 'classProperty', format: ['camelCase', 'UPPER_CASE'], leadingUnderscore: 'allow' } - ]; -}; - -/** - * @see https://eslint.org/docs/latest/rules/no-restricted-globals - */ -const noRestrictedGlobalsOptionsForSSR = (() => { - /** @type {Array} */ - const restrictedWindowGlobals = [ - 'window', - 'open', - 'close', - 'scroll', - 'scrollTo', - 'scrollBy', - 'requestAnimationFrame', - 'cancelAnimationFrame', - 'requestIdleCallback', - 'cancelIdleCallback', - 'getComputedStyle', - 'matchMedia', - 'navigator', - 'location', - 'history', - 'screen', - 'localStorage', - 'sessionStorage', - 'crypto', - 'caches', - 'performance', - 'speechSynthesis' - ]; - - const restrictedOptions = restrictedWindowGlobals.map((name) => ({ - name, - message: `Global property '${name}' is not available is SSR. Use 'KBQ_WINDOW' injection token from '@koobiq/components/core' instead.` - })); - - restrictedOptions.push({ - name: 'document', - message: `Global property 'document' is not available is SSR. Use 'DOCUMENT' injection token from '@angular/common' instead.` - }); - - return restrictedOptions; -})(); - -/** - * Rules for JavaScript and TypeScript files - * - * @type {import('eslint').Linter.ConfigOverride} - */ -const javascriptAndTypescriptRules = { - files: ['*.js', '*.ts'], - extends: [ - 'eslint:recommended', - 'plugin:promise/recommended' - ], - plugins: [ - '@stylistic' - ], - rules: { - // plugin:eslint - 'no-useless-escape': 0, - 'no-self-assign': 0, - 'no-prototype-builtins': 0, - 'no-console': 1, - - // plugin:promise - 'promise/catch-or-return': 0, - 'promise/always-return': 0, - - // @stylistic - '@stylistic/padding-line-between-statements': [ - 1, - { blankLine: 'always', next: 'block', prev: '*' }, - { blankLine: 'always', next: '*', prev: 'block' }, - { blankLine: 'always', next: 'block-like', prev: '*' }, - { blankLine: 'always', next: '*', prev: 'block-like' }, - { blankLine: 'always', next: 'return', prev: '*' }, - { blankLine: 'always', next: '*', prev: 'directive' }, - { blankLine: 'always', next: ['interface', 'type'], prev: '*' }, - { blankLine: 'always', next: '*', prev: ['const', 'let', 'var'] }, - { blankLine: 'always', next: 'class', prev: '*' }, - { blankLine: 'always', next: '*', prev: 'class' }, - { - blankLine: 'any', - next: ['const', 'let', 'var', 'export'], - prev: ['const', 'let', 'var', 'export'] - }, - { blankLine: 'any', next: ['case', 'default'], prev: '*' }, - { blankLine: 'any', next: '*', prev: ['case', 'default'] }, - { blankLine: 'any', next: 'directive', prev: 'directive' } - ] - } -}; - -/** - * Rules for TypeScript files - * - * @type {import('eslint').Linter.ConfigOverride} - */ -const typescriptRules = { - files: ['*.ts'], - parser: '@typescript-eslint/parser', - parserOptions: { - project: './tsconfig.eslint.json', - tsconfigRootDir: __dirname - }, - extends: [ - /** @see https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/eslintrc/all.ts */ - 'plugin:@typescript-eslint/recommended', - /** @see https://github.com/angular-eslint/angular-eslint/blob/main/packages/angular-eslint/src/configs/ts-all.ts */ - 'plugin:@angular-eslint/all', - 'plugin:@angular-eslint/template/process-inline-templates', - 'plugin:rxjs/recommended' - ], - rules: { - // plugin:@typescript-eslint - '@typescript-eslint/no-explicit-any': 0, - '@typescript-eslint/no-var-requires': 0, - '@typescript-eslint/no-unused-vars': [ - 1, - { - argsIgnorePattern: '^_' - } - ], - '@typescript-eslint/no-duplicate-enum-values': 0, - '@typescript-eslint/ban-tslint-comment': 1, - - // plugin:@angular-eslint - '@angular-eslint/component-class-suffix': 0, - '@angular-eslint/no-host-metadata-property': 0, - '@angular-eslint/directive-class-suffix': 0, - '@angular-eslint/no-output-rename': 0, - '@angular-eslint/no-inputs-metadata-property': 0, - '@angular-eslint/no-output-on-prefix': 0, - '@angular-eslint/no-input-rename': 0, - '@angular-eslint/no-outputs-metadata-property': 0, - '@angular-eslint/no-output-native': 0, - '@angular-eslint/prefer-on-push-component-change-detection': 0, - '@angular-eslint/relative-url-prefix': 0, - '@angular-eslint/component-max-inline-declarations': 0, - '@angular-eslint/consistent-component-styles': 0, - '@angular-eslint/use-component-view-encapsulation': 0, - '@angular-eslint/use-injectable-provided-in': 0, - '@angular-eslint/no-forward-ref': 0, - '@angular-eslint/no-conflicting-lifecycle': 0, - '@angular-eslint/no-attribute-decorator': 0, - '@angular-eslint/no-pipe-impure': 0, - '@angular-eslint/sort-ngmodule-metadata-arrays': 0, - '@angular-eslint/template/cyclomatic-complexity': 0, - - '@angular-eslint/prefer-signals': 0, - '@angular-eslint/prefer-output-emitter-ref': 0, - '@angular-eslint/prefer-inject': 0, - - // plugin:rxjs - 'rxjs/no-implicit-any-catch': 0, - 'rxjs/no-sharereplay': 0, - 'rxjs/no-internal': 0, - 'rxjs/no-unbound-methods': 0, - 'rxjs/no-topromise': 1, - 'rxjs/throw-error': 1 - } -}; - -/** - * Rules for Angular templates - * - * @type {import('eslint').Linter.ConfigOverride} - */ -const templateRules = { - files: ['*.html'], - extends: [ - /** @see https://github.com/angular-eslint/angular-eslint/blob/main/packages/angular-eslint/src/configs/template-all.ts */ - 'plugin:@angular-eslint/template/all' - ], - rules: { - // plugin:@angular-eslint/template - '@angular-eslint/template/no-autofocus': 0, - '@angular-eslint/template/elements-content': 0, - '@angular-eslint/template/click-events-have-key-events': 0, - '@angular-eslint/template/interactive-supports-focus': 0, - '@angular-eslint/template/label-has-associated-control': 0, - '@angular-eslint/template/i18n': 0, - '@angular-eslint/template/no-call-expression': 0, - '@angular-eslint/template/prefer-ngsrc': 0, - '@angular-eslint/template/no-inline-styles': 0, - '@angular-eslint/template/button-has-type': 0, - '@angular-eslint/template/no-interpolation-in-attributes': 0, - '@angular-eslint/template/no-any': 0, - '@angular-eslint/template/prefer-static-string-properties': 0, - '@angular-eslint/template/cyclomatic-complexity': 0, - // Allow combining a static `class`/`style` attribute with its `[class]`/`[style]` binding. - // Angular merges them via styling precedence, so this is a valid pattern (e.g. after the - // NgClass -> [class] migration). Genuine duplicates (two static `class`, two `[class]`) are - // still reported. - '@angular-eslint/template/no-duplicate-attributes': [ - 2, - { - allowStylePrecedenceDuplicates: true - } - ] - } -}; - -/** - * Override rules for packages/components-dev - * - * @type {import('eslint').Linter.ConfigOverride} - */ -const componentsDevRules = { - files: ['packages/components-dev/**/*.ts'], - rules: { - // plugin:eslint - 'no-restricted-globals': [ - 1, - ...noRestrictedGlobalsOptionsForSSR - ], - 'no-console': 0, - - // plugin:@angular-eslint - '@angular-eslint/directive-selector': [ - 1, - { - type: 'attribute', - prefix: 'dev', - style: 'camelCase' - } - ], - '@angular-eslint/component-selector': [ - 1, - { - type: 'element', - prefix: 'dev', - style: 'kebab-case' - } - ], - '@angular-eslint/use-component-selector': 1, - '@angular-eslint/prefer-on-push-component-change-detection': 1, - - // plugin:@typescript-eslint - '@typescript-eslint/naming-convention': [ - 1, - ...makeNamingConventionOptions('dev') - ] - } -}; - -/** - * Override rules for packages/docs-examples - * - * @type {import('eslint').Linter.ConfigOverride} - */ -const componentsExamplesRules = { - files: ['packages/docs-examples/**/*.ts'], - rules: { - // plugin:eslint - 'no-restricted-globals': [ - 1, - ...noRestrictedGlobalsOptionsForSSR - ], - 'no-console': 0, - - // plugin:@angular-eslint - '@angular-eslint/use-component-selector': 1, - '@angular-eslint/prefer-on-push-component-change-detection': 1 - } -}; - -/** - * Override rules for e2e - * - * @type {import('eslint').Linter.ConfigOverride} - */ -const e2eRules = { - files: ['*.playwright-spec.ts', '**/e2e.ts', 'packages/e2e/**/*.ts'], - rules: { - // plugin:eslint - // ignore `noRestrictedGlobalsOptionsForSSR` in e2e tests, because they are not executed in SSR context - 'no-restricted-globals': 0, - - // plugin:@angular-eslint - '@angular-eslint/directive-selector': [ - 1, - { - type: 'attribute', - prefix: 'e2e', - style: 'camelCase' - } - ], - '@angular-eslint/component-selector': [ - 1, - { - type: 'element', - prefix: 'e2e', - style: 'kebab-case' - } - ], - '@angular-eslint/use-component-selector': 1, - '@angular-eslint/prefer-on-push-component-change-detection': 1, - - // plugin:@typescript-eslint - '@typescript-eslint/naming-convention': [ - 1, - ...makeNamingConventionOptions('e2e') - ] - } -}; - -/** - * Override rules for packages/components - * - * @type {import('eslint').Linter.ConfigOverride} - */ -const componentsRules = { - files: ['packages/components/**/*.ts'], - rules: { - // plugin:eslint - 'no-restricted-globals': [ - 1, - ...noRestrictedGlobalsOptionsForSSR - ] - } -}; - -/** - * Override rules for apps/docs - * - * @type {import('eslint').Linter.ConfigOverride} - */ -const appDocsRules = { - files: ['apps/docs/**/*.ts'], - rules: { - // plugin:eslint - 'no-console': [1, { allow: ['warn', 'error'] }], - 'no-restricted-globals': [ - 1, - ...noRestrictedGlobalsOptionsForSSR - ], - - // plugin:@angular-eslint - '@angular-eslint/directive-selector': [ - 1, - { - type: 'attribute', - prefix: 'docs', - style: 'camelCase' - } - ], - '@angular-eslint/component-selector': [ - 1, - { - type: 'element', - prefix: 'docs', - style: 'kebab-case' - } - ], - '@angular-eslint/use-component-selector': 1, - - // plugin:@typescript-eslint - '@typescript-eslint/naming-convention': [ - 1, - ...makeNamingConventionOptions('docs') - ] - } -}; - -/** - * Override rules for specs - * - * @type {import('eslint').Linter.ConfigOverride} - */ -const specRules = { - files: ['*.spec.ts'], - rules: { - // plugin:eslint - // ignore `noRestrictedGlobalsOptionsForSSR` in specs, because they are not executed in SSR context - 'no-restricted-globals': 0, - - // plugin:@angular-eslint - '@angular-eslint/use-component-selector': 0, - '@angular-eslint/prefer-on-push-component-change-detection': 0 - } -}; - -/** - * Override rules for /tools - * - * @type {import('eslint').Linter.ConfigOverride} - */ -const toolsRules = { - files: ['tools/**/*.ts', 'tools/**/*.js'], - rules: { - // plugin:eslint - 'no-console': 0, - - // plugin:@typescript-eslint - // node-only build scripts may use require() for legacy CommonJS modules - '@typescript-eslint/no-require-imports': 0 - } -}; - -/** - * Override rules for /packages/schematics/ - * - * @type {import('eslint').Linter.ConfigOverride} - */ -const schematicsRules = { - files: ['packages/schematics/**/*.ts', 'packages/schematics/**/*.js'], - rules: { - // plugin:eslint - 'no-console': 0 - } -}; - -/** - * Override rules for /packages/cli/ - * - * @type {import('eslint').Linter.ConfigOverride} - */ -const cliRules = { - files: ['packages/cli/**/*.ts', 'packages/cli/**/*.js'], - rules: { - // plugin:eslint - 'no-console': 0, - - // plugin:@typescript-eslint - // node-only CLI scripts may use require() for legacy CommonJS modules - '@typescript-eslint/no-require-imports': 0 - } -}; - -/** @type {import('eslint').Linter.ConfigOverride} */ -const prettierRules = { - files: ['*.js', '*.ts', '*.html'], - extends: ['plugin:prettier/recommended'] -}; - -/** @type {import('eslint').Linter.Config} */ -const config = { - root: true, - env: { - es2022: true, - commonjs: true, - node: true - }, - plugins: [ - 'file-progress' - ], - extends: [ - 'plugin:@eslint-community/eslint-comments/recommended' - ], - rules: { - // plugin:file-progress - 'file-progress/activate': isCI ? 0 : 1, - - // plugin:@eslint-community/eslint-comments - '@eslint-community/eslint-comments/no-unused-disable': 1, - '@eslint-community/eslint-comments/disable-enable-pair': [1, { allowWholeFile: true }] - }, - overrides: [ - javascriptAndTypescriptRules, - typescriptRules, - templateRules, - appDocsRules, - componentsDevRules, - componentsExamplesRules, - componentsRules, - specRules, - e2eRules, - toolsRules, - schematicsRules, - cliRules, - // should be last - prettierRules - ] -}; - -module.exports = config; diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..7e5a4f39b --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,522 @@ +// @ts-check + +const eslint = require('@eslint/js'); +const tseslint = require('typescript-eslint'); +const angular = require('angular-eslint'); +const globals = require('globals'); +const stylistic = require('@stylistic/eslint-plugin'); +const promise = require('eslint-plugin-promise'); +// eslint-plugin-rxjs-x ships as transpiled ESM (the plugin object lives under `.default`) +const rxjs = require('eslint-plugin-rxjs-x').default; +const comments = require('@eslint-community/eslint-plugin-eslint-comments/configs'); +const progress = require('eslint-plugin-file-progress'); +const prettierRecommended = require('eslint-plugin-prettier/recommended'); + +const isCI = !!process.env.CI; + +/** + * @param {string} str + * @returns {string} + */ +const capitalizeFirst = (str) => str.charAt(0).toUpperCase() + str.slice(1); + +/** + * @see https://typescript-eslint.io/rules/naming-convention/#options + * + * @param {string} prefix + */ +const makeNamingConventionOptions = (prefix) => { + return [ + { selector: 'variable', format: ['camelCase', 'UPPER_CASE'], leadingUnderscore: 'allow' }, + { + selector: 'variable', + modifiers: ['exported'], + format: ['StrictPascalCase', 'UPPER_CASE'], + prefix: [prefix, `${prefix.toUpperCase()}_`] + }, + + { selector: 'function', format: ['camelCase'] }, + { selector: 'function', modifiers: ['exported'], format: ['StrictPascalCase'], prefix: [prefix] }, + + { selector: 'interface', format: ['PascalCase'] }, + { + selector: 'interface', + modifiers: ['exported'], + format: ['StrictPascalCase'], + prefix: [capitalizeFirst(prefix)] + }, + + { selector: 'typeLike', format: ['PascalCase'] }, + { + selector: 'typeLike', + modifiers: ['exported'], + format: ['StrictPascalCase'], + prefix: [capitalizeFirst(prefix)] + }, + + { selector: 'enum', format: ['PascalCase'] }, + { selector: 'enum', modifiers: ['exported'], format: ['StrictPascalCase'], prefix: [capitalizeFirst(prefix)] }, + { selector: 'enumMember', format: ['PascalCase'] }, + + { selector: 'class', format: ['PascalCase'] }, + { selector: 'class', modifiers: ['exported'], format: ['PascalCase'], prefix: [capitalizeFirst(prefix)] }, + { selector: 'classMethod', format: ['camelCase'] }, + { selector: 'classProperty', format: ['camelCase', 'UPPER_CASE'], leadingUnderscore: 'allow' } + ]; +}; + +/** + * @see https://eslint.org/docs/latest/rules/no-restricted-globals + */ +const noRestrictedGlobalsOptionsForSSR = (() => { + /** @type {Array} */ + const restrictedWindowGlobals = [ + 'window', + 'open', + 'close', + 'scroll', + 'scrollTo', + 'scrollBy', + 'requestAnimationFrame', + 'cancelAnimationFrame', + 'requestIdleCallback', + 'cancelIdleCallback', + 'getComputedStyle', + 'matchMedia', + 'navigator', + 'location', + 'history', + 'screen', + 'localStorage', + 'sessionStorage', + 'crypto', + 'caches', + 'performance', + 'speechSynthesis' + ]; + + const restrictedOptions = restrictedWindowGlobals.map((name) => ({ + name, + message: `Global property '${name}' is not available is SSR. Use 'KBQ_WINDOW' injection token from '@koobiq/components/core' instead.` + })); + + restrictedOptions.push({ + name: 'document', + message: `Global property 'document' is not available is SSR. Use 'DOCUMENT' injection token from '@angular/common' instead.` + }); + + return restrictedOptions; +})(); + +module.exports = tseslint.config( + // Global ignores (ported from .eslintignore) + { + ignores: [ + 'dist', + 'node_modules', + 'coverage', + // ignore Yarn's bundled release/plugin binaries (flat config lints .cjs by default, + // unlike the previous `--ext=.js,.ts,.html`) + '.yarn', + // ignore build tokens + 'apps/docs/src/styles/koobiq/default-theme/', + // ignore nunjuck templates + 'tools/api-gen/rendering/templates/**', + // ignore index.html + '**/index.html', + // ignore mocks + '**/mock.ts' + ] + }, + + // plugin:file-progress + { + plugins: { + 'file-progress': progress + }, + rules: { + 'file-progress/activate': isCI ? 0 : 1 + } + }, + + // plugin:@eslint-community/eslint-comments + comments.recommended, + { + rules: { + '@eslint-community/eslint-comments/no-unused-disable': 1, + '@eslint-community/eslint-comments/disable-enable-pair': [1, { allowWholeFile: true }] + } + }, + + // Rules for JavaScript and TypeScript files + { + files: ['**/*.js', '**/*.ts'], + extends: [ + eslint.configs.recommended, + promise.configs['flat/recommended'] + ], + plugins: { + '@stylistic': stylistic + }, + languageOptions: { + globals: { + ...globals.node, + ...globals.es2022 + } + }, + rules: { + // plugin:eslint + 'no-useless-escape': 0, + 'no-self-assign': 0, + 'no-prototype-builtins': 0, + 'no-console': 1, + + // plugin:promise + 'promise/catch-or-return': 0, + 'promise/always-return': 0, + + // @stylistic + '@stylistic/padding-line-between-statements': [ + 1, + { blankLine: 'always', next: 'block', prev: '*' }, + { blankLine: 'always', next: '*', prev: 'block' }, + { blankLine: 'always', next: 'block-like', prev: '*' }, + { blankLine: 'always', next: '*', prev: 'block-like' }, + { blankLine: 'always', next: 'return', prev: '*' }, + { blankLine: 'always', next: '*', prev: 'directive' }, + { blankLine: 'always', next: ['interface', 'type'], prev: '*' }, + { blankLine: 'always', next: '*', prev: ['const', 'let', 'var'] }, + { blankLine: 'always', next: 'class', prev: '*' }, + { blankLine: 'always', next: '*', prev: 'class' }, + { + blankLine: 'any', + next: ['const', 'let', 'var', 'export'], + prev: ['const', 'let', 'var', 'export'] + }, + { blankLine: 'any', next: ['case', 'default'], prev: '*' }, + { blankLine: 'any', next: '*', prev: ['case', 'default'] }, + { blankLine: 'any', next: 'directive', prev: 'directive' } + ] + } + }, + + // JavaScript files in this repo are CommonJS (require/module.exports) + { + files: ['**/*.js'], + languageOptions: { + sourceType: 'commonjs' + }, + rules: { + // ESLint 9 changed the `no-unused-vars` `caughtErrors` default from 'none' to 'all'. + // Restore the previous behavior so unused `catch` bindings are not newly reported. + 'no-unused-vars': ['error', { caughtErrors: 'none' }] + } + }, + + // Rules for TypeScript files + { + files: ['**/*.ts'], + extends: [ + /** @see https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/recommended.ts */ + tseslint.configs.recommended, + /** @see https://github.com/angular-eslint/angular-eslint/blob/main/packages/angular-eslint/src/configs/ts-all.ts */ + angular.configs.tsAll, + rxjs.configs.recommended + ], + processor: angular.processInlineTemplates, + languageOptions: { + parser: tseslint.parser, + parserOptions: { + project: ['tsconfig.eslint.json'], + tsconfigRootDir: __dirname + } + }, + rules: { + // plugin:@typescript-eslint + '@typescript-eslint/no-explicit-any': 0, + '@typescript-eslint/no-var-requires': 0, + '@typescript-eslint/no-unused-vars': [ + 1, + { + argsIgnorePattern: '^_' + } + ], + '@typescript-eslint/no-duplicate-enum-values': 0, + '@typescript-eslint/ban-tslint-comment': 1, + + // plugin:@angular-eslint + '@angular-eslint/component-class-suffix': 0, + '@angular-eslint/no-host-metadata-property': 0, + '@angular-eslint/directive-class-suffix': 0, + '@angular-eslint/no-output-rename': 0, + '@angular-eslint/no-inputs-metadata-property': 0, + '@angular-eslint/no-output-on-prefix': 0, + '@angular-eslint/no-input-rename': 0, + '@angular-eslint/no-outputs-metadata-property': 0, + '@angular-eslint/no-output-native': 0, + '@angular-eslint/prefer-on-push-component-change-detection': 0, + '@angular-eslint/relative-url-prefix': 0, + '@angular-eslint/component-max-inline-declarations': 0, + '@angular-eslint/consistent-component-styles': 0, + '@angular-eslint/use-component-view-encapsulation': 0, + '@angular-eslint/use-injectable-provided-in': 0, + '@angular-eslint/no-forward-ref': 0, + '@angular-eslint/no-conflicting-lifecycle': 0, + '@angular-eslint/no-attribute-decorator': 0, + '@angular-eslint/no-pipe-impure': 0, + '@angular-eslint/sort-ngmodule-metadata-arrays': 0, + + '@angular-eslint/prefer-signals': 0, + '@angular-eslint/prefer-output-emitter-ref': 0, + '@angular-eslint/prefer-inject': 0, + + // plugin:rxjs-x + 'rxjs-x/no-implicit-any-catch': 0, + 'rxjs-x/no-sharereplay': 0, + 'rxjs-x/no-internal': 0, + 'rxjs-x/no-unbound-methods': 0, + 'rxjs-x/no-topromise': 1, + 'rxjs-x/throw-error': 1, + // These rules are new in eslint-plugin-rxjs-x's `recommended` set (they were not enabled by + // the previous eslint-plugin-rxjs). Disabled to preserve the prior lint behavior. + 'rxjs-x/prefer-root-operators': 0, + 'rxjs-x/prefer-observer': 0 + } + }, + + // Rules for Angular templates + { + files: ['**/*.html'], + extends: [ + /** @see https://github.com/angular-eslint/angular-eslint/blob/main/packages/angular-eslint/src/configs/template-all.ts */ + angular.configs.templateAll + ], + languageOptions: { + parser: angular.templateParser + }, + rules: { + // plugin:@angular-eslint/template + '@angular-eslint/template/no-autofocus': 0, + '@angular-eslint/template/elements-content': 0, + '@angular-eslint/template/click-events-have-key-events': 0, + '@angular-eslint/template/interactive-supports-focus': 0, + '@angular-eslint/template/label-has-associated-control': 0, + '@angular-eslint/template/i18n': 0, + '@angular-eslint/template/no-call-expression': 0, + '@angular-eslint/template/prefer-ngsrc': 0, + '@angular-eslint/template/no-inline-styles': 0, + '@angular-eslint/template/button-has-type': 0, + '@angular-eslint/template/no-interpolation-in-attributes': 0, + '@angular-eslint/template/no-any': 0, + '@angular-eslint/template/prefer-static-string-properties': 0, + '@angular-eslint/template/cyclomatic-complexity': 0, + // Allow combining a static `class`/`style` attribute with its `[class]`/`[style]` binding. + // Angular merges them via styling precedence, so this is a valid pattern (e.g. after the + // NgClass -> [class] migration). Genuine duplicates (two static `class`, two `[class]`) are + // still reported. + '@angular-eslint/template/no-duplicate-attributes': [ + 2, + { + allowStylePrecedenceDuplicates: true + } + ] + } + }, + + // Override rules for apps/docs + { + files: ['apps/docs/**/*.ts'], + rules: { + // plugin:eslint + 'no-console': [1, { allow: ['warn', 'error'] }], + 'no-restricted-globals': [ + 1, + ...noRestrictedGlobalsOptionsForSSR + ], + + // plugin:@angular-eslint + '@angular-eslint/directive-selector': [ + 1, + { + type: 'attribute', + prefix: 'docs', + style: 'camelCase' + } + ], + '@angular-eslint/component-selector': [ + 1, + { + type: 'element', + prefix: 'docs', + style: 'kebab-case' + } + ], + '@angular-eslint/use-component-selector': 1, + + // plugin:@typescript-eslint + '@typescript-eslint/naming-convention': [ + 1, + ...makeNamingConventionOptions('docs') + ] + } + }, + + // Override rules for packages/components-dev + { + files: ['packages/components-dev/**/*.ts'], + rules: { + // plugin:eslint + 'no-restricted-globals': [ + 1, + ...noRestrictedGlobalsOptionsForSSR + ], + 'no-console': 0, + + // plugin:@angular-eslint + '@angular-eslint/directive-selector': [ + 1, + { + type: 'attribute', + prefix: 'dev', + style: 'camelCase' + } + ], + '@angular-eslint/component-selector': [ + 1, + { + type: 'element', + prefix: 'dev', + style: 'kebab-case' + } + ], + '@angular-eslint/use-component-selector': 1, + '@angular-eslint/prefer-on-push-component-change-detection': 1, + + // plugin:@typescript-eslint + '@typescript-eslint/naming-convention': [ + 1, + ...makeNamingConventionOptions('dev') + ] + } + }, + + // Override rules for packages/docs-examples + { + files: ['packages/docs-examples/**/*.ts'], + rules: { + // plugin:eslint + 'no-restricted-globals': [ + 1, + ...noRestrictedGlobalsOptionsForSSR + ], + 'no-console': 0, + + // plugin:@angular-eslint + '@angular-eslint/use-component-selector': 1, + '@angular-eslint/prefer-on-push-component-change-detection': 1 + } + }, + + // Override rules for packages/components + { + files: ['packages/components/**/*.ts'], + rules: { + // plugin:eslint + 'no-restricted-globals': [ + 1, + ...noRestrictedGlobalsOptionsForSSR + ] + } + }, + + // Override rules for specs + { + files: ['**/*.spec.ts'], + rules: { + // plugin:eslint + // ignore `noRestrictedGlobalsOptionsForSSR` in specs, because they are not executed in SSR context + 'no-restricted-globals': 0, + + // plugin:@angular-eslint + '@angular-eslint/use-component-selector': 0, + '@angular-eslint/prefer-on-push-component-change-detection': 0 + } + }, + + // Override rules for e2e + { + files: ['**/*.playwright-spec.ts', '**/e2e.ts', 'packages/e2e/**/*.ts'], + rules: { + // plugin:eslint + // ignore `noRestrictedGlobalsOptionsForSSR` in e2e tests, because they are not executed in SSR context + 'no-restricted-globals': 0, + + // plugin:@angular-eslint + '@angular-eslint/directive-selector': [ + 1, + { + type: 'attribute', + prefix: 'e2e', + style: 'camelCase' + } + ], + '@angular-eslint/component-selector': [ + 1, + { + type: 'element', + prefix: 'e2e', + style: 'kebab-case' + } + ], + '@angular-eslint/use-component-selector': 1, + '@angular-eslint/prefer-on-push-component-change-detection': 1, + + // plugin:@typescript-eslint + '@typescript-eslint/naming-convention': [ + 1, + ...makeNamingConventionOptions('e2e') + ] + } + }, + + // Override rules for /tools + { + files: ['tools/**/*.ts', 'tools/**/*.js'], + rules: { + // plugin:eslint + 'no-console': 0, + + // plugin:@typescript-eslint + // node-only build scripts may use require() for legacy CommonJS modules + '@typescript-eslint/no-require-imports': 0 + } + }, + + // Override rules for /packages/schematics/ + { + files: ['packages/schematics/**/*.ts', 'packages/schematics/**/*.js'], + rules: { + // plugin:eslint + 'no-console': 0 + } + }, + + // Override rules for /packages/cli/ + { + files: ['packages/cli/**/*.ts', 'packages/cli/**/*.js'], + rules: { + // plugin:eslint + 'no-console': 0, + + // plugin:@typescript-eslint + // node-only CLI scripts may use require() for legacy CommonJS modules + '@typescript-eslint/no-require-imports': 0 + } + }, + + // plugin:prettier — must be last so it can turn off conflicting formatting rules + { + files: ['**/*.js', '**/*.ts', '**/*.html'], + extends: [prettierRecommended] + } +); diff --git a/package.json b/package.json index 3ce4af03d..f09681a93 100644 --- a/package.json +++ b/package.json @@ -52,9 +52,6 @@ "@angular-devkit/build-angular": "20.3.27", "@angular-devkit/core": "20.3.27", "@angular-devkit/schematics": "20.3.27", - "@angular-eslint/eslint-plugin": "^20.7.0", - "@angular-eslint/eslint-plugin-template": "^20.7.0", - "@angular-eslint/template-parser": "^20.7.0", "@angular/cli": "20.3.27", "@angular/compiler-cli": "20.3.24", "@angular/platform-browser-dynamic": "20.3.24", @@ -66,6 +63,7 @@ "@cspell/dict-markdown": "^2.0.17", "@cspell/dict-ru_ru": "^2.3.2", "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0", + "@eslint/js": "^9.0.0", "@koobiq/design-tokens": "^3.17.2", "@koobiq/luxon-date-adapter": "^3.5.1", "@koobiq/moment-date-adapter": "^3.5.1", @@ -87,7 +85,7 @@ "@types/chalk": "^2.2.0", "@types/conventional-changelog": "^3.1.5", "@types/conventional-changelog-writer": "^4.0.10", - "@types/eslint": "^8.56.12", + "@types/eslint": "^9.0.0", "@types/express": "^4.17.21", "@types/fs-extra": "^5.1.0", "@types/glob": "^7.1.4", @@ -100,8 +98,7 @@ "@types/nunjucks": "^3.2.1", "@types/spdx-satisfies": "^0.1.2", "@types/ws": "<8.18.2", - "@typescript-eslint/eslint-plugin": "^8.60.1", - "@typescript-eslint/parser": "^8.60.1", + "angular-eslint": "^20.7.0", "autoprefixer": "^10.4.21", "chalk": "^4.1.2", "commander": "^11.1.0", @@ -110,16 +107,17 @@ "conventional-changelog-writer": "5.0.1", "cspell": "^8.19.4", "dotenv": "^16.6.1", - "eslint": "^8.57.1", + "eslint": "^9.0.0", "eslint-config-prettier": "^9.1.2", "eslint-plugin-file-progress": "^1.5.0", "eslint-plugin-prettier": "^5.5.6", "eslint-plugin-promise": "^7.3.0", - "eslint-plugin-rxjs": "^5.0.3", + "eslint-plugin-rxjs-x": "^1.0.0", "express": "^4.22.1", "firebase-tools": "^15.3.1", "fs-extra": "^5.0.0", "glob": "^7.1.3", + "globals": "^16.0.0", "husky": "^9.1.7", "inquirer": "^7.3.3", "jest": "^30.4.2", @@ -154,7 +152,8 @@ "ts-node": "^10.9.1", "tsconfig-paths": "^3.9.0", "tsickle": "^0.39.1", - "typescript": "5.8.3" + "typescript": "5.8.3", + "typescript-eslint": "^8.60.1" }, "scripts": { "ng": "ng", @@ -286,7 +285,7 @@ "approve-api": "ts-node --project tools/api-extractor/tsconfig.json tools/api-extractor/api-extractor.ts", "check-api": "yarn run approve-api onlyCheck", "-----LINTERS-----": "----------------------------------------------------------------------------------------", - "eslint": "eslint . --ext='.js,.ts,.html'", + "eslint": "eslint .", "eslint:fix": "yarn run eslint --fix", "stylelint": "stylelint '**/*.{css,scss}'", "stylelint:fix": "yarn run stylelint --fix", diff --git a/packages/components/app-switcher/app-switcher.ts b/packages/components/app-switcher/app-switcher.ts index e8e4ee5b4..492637da9 100644 --- a/packages/components/app-switcher/app-switcher.ts +++ b/packages/components/app-switcher/app-switcher.ts @@ -537,7 +537,7 @@ export class KbqAppSwitcherTrigger this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible: boolean) => { if (visible) { - // eslint-disable-next-line rxjs/no-nested-subscribe + // eslint-disable-next-line rxjs-x/no-nested-subscribe this.preventClosingByInnerScrollSubscription = this.closingActions().subscribe((event) => { if (event['scrollDispatcher']) { event['kbqPopoverPreventHide'] = true; diff --git a/packages/components/dropdown/dropdown-trigger.directive.ts b/packages/components/dropdown/dropdown-trigger.directive.ts index f3f81e2b0..33d5026ea 100644 --- a/packages/components/dropdown/dropdown-trigger.directive.ts +++ b/packages/components/dropdown/dropdown-trigger.directive.ts @@ -678,7 +678,7 @@ export class KbqDropdownTrigger implements AfterContentInit, OnDestroy { // 'changed after checked' errors in some cases. See #12194. this.dropdown.animationDone .pipe(take(1), delay(0, asapScheduler), takeUntil(this.parent.hovered())) - // eslint-disable-next-line rxjs/no-nested-subscribe + // eslint-disable-next-line rxjs-x/no-nested-subscribe .subscribe(() => this.open()); } else { this.open(); diff --git a/packages/components/notification-center/notification-center.ts b/packages/components/notification-center/notification-center.ts index 125eedb23..46e1ce219 100644 --- a/packages/components/notification-center/notification-center.ts +++ b/packages/components/notification-center/notification-center.ts @@ -385,7 +385,7 @@ export class KbqNotificationCenterTrigger ngAfterContentInit(): void { this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible: boolean) => { if (visible) { - // eslint-disable-next-line rxjs/no-nested-subscribe + // eslint-disable-next-line rxjs-x/no-nested-subscribe this.preventClosingByInnerScrollSubscription = this.closingActions().subscribe((event) => { if (event && event['scrollDispatcher']) { this.instance.setStickPosition(); diff --git a/packages/components/toast/toast.service.ts b/packages/components/toast/toast.service.ts index aebcf9b42..340e1c70e 100644 --- a/packages/components/toast/toast.service.ts +++ b/packages/components/toast/toast.service.ts @@ -44,7 +44,7 @@ export class KbqToastService im timer = timer(CHECK_INTERVAL, CHECK_INTERVAL).pipe( filter(() => this.toasts.length > 0 && !this.hovered.getValue() && !this.focused.getValue()), - // eslint-disable-next-line rxjs/no-ignored-replay-buffer + // eslint-disable-next-line rxjs-x/no-ignored-replay-buffer shareReplay() ); diff --git a/yarn.lock b/yarn.lock index 1ee7bec06..e587d1ae7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -406,7 +406,7 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/architect@npm:0.2003.27": +"@angular-devkit/architect@npm:0.2003.27, @angular-devkit/architect@npm:>= 0.2000.0 < 0.2100.0": version: 0.2003.27 resolution: "@angular-devkit/architect@npm:0.2003.27" dependencies: @@ -570,7 +570,7 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/core@npm:20.3.27": +"@angular-devkit/core@npm:20.3.27, @angular-devkit/core@npm:>= 20.0.0 < 21.0.0": version: 20.3.27 resolution: "@angular-devkit/core@npm:20.3.27" dependencies: @@ -589,7 +589,7 @@ __metadata: languageName: node linkType: hard -"@angular-devkit/schematics@npm:20.3.27": +"@angular-devkit/schematics@npm:20.3.27, @angular-devkit/schematics@npm:>= 20.0.0 < 21.0.0": version: 20.3.27 resolution: "@angular-devkit/schematics@npm:20.3.27" dependencies: @@ -602,6 +602,19 @@ __metadata: languageName: node linkType: hard +"@angular-eslint/builder@npm:20.7.0": + version: 20.7.0 + resolution: "@angular-eslint/builder@npm:20.7.0" + dependencies: + "@angular-devkit/architect": "npm:>= 0.2000.0 < 0.2100.0" + "@angular-devkit/core": "npm:>= 20.0.0 < 21.0.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: "*" + checksum: 10c0/3cfbd894d93b52989fe26e583b203e7eef51c4f825fcff98bcff27c0039bf3dbfb756692396759a8bb74790ce7d0e3675fe345111769f773da131afe160ab405 + languageName: node + linkType: hard + "@angular-eslint/bundled-angular-compiler@npm:20.7.0": version: 20.7.0 resolution: "@angular-eslint/bundled-angular-compiler@npm:20.7.0" @@ -609,7 +622,7 @@ __metadata: languageName: node linkType: hard -"@angular-eslint/eslint-plugin-template@npm:^20.7.0": +"@angular-eslint/eslint-plugin-template@npm:20.7.0": version: 20.7.0 resolution: "@angular-eslint/eslint-plugin-template@npm:20.7.0" dependencies: @@ -627,7 +640,7 @@ __metadata: languageName: node linkType: hard -"@angular-eslint/eslint-plugin@npm:^20.7.0": +"@angular-eslint/eslint-plugin@npm:20.7.0": version: 20.7.0 resolution: "@angular-eslint/eslint-plugin@npm:20.7.0" dependencies: @@ -642,7 +655,22 @@ __metadata: languageName: node linkType: hard -"@angular-eslint/template-parser@npm:^20.7.0": +"@angular-eslint/schematics@npm:20.7.0": + version: 20.7.0 + resolution: "@angular-eslint/schematics@npm:20.7.0" + dependencies: + "@angular-devkit/core": "npm:>= 20.0.0 < 21.0.0" + "@angular-devkit/schematics": "npm:>= 20.0.0 < 21.0.0" + "@angular-eslint/eslint-plugin": "npm:20.7.0" + "@angular-eslint/eslint-plugin-template": "npm:20.7.0" + ignore: "npm:7.0.5" + semver: "npm:7.7.3" + strip-json-comments: "npm:3.1.1" + checksum: 10c0/275bd939a530acff911861e84d54dcd54caf49ca8dd2b6ebfdfc361730787b42bfdf00eb832c89603d184f1600075a55544a6f491986b740bc1bbc2e3e4655e9 + languageName: node + linkType: hard + +"@angular-eslint/template-parser@npm:20.7.0": version: 20.7.0 resolution: "@angular-eslint/template-parser@npm:20.7.0" dependencies: @@ -1798,7 +1826,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.10.3, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.7, @babel/parser@npm:^7.24.8": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.7, @babel/parser@npm:^7.24.8": version: 7.24.8 resolution: "@babel/parser@npm:7.24.8" bin: @@ -2910,7 +2938,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.10.3, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8": +"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8": version: 7.24.8 resolution: "@babel/traverse@npm:7.24.8" dependencies: @@ -2958,7 +2986,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.10.3, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.24.9": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.24.9": version: 7.24.9 resolution: "@babel/types@npm:7.24.9" dependencies: @@ -4768,7 +4796,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": +"@eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" dependencies: @@ -4779,7 +4807,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.9.1": +"@eslint-community/eslint-utils@npm:^4.8.0, @eslint-community/eslint-utils@npm:^4.9.1": version: 4.9.1 resolution: "@eslint-community/eslint-utils@npm:4.9.1" dependencies: @@ -4790,41 +4818,80 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.12.2": +"@eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.12.2": version: 4.12.2 resolution: "@eslint-community/regexpp@npm:4.12.2" checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.6.1": - version: 4.10.0 - resolution: "@eslint-community/regexpp@npm:4.10.0" - checksum: 10c0/c5f60ef1f1ea7649fa7af0e80a5a79f64b55a8a8fa5086de4727eb4c86c652aedee407a9c143b8995d2c0b2d75c1222bec9ba5d73dbfc1f314550554f0979ef4 +"@eslint/config-array@npm:^0.21.2": + version: 0.21.2 + resolution: "@eslint/config-array@npm:0.21.2" + dependencies: + "@eslint/object-schema": "npm:^2.1.7" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.5" + checksum: 10c0/89dfe815d18456177c0a1f238daf4593107fd20298b3598e0103054360d3b8d09d967defd8318f031185d68df1f95cfa68becf1390a9c5c6887665f1475142e3 languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" +"@eslint/config-helpers@npm:^0.4.2": + version: 0.4.2 + resolution: "@eslint/config-helpers@npm:0.4.2" + dependencies: + "@eslint/core": "npm:^0.17.0" + checksum: 10c0/92efd7a527b2d17eb1a148409d71d80f9ac160b565ac73ee092252e8bf08ecd08670699f46b306b94f13d22e88ac88a612120e7847570dd7cdc72f234d50dcb4 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.17.0": + version: 0.17.0 + resolution: "@eslint/core@npm:0.17.0" dependencies: - ajv: "npm:^6.12.4" + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/9a580f2246633bc752298e7440dd942ec421860d1946d0801f0423830e67887e4aeba10ab9a23d281727a978eb93d053d1922a587d502942a713607f40ed704e + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.3.5": + version: 3.3.5 + resolution: "@eslint/eslintrc@npm:3.3.5" + dependencies: + ajv: "npm:^6.14.0" debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" ignore: "npm:^5.2.0" import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - minimatch: "npm:^3.1.2" + js-yaml: "npm:^4.1.1" + minimatch: "npm:^3.1.5" strip-json-comments: "npm:^3.1.1" - checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + checksum: 10c0/9fb9f1ca65e46d6173966e3aaa5bd353e3a65d7f1f582bebf77f578fab7d7960a399fac1ecfb1e7d52bd61f5cefd6531087ca52a3a3c388f2e1b4f1ebd3da8b7 languageName: node linkType: hard -"@eslint/js@npm:8.57.1": - version: 8.57.1 - resolution: "@eslint/js@npm:8.57.1" - checksum: 10c0/b489c474a3b5b54381c62e82b3f7f65f4b8a5eaaed126546520bf2fede5532a8ed53212919fed1e9048dcf7f37167c8561d58d0ba4492a4244004e7793805223 +"@eslint/js@npm:9.39.4, @eslint/js@npm:^9.0.0": + version: 9.39.4 + resolution: "@eslint/js@npm:9.39.4" + checksum: 10c0/5aa7dea2cbc5decf7f5e3b0c6f86a084ccee0f792d288ca8e839f8bc1b64e03e227068968e49b26096e6f71fd857ab6e42691d1b993826b9a3883f1bdd7a0e46 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.7": + version: 2.1.7 + resolution: "@eslint/object-schema@npm:2.1.7" + checksum: 10c0/936b6e499853d1335803f556d526c86f5fe2259ed241bc665000e1d6353828edd913feed43120d150adb75570cae162cf000b5b0dfc9596726761c36b82f4e87 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.4.1": + version: 0.4.1 + resolution: "@eslint/plugin-kit@npm:0.4.1" + dependencies: + "@eslint/core": "npm:^0.17.0" + levn: "npm:^0.4.1" + checksum: 10c0/51600f78b798f172a9915dffb295e2ffb44840d583427bc732baf12ecb963eb841b253300e657da91d890f4b323d10a1bd12934bf293e3018d8bb66fdce5217b languageName: node linkType: hard @@ -4956,14 +5023,30 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.13.0": - version: 0.13.0 - resolution: "@humanwhocodes/config-array@npm:0.13.0" +"@humanfs/core@npm:^0.19.2": + version: 0.19.2 + resolution: "@humanfs/core@npm:0.19.2" dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.3" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10c0/205c99e756b759f92e1f44a3dc6292b37db199beacba8f26c2165d4051fe73a4ae52fdcfd08ffa93e7e5cb63da7c88648f0e84e197d154bbbbe137b2e0dd332e + "@humanfs/types": "npm:^0.15.0" + checksum: 10c0/d0a1d52d7b30c27d49475a53072d1510b81c5803e44b342fb8faf3887f1aa27593a1e6dc76a45268e7892d3f4e198146659281f6b6d55eacf3fd5a38bac30c5c + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.8 + resolution: "@humanfs/node@npm:0.16.8" + dependencies: + "@humanfs/core": "npm:^0.19.2" + "@humanfs/types": "npm:^0.15.0" + "@humanwhocodes/retry": "npm:^0.4.0" + checksum: 10c0/56140579db811af4e160b195d45d0f29acf644d192c93fe24c9e594ebf06f19dfc157494a07c84540b8a071c0e4b37209c2362765d31734f4d0be869c2422e25 + languageName: node + linkType: hard + +"@humanfs/types@npm:^0.15.0": + version: 0.15.0 + resolution: "@humanfs/types@npm:0.15.0" + checksum: 10c0/fc26b9a024b0e55f7eaf64036df94345bf5d36d6a41ef80ef38e78f1f7430ce26cf435af736adae58913baae18eac3f38c18739054a3d379102015978eae862e languageName: node linkType: hard @@ -4974,10 +5057,10 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.3": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c +"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": + version: 0.4.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: 10c0/3775bb30087d4440b3f7406d5a057777d90e4b9f435af488a4923ef249e93615fb78565a85f173a186a076c7706a81d0d57d563a2624e4de2c5c9c66c486ce42 languageName: node linkType: hard @@ -6538,7 +6621,7 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": +"@nodelib/fs.walk@npm:^1.2.3": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -8423,7 +8506,7 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:*": +"@types/eslint@npm:*, @types/eslint@npm:^9.0.0": version: 9.6.1 resolution: "@types/eslint@npm:9.6.1" dependencies: @@ -8433,16 +8516,6 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:^8.56.12": - version: 8.56.12 - resolution: "@types/eslint@npm:8.56.12" - dependencies: - "@types/estree": "npm:*" - "@types/json-schema": "npm:*" - checksum: 10c0/e4ca426abe9d55f82b69a3250bec78b6d340ad1e567f91c97ecc59d3b2d6a1d8494955ac62ad0ea14b97519db580611c02be8277cbea370bdfb0f96aa2910504 - languageName: node - linkType: hard - "@types/esrecurse@npm:^4.3.1": version: 4.3.1 resolution: "@types/esrecurse@npm:4.3.1" @@ -8464,7 +8537,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:1.0.9": +"@types/estree@npm:1.0.9, @types/estree@npm:^1.0.6": version: 1.0.9 resolution: "@types/estree@npm:1.0.9" checksum: 10c0/3ad3286ca2988cd550dafb8f2ad599c8474868e954fa601a36655bdfefd8039f7c714b8c1c7f2ae219ffbd58bd4660e66fa7479a0120fc02d4777057d4865387 @@ -8761,13 +8834,6 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.3.12": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: 10c0/8663ff927234d1c5fcc04b33062cb2b9fcfbe0f5f351ed26c4d1e1581657deebd506b41ff7fdf89e787e3d33ce05854bc01686379b89e9c49b564c4cfa988efa - languageName: node - linkType: hard - "@types/send@npm:*": version: 0.17.4 resolution: "@types/send@npm:0.17.4" @@ -8880,25 +8946,25 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17.0.0, @types/yargs@npm:^17.0.8": - version: 17.0.32 - resolution: "@types/yargs@npm:17.0.32" +"@types/yargs@npm:^17.0.33": + version: 17.0.35 + resolution: "@types/yargs@npm:17.0.35" dependencies: "@types/yargs-parser": "npm:*" - checksum: 10c0/2095e8aad8a4e66b86147415364266b8d607a3b95b4239623423efd7e29df93ba81bb862784a6e08664f645cc1981b25fd598f532019174cd3e5e1e689e1cccf + checksum: 10c0/609557826a6b85e73ccf587923f6429850d6dc70e420b455bab4601b670bfadf684b09ae288bccedab042c48ba65f1666133cf375814204b544009f57d6eef63 languageName: node linkType: hard -"@types/yargs@npm:^17.0.33": - version: 17.0.35 - resolution: "@types/yargs@npm:17.0.35" +"@types/yargs@npm:^17.0.8": + version: 17.0.32 + resolution: "@types/yargs@npm:17.0.32" dependencies: "@types/yargs-parser": "npm:*" - checksum: 10c0/609557826a6b85e73ccf587923f6429850d6dc70e420b455bab4601b670bfadf684b09ae288bccedab042c48ba65f1666133cf375814204b544009f57d6eef63 + checksum: 10c0/2095e8aad8a4e66b86147415364266b8d607a3b95b4239623423efd7e29df93ba81bb862784a6e08664f645cc1981b25fd598f532019174cd3e5e1e689e1cccf languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^8.60.1": +"@typescript-eslint/eslint-plugin@npm:8.60.1": version: 8.60.1 resolution: "@typescript-eslint/eslint-plugin@npm:8.60.1" dependencies: @@ -8918,18 +8984,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/experimental-utils@npm:^5.0.0": - version: 5.62.0 - resolution: "@typescript-eslint/experimental-utils@npm:5.62.0" - dependencies: - "@typescript-eslint/utils": "npm:5.62.0" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10c0/f7037977e00849cd8c03677a88b0659a4f0e0b1e0151aebb47c49c92b8e57408578142df598eac08b364623d926343c724f42494f87662e437b1c89f0b2e815b - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:^8.60.1": +"@typescript-eslint/parser@npm:8.60.1": version: 8.60.1 resolution: "@typescript-eslint/parser@npm:8.60.1" dependencies: @@ -8958,16 +9013,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/scope-manager@npm:5.62.0" - dependencies: - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/visitor-keys": "npm:5.62.0" - checksum: 10c0/861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f - languageName: node - linkType: hard - "@typescript-eslint/scope-manager@npm:8.30.1": version: 8.30.1 resolution: "@typescript-eslint/scope-manager@npm:8.30.1" @@ -9013,13 +9058,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/types@npm:5.62.0" - checksum: 10c0/7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf - languageName: node - linkType: hard - "@typescript-eslint/types@npm:8.30.1": version: 8.30.1 resolution: "@typescript-eslint/types@npm:8.30.1" @@ -9027,31 +9065,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.60.1, @typescript-eslint/types@npm:^8.60.1": +"@typescript-eslint/types@npm:8.60.1, @typescript-eslint/types@npm:^8.0.0, @typescript-eslint/types@npm:^8.60.1": version: 8.60.1 resolution: "@typescript-eslint/types@npm:8.60.1" checksum: 10c0/44308007e090ae1ac9cfdc5c2089cf1a82601298f69dd4835f62549e3d36886d41ecb1f84b490603382657481ca4e2ff23de49b97ad09d199dc65ce6c2e00b22 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" - dependencies: - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/visitor-keys": "npm:5.62.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:8.30.1": version: 8.30.1 resolution: "@typescript-eslint/typescript-estree@npm:8.30.1" @@ -9089,25 +9109,7 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/utils@npm:5.62.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@types/json-schema": "npm:^7.0.9" - "@types/semver": "npm:^7.3.12" - "@typescript-eslint/scope-manager": "npm:5.62.0" - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/typescript-estree": "npm:5.62.0" - eslint-scope: "npm:^5.1.1" - semver: "npm:^7.3.7" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10c0/f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:8.60.1": +"@typescript-eslint/utils@npm:8.60.1, @typescript-eslint/utils@npm:^8.0.0, @typescript-eslint/utils@npm:^8.58.0": version: 8.60.1 resolution: "@typescript-eslint/utils@npm:8.60.1" dependencies: @@ -9137,16 +9139,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" - dependencies: - "@typescript-eslint/types": "npm:5.62.0" - eslint-visitor-keys: "npm:^3.3.0" - checksum: 10c0/7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:8.30.1": version: 8.30.1 resolution: "@typescript-eslint/visitor-keys@npm:8.30.1" @@ -9167,13 +9159,6 @@ __metadata: languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.2.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d - languageName: node - linkType: hard - "@ungap/structured-clone@npm:^1.3.0": version: 1.3.0 resolution: "@ungap/structured-clone@npm:1.3.0" @@ -9653,7 +9638,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.4.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": +"acorn@npm:^8.4.1, acorn@npm:^8.8.2": version: 8.11.3 resolution: "acorn@npm:8.11.3" bin: @@ -9815,15 +9800,15 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.12.4": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" +"ajv@npm:^6.14.0": + version: 6.15.0 + resolution: "ajv@npm:6.15.0" dependencies: fast-deep-equal: "npm:^3.1.1" fast-json-stable-stringify: "npm:^2.0.0" json-schema-traverse: "npm:^0.4.1" uri-js: "npm:^4.2.2" - checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + checksum: 10c0/67966499dd272ecde1c2e467084411132891523d057487587879d39ac04207f4351b7b2324c83198013967fbfa632c1612adc960114a30770fbe07a0773b32c2 languageName: node linkType: hard @@ -9906,6 +9891,27 @@ __metadata: languageName: node linkType: hard +"angular-eslint@npm:^20.7.0": + version: 20.7.0 + resolution: "angular-eslint@npm:20.7.0" + dependencies: + "@angular-devkit/core": "npm:>= 20.0.0 < 21.0.0" + "@angular-devkit/schematics": "npm:>= 20.0.0 < 21.0.0" + "@angular-eslint/builder": "npm:20.7.0" + "@angular-eslint/eslint-plugin": "npm:20.7.0" + "@angular-eslint/eslint-plugin-template": "npm:20.7.0" + "@angular-eslint/schematics": "npm:20.7.0" + "@angular-eslint/template-parser": "npm:20.7.0" + "@typescript-eslint/types": "npm:^8.0.0" + "@typescript-eslint/utils": "npm:^8.0.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: "*" + typescript-eslint: ^8.0.0 + checksum: 10c0/bfc86fca1c4a6e82fe9fe03eebf051e960e79d0fd41e82349b2220ecdbd143c4c5d1c2a15149e84104ecea2f33657ed6179c45a1c96ac2fe7739b6b141f4b772 + languageName: node + linkType: hard + "ansi-align@npm:^3.0.0": version: 3.0.1 resolution: "ansi-align@npm:3.0.1" @@ -10450,17 +10456,6 @@ __metadata: languageName: node linkType: hard -"bent@npm:~7.3.6": - version: 7.3.12 - resolution: "bent@npm:7.3.12" - dependencies: - bytesish: "npm:^0.4.1" - caseless: "npm:~0.12.0" - is-stream: "npm:^2.0.0" - checksum: 10c0/20f77364bcb462a6eb0ea7322442a1125ca6181ea6b94ad498b8348c678a2adf56c231a653bcac016c5d017aee91ff55b2169b69d8263a4b3c710f4121cbe615 - languageName: node - linkType: hard - "big.js@npm:^5.2.2": version: 5.2.2 resolution: "big.js@npm:5.2.2" @@ -10793,13 +10788,6 @@ __metadata: languageName: node linkType: hard -"bytesish@npm:^0.4.1": - version: 0.4.4 - resolution: "bytesish@npm:0.4.4" - checksum: 10c0/469088f0020797dfbb61b6ce3972c91d95d79df8aacca55841ea93ac59ef3209bb04be8212b6265dfbafb7583a58dd73ca2f14e4feae36d3333a4f1509dd2eef - languageName: node - linkType: hard - "cacache@npm:^18.0.0": version: 18.0.2 resolution: "cacache@npm:18.0.2" @@ -10979,13 +10967,6 @@ __metadata: languageName: node linkType: hard -"caseless@npm:~0.12.0": - version: 0.12.0 - resolution: "caseless@npm:0.12.0" - checksum: 10c0/ccf64bcb6c0232cdc5b7bd91ddd06e23a4b541f138336d4725233ac538041fb2f29c2e86c3c4a7a61ef990b665348db23a047060b9414c3a6603e9fa61ad4626 - languageName: node - linkType: hard - "chalk-template@npm:^1.1.0": version: 1.1.0 resolution: "chalk-template@npm:1.1.0" @@ -11013,7 +10994,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2, chalk@npm:~4.1.0": +"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -11501,13 +11482,6 @@ __metadata: languageName: node linkType: hard -"common-tags@npm:^1.8.0": - version: 1.8.2 - resolution: "common-tags@npm:1.8.2" - checksum: 10c0/23efe47ff0a1a7c91489271b3a1e1d2a171c12ec7f9b35b29b2fce51270124aff0ec890087e2bc2182c1cb746e232ab7561aaafe05f1e7452aea733d2bfe3f63 - languageName: node - linkType: hard - "commondir@npm:^1.0.1": version: 1.0.1 resolution: "commondir@npm:1.0.1" @@ -12030,7 +12004,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: @@ -12041,7 +12015,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.5": +"cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.5, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -12454,10 +12428,10 @@ __metadata: languageName: node linkType: hard -"decamelize@npm:^5.0.0": - version: 5.0.1 - resolution: "decamelize@npm:5.0.1" - checksum: 10c0/3da71022bc1e85487810fa0833138effb599fa331ca21e179650e93a765d0c4dabeb1ecdd6ad1474fa0bacd2457953c63ea335afb6e53b35f2b4bf779514e2a3 +"decamelize@npm:^6.0.1": + version: 6.0.1 + resolution: "decamelize@npm:6.0.1" + checksum: 10c0/c0a3a529591ebab1d1a9458b60684194e91d904e9b0a56367d3d507b2c8ab89dfd40c61423ca6a1eb2f70e2d44d2efe78f3342326395d3738d1d42592b1a6224 languageName: node linkType: hard @@ -12729,15 +12703,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 - languageName: node - linkType: hard - "dom-serializer@npm:^2.0.0": version: 2.0.0 resolution: "dom-serializer@npm:2.0.0" @@ -13560,20 +13525,6 @@ __metadata: languageName: node linkType: hard -"eslint-etc@npm:^5.1.0": - version: 5.2.1 - resolution: "eslint-etc@npm:5.2.1" - dependencies: - "@typescript-eslint/experimental-utils": "npm:^5.0.0" - tsutils: "npm:^3.17.1" - tsutils-etc: "npm:^1.4.1" - peerDependencies: - eslint: ^8.0.0 - typescript: ">=4.0.0" - checksum: 10c0/628f9d65e16f7c7d06c663256d39f5e72f508a515d2712b0bcb329dbb9e7a1a4f175292c3477c83be9cc8a75deea5f050a00c3dc9b084af6b651d46ee8360a9e - languageName: node - linkType: hard - "eslint-plugin-file-progress@npm:^1.5.0": version: 1.5.0 resolution: "eslint-plugin-file-progress@npm:1.5.0" @@ -13617,27 +13568,25 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-rxjs@npm:^5.0.3": - version: 5.0.3 - resolution: "eslint-plugin-rxjs@npm:5.0.3" - dependencies: - "@typescript-eslint/experimental-utils": "npm:^5.0.0" - common-tags: "npm:^1.8.0" - decamelize: "npm:^5.0.0" - eslint-etc: "npm:^5.1.0" - requireindex: "npm:~1.2.0" - rxjs-report-usage: "npm:^1.0.4" - tslib: "npm:^2.0.0" - tsutils: "npm:^3.0.0" - tsutils-etc: "npm:^1.4.1" +"eslint-plugin-rxjs-x@npm:^1.0.0": + version: 1.0.2 + resolution: "eslint-plugin-rxjs-x@npm:1.0.2" + dependencies: + "@typescript-eslint/utils": "npm:^8.58.0" + decamelize: "npm:^6.0.1" + ts-api-utils: "npm:^2.5.0" peerDependencies: - eslint: ^8.0.0 - typescript: ">=4.0.0" - checksum: 10c0/bba2048a6772ec017e63c9201642c90043365308f2d386b448a28b91f7195a7f65ebb39705bb886f89bcc4fe1ffbd18bd2b25bf8f389bc5cae592828dbfe9d58 + eslint: ^10.0.1 + rxjs: ^7.2.0 + typescript: ">=4.8.4 <6.1.0" + peerDependenciesMeta: + rxjs: + optional: true + checksum: 10c0/2af7669ad52b0880043ec8c1860614257f72648e8c08579935593b53540194510d5d005dc9592aac0894b04f1af0f4d9d4456dc7c6d27d69ae07f14c4a6c8394 languageName: node linkType: hard -"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": +"eslint-scope@npm:5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" dependencies: @@ -13647,13 +13596,13 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" +"eslint-scope@npm:^8.4.0": + version: 8.4.0 + resolution: "eslint-scope@npm:8.4.0" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0 languageName: node linkType: hard @@ -13669,7 +13618,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 @@ -13683,6 +13632,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 + languageName: node + linkType: hard + "eslint-visitor-keys@npm:^5.0.0": version: 5.0.1 resolution: "eslint-visitor-keys@npm:5.0.1" @@ -13690,51 +13646,63 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.57.1": - version: 8.57.1 - resolution: "eslint@npm:8.57.1" +"eslint@npm:^9.0.0": + version: 9.39.4 + resolution: "eslint@npm:9.39.4" dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.1" - "@humanwhocodes/config-array": "npm:^0.13.0" + "@eslint-community/eslint-utils": "npm:^4.8.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.21.2" + "@eslint/config-helpers": "npm:^0.4.2" + "@eslint/core": "npm:^0.17.0" + "@eslint/eslintrc": "npm:^3.3.5" + "@eslint/js": "npm:9.39.4" + "@eslint/plugin-kit": "npm:^0.4.1" + "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" - ajv: "npm:^6.12.4" + "@humanwhocodes/retry": "npm:^0.4.2" + "@types/estree": "npm:^1.0.6" + ajv: "npm:^6.14.0" chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" + cross-spawn: "npm:^7.0.6" debug: "npm:^4.3.2" - doctrine: "npm:^3.0.0" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.2" - eslint-visitor-keys: "npm:^3.4.3" - espree: "npm:^9.6.1" - esquery: "npm:^1.4.2" + eslint-scope: "npm:^8.4.0" + eslint-visitor-keys: "npm:^4.2.1" + espree: "npm:^10.4.0" + esquery: "npm:^1.5.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" + file-entry-cache: "npm:^8.0.0" find-up: "npm:^5.0.0" glob-parent: "npm:^6.0.2" - globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" ignore: "npm:^5.2.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" + minimatch: "npm:^3.1.5" natural-compare: "npm:^1.4.0" optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: 10c0/1fd31533086c1b72f86770a4d9d7058ee8b4643fd1cfd10c7aac1ecb8725698e88352a87805cf4b2ce890aa35947df4b4da9655fb7fdfa60dbb448a43f6ebcf1 + checksum: 10c0/1955067c2d991f0c84f4c4abfafe31bb47fa3b717a7fd3e43fe1e511c6f859d7700cbca969f85661dc4c130f7aeced5e5444884314198a54428f5e5141db9337 + languageName: node + linkType: hard + +"espree@npm:^10.0.1, espree@npm:^10.4.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" + dependencies: + acorn: "npm:^8.15.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b languageName: node linkType: hard @@ -13749,17 +13717,6 @@ __metadata: languageName: node linkType: hard -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" - dependencies: - acorn: "npm:^8.9.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 - languageName: node - linkType: hard - "esprima@npm:^4.0.0, esprima@npm:^4.0.1": version: 4.0.1 resolution: "esprima@npm:4.0.1" @@ -13770,12 +13727,12 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" +"esquery@npm:^1.5.0": + version: 1.7.0 + resolution: "esquery@npm:1.7.0" dependencies: estraverse: "npm:^5.1.0" - checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 + checksum: 10c0/77d5173db450b66f3bc685d11af4c90cffeedb340f34a39af96d43509a335ce39c894fd79233df32d38f5e4e219fa0f7076f6ec90bae8320170ba082c0db4793 languageName: node linkType: hard @@ -14374,12 +14331,12 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" dependencies: - flat-cache: "npm:^3.0.4" - checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + flat-cache: "npm:^4.0.0" + checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 languageName: node linkType: hard @@ -14644,14 +14601,13 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4": - version: 3.2.0 - resolution: "flat-cache@npm:3.2.0" +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" dependencies: flatted: "npm:^3.2.9" - keyv: "npm:^4.5.3" - rimraf: "npm:^3.0.2" - checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 + keyv: "npm:^4.5.4" + checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc languageName: node linkType: hard @@ -15246,7 +15202,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:~7.2.0": +"glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -15318,12 +15274,17 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.19.0": - version: 13.24.0 - resolution: "globals@npm:13.24.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d + languageName: node + linkType: hard + +"globals@npm:^16.0.0": + version: 16.5.0 + resolution: "globals@npm:16.5.0" + checksum: 10c0/615241dae7851c8012f5aa0223005b1ed6607713d6813de0741768bd4ddc39353117648f1a7086b4b0fa45eae733f1c0a0fe369aa4e543bb63f8de8990178ea9 languageName: node linkType: hard @@ -15454,13 +15415,6 @@ __metadata: languageName: node linkType: hard -"graphemer@npm:^1.4.0": - version: 1.4.0 - resolution: "graphemer@npm:1.4.0" - checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 - languageName: node - linkType: hard - "gtoken@npm:^7.0.0": version: 7.1.0 resolution: "gtoken@npm:7.1.0" @@ -15986,6 +15940,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:7.0.5, ignore@npm:^7.0.4, ignore@npm:^7.0.5": + version: 7.0.5 + resolution: "ignore@npm:7.0.5" + checksum: 10c0/ae00db89fe873064a093b8999fe4cc284b13ef2a178636211842cceb650b9c3e390d3339191acb145d81ed5379d2074840cf0c33a20bdbd6f32821f79eb4ad5d + languageName: node + linkType: hard + "ignore@npm:^5.2.0, ignore@npm:^5.2.4": version: 5.3.1 resolution: "ignore@npm:5.3.1" @@ -15993,13 +15954,6 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^7.0.4, ignore@npm:^7.0.5": - version: 7.0.5 - resolution: "ignore@npm:7.0.5" - checksum: 10c0/ae00db89fe873064a093b8999fe4cc284b13ef2a178636211842cceb650b9c3e390d3339191acb145d81ed5379d2074840cf0c33a20bdbd6f32821f79eb4ad5d - languageName: node - linkType: hard - "image-size@npm:~0.5.0": version: 0.5.5 resolution: "image-size@npm:0.5.5" @@ -16450,7 +16404,7 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": +"is-path-inside@npm:^3.0.2": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 @@ -17536,6 +17490,17 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:^4.1.1": + version: 4.2.0 + resolution: "js-yaml@npm:4.2.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/1916456c118746603b067d74bbcbb0445d9a1d5e474ad4ae775e7b20525bed902e01d9d97dd0c81fcd8d4f596162309d0eb057f4aa38f3e9647f14075e9dea45 + languageName: node + linkType: hard + "jsbn@npm:1.1.0": version: 1.1.0 resolution: "jsbn@npm:1.1.0" @@ -17853,7 +17818,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.5.3, keyv@npm:^4.5.4": +"keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" dependencies: @@ -17887,13 +17852,6 @@ __metadata: languageName: node linkType: hard -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: 10c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b - languageName: node - linkType: hard - "known-css-properties@npm:^0.37.0": version: 0.37.0 resolution: "known-css-properties@npm:0.37.0" @@ -17911,9 +17869,6 @@ __metadata: "@angular-devkit/build-angular": "npm:20.3.27" "@angular-devkit/core": "npm:20.3.27" "@angular-devkit/schematics": "npm:20.3.27" - "@angular-eslint/eslint-plugin": "npm:^20.7.0" - "@angular-eslint/eslint-plugin-template": "npm:^20.7.0" - "@angular-eslint/template-parser": "npm:^20.7.0" "@angular/animations": "npm:20.3.24" "@angular/cdk": "npm:20.2.14" "@angular/cli": "npm:20.3.27" @@ -17934,6 +17889,7 @@ __metadata: "@docsearch/css": "npm:^3.9.0" "@docsearch/js": "npm:^3.9.0" "@eslint-community/eslint-plugin-eslint-comments": "npm:^4.5.0" + "@eslint/js": "npm:^9.0.0" "@fontsource/inter": "npm:^5.2.8" "@fontsource/jetbrains-mono": "npm:^5.2.6" "@koobiq/ag-grid-angular-theme": "npm:^34.3.1" @@ -17964,7 +17920,7 @@ __metadata: "@types/chalk": "npm:^2.2.0" "@types/conventional-changelog": "npm:^3.1.5" "@types/conventional-changelog-writer": "npm:^4.0.10" - "@types/eslint": "npm:^8.56.12" + "@types/eslint": "npm:^9.0.0" "@types/express": "npm:^4.17.21" "@types/fs-extra": "npm:^5.1.0" "@types/glob": "npm:^7.1.4" @@ -17977,10 +17933,9 @@ __metadata: "@types/nunjucks": "npm:^3.2.1" "@types/spdx-satisfies": "npm:^0.1.2" "@types/ws": "npm:<8.18.2" - "@typescript-eslint/eslint-plugin": "npm:^8.60.1" - "@typescript-eslint/parser": "npm:^8.60.1" ag-grid-angular: "npm:^34.3.1" ag-grid-community: "npm:^34.3.1" + angular-eslint: "npm:^20.7.0" autoprefixer: "npm:^10.4.21" chalk: "npm:^4.1.2" commander: "npm:^11.1.0" @@ -17989,16 +17944,17 @@ __metadata: conventional-changelog-writer: "npm:5.0.1" cspell: "npm:^8.19.4" dotenv: "npm:^16.6.1" - eslint: "npm:^8.57.1" + eslint: "npm:^9.0.0" eslint-config-prettier: "npm:^9.1.2" eslint-plugin-file-progress: "npm:^1.5.0" eslint-plugin-prettier: "npm:^5.5.6" eslint-plugin-promise: "npm:^7.3.0" - eslint-plugin-rxjs: "npm:^5.0.3" + eslint-plugin-rxjs-x: "npm:^1.0.0" express: "npm:^4.22.1" firebase-tools: "npm:^15.3.1" fs-extra: "npm:^5.0.0" glob: "npm:^7.1.3" + globals: "npm:^16.0.0" highlight.js: "npm:^11.11.1" husky: "npm:^9.1.7" inquirer: "npm:^7.3.3" @@ -18039,6 +17995,7 @@ __metadata: tsickle: "npm:^0.39.1" tslib: "npm:^2.8.1" typescript: "npm:5.8.3" + typescript-eslint: "npm:^8.60.1" zone.js: "npm:~0.16.2" languageName: unknown linkType: soft @@ -19145,7 +19102,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -19154,6 +19111,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^3.1.5": + version: 3.1.5 + resolution: "minimatch@npm:3.1.5" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/2ecbdc0d33f07bddb0315a8b5afbcb761307a8778b48f0b312418ccbced99f104a2d17d8aca7573433c70e8ccd1c56823a441897a45e384ea76ef401a26ace70 + languageName: node + linkType: hard + "minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": version: 5.1.6 resolution: "minimatch@npm:5.1.6" @@ -21445,16 +21411,6 @@ __metadata: languageName: node linkType: hard -"prompts@npm:~2.4.2": - version: 2.4.2 - resolution: "prompts@npm:2.4.2" - dependencies: - kleur: "npm:^3.0.3" - sisteransi: "npm:^1.0.5" - checksum: 10c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 - languageName: node - linkType: hard - "proto-list@npm:~1.2.1": version: 1.2.4 resolution: "proto-list@npm:1.2.4" @@ -22114,13 +22070,6 @@ __metadata: languageName: node linkType: hard -"requireindex@npm:~1.2.0": - version: 1.2.0 - resolution: "requireindex@npm:1.2.0" - checksum: 10c0/7fb42aed73bf8de9acc4d6716cf07acc7fbe180e58729433bafcf702e76e7bb10e54f8266c06bfec62d752e0ac14d50e8758833de539e6f4e2cd642077866153 - languageName: node - linkType: hard - "requires-port@npm:^1.0.0": version: 1.0.0 resolution: "requires-port@npm:1.0.0" @@ -22309,17 +22258,6 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: "npm:^7.1.3" - bin: - rimraf: bin.js - checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 - languageName: node - linkType: hard - "rimraf@npm:^5.0.1, rimraf@npm:^5.0.10": version: 5.0.10 resolution: "rimraf@npm:5.0.10" @@ -22774,23 +22712,6 @@ __metadata: languageName: node linkType: hard -"rxjs-report-usage@npm:^1.0.4": - version: 1.0.6 - resolution: "rxjs-report-usage@npm:1.0.6" - dependencies: - "@babel/parser": "npm:^7.10.3" - "@babel/traverse": "npm:^7.10.3" - "@babel/types": "npm:^7.10.3" - bent: "npm:~7.3.6" - chalk: "npm:~4.1.0" - glob: "npm:~7.2.0" - prompts: "npm:~2.4.2" - bin: - rxjs-report-usage: bin/rxjs-report-usage - checksum: 10c0/f87af567fcce83644cd028de6aaba5ee7555c85fc5b7f075068c4e48088b220721548c1b0cef9e8452def26257a098e732e062e82e494f236cf9ed5748bd8e5b - languageName: node - linkType: hard - "rxjs@npm:7.8.2, rxjs@npm:^7.8.2": version: 7.8.2 resolution: "rxjs@npm:7.8.2" @@ -23014,6 +22935,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:7.7.3": + version: 7.7.3 + resolution: "semver@npm:7.7.3" + bin: + semver: bin/semver.js + checksum: 10c0/4afe5c986567db82f44c8c6faef8fe9df2a9b1d98098fc1721f57c696c4c21cebd572f297fc21002f81889492345b8470473bc6f4aff5fb032a6ea59ea2bc45e + languageName: node + linkType: hard + "semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" @@ -23398,13 +23328,6 @@ __metadata: languageName: node linkType: hard -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 - languageName: node - linkType: hard - "skin-tone@npm:^2.0.0": version: 2.0.0 resolution: "skin-tone@npm:2.0.0" @@ -24009,7 +23932,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.1, strip-json-comments@npm:~3.1.1": +"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.1.1, strip-json-comments@npm:~3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd @@ -24473,13 +24396,6 @@ __metadata: languageName: node linkType: hard -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c - languageName: node - linkType: hard - "thenify-all@npm:^1.0.0": version: 1.6.0 resolution: "thenify-all@npm:1.6.0" @@ -24965,7 +24881,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1, tslib@npm:^1.9.0": +"tslib@npm:^1.9.0": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 @@ -24986,33 +24902,6 @@ __metadata: languageName: node linkType: hard -"tsutils-etc@npm:^1.4.1": - version: 1.4.2 - resolution: "tsutils-etc@npm:1.4.2" - dependencies: - "@types/yargs": "npm:^17.0.0" - yargs: "npm:^17.0.0" - peerDependencies: - tsutils: ^3.0.0 - typescript: ">=4.0.0" - bin: - ts-flags: bin/ts-flags - ts-kind: bin/ts-kind - checksum: 10c0/7b07273627f2f4af2a785a073d0fead7c0c0d1133fee68e5de19f2aca4b01ea35a08de2c97e75f58fb6ba6ddb03ad490abf056bb8b71fb01e84bfed1b8a24a0d - languageName: node - linkType: hard - -"tsutils@npm:^3.0.0, tsutils@npm:^3.17.1, tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: "npm:^1.8.1" - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 - languageName: node - linkType: hard - "tuf-js@npm:^4.1.0": version: 4.1.0 resolution: "tuf-js@npm:4.1.0" @@ -25168,6 +25057,21 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.60.1": + version: 8.60.1 + resolution: "typescript-eslint@npm:8.60.1" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.60.1" + "@typescript-eslint/parser": "npm:8.60.1" + "@typescript-eslint/typescript-estree": "npm:8.60.1" + "@typescript-eslint/utils": "npm:8.60.1" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: ">=4.8.4 <6.1.0" + checksum: 10c0/75a42e14b4a7446dd9ad992422135f696e0af58d7c0f64ff2d9f157f1df7bac6a089fa7a35454d2393eadd329e602c0002c07043bbcf4906f7007e45e783b54e + languageName: node + linkType: hard + "typescript@npm:5.8.2": version: 5.8.2 resolution: "typescript@npm:5.8.2" From 74ffd216f291b9f78b4bcc54608f082e4a490517 Mon Sep 17 00:00:00 2001 From: lskramarov Date: Thu, 4 Jun 2026 13:37:50 +0300 Subject: [PATCH 02/12] fix(tree, list, dropdown): expose dropdown/tooltip trigger as instances to option action (#DS-5079) --- .../dropdown/dropdown-trigger.directive.ts | 10 ++- .../list/list-selection.component.ts | 10 ++- .../components/tree/tree-option.component.ts | 10 ++- .../tree/tree-selection.component.spec.ts | 70 ++++++++++++++++++- .../components/dropdown.api.md | 2 +- tools/public_api_guard/components/list.api.md | 6 +- tools/public_api_guard/components/tree.api.md | 4 +- 7 files changed, 98 insertions(+), 14 deletions(-) diff --git a/packages/components/dropdown/dropdown-trigger.directive.ts b/packages/components/dropdown/dropdown-trigger.directive.ts index 33d5026ea..86b23e0ff 100644 --- a/packages/components/dropdown/dropdown-trigger.directive.ts +++ b/packages/components/dropdown/dropdown-trigger.directive.ts @@ -18,6 +18,7 @@ import { ChangeDetectorRef, Directive, ElementRef, + EventEmitter, inject, Inject, InjectionToken, @@ -25,6 +26,7 @@ import { numberAttribute, OnDestroy, Optional, + Output, output, Renderer2, Self, @@ -195,8 +197,12 @@ export class KbqDropdownTrigger implements AfterContentInit, OnDestroy { /** Event emitted when the associated dropdown is opened. */ readonly dropdownOpened = output(); - /** Event emitted when the associated dropdown is closed. */ - readonly dropdownClosed = output(); + /** + * Event emitted when the associated dropdown is closed. Kept as an `@Output()` EventEmitter + * (not `output()`): `KbqOptionActionComponent` subscribes to it via `.pipe()` through the + * KBQ_OPTION_ACTION_PARENT contract, which an `OutputEmitterRef` does not support — see #DS-5079. + */ + @Output() readonly dropdownClosed = new EventEmitter(); // Tracking input type is necessary so it's possible to only auto-focus // the first item of the list when the dropdown is opened via the keyboard diff --git a/packages/components/list/list-selection.component.ts b/packages/components/list/list-selection.component.ts index 90c1af123..5b4fdc0ff 100644 --- a/packages/components/list/list-selection.component.ts +++ b/packages/components/list/list-selection.component.ts @@ -10,6 +10,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, + ContentChild, contentChild, ContentChildren, DestroyRef, @@ -714,8 +715,13 @@ export class KbqListOption implements OnDestroy, OnInit, IFocusableOption, KbqTi readonly onBlur = new Subject(); readonly actionButton = contentChild(KbqOptionActionComponent); - readonly tooltipTrigger = contentChild(KbqTooltipTrigger); - readonly dropdownTrigger = contentChild(KbqDropdownTrigger); + + // `KbqOptionActionComponent` reads these as directive instances through KBQ_OPTION_ACTION_PARENT, + // so they must stay decorator queries. A signal `contentChild` would expose the query function + // instead of the trigger, making `dropdownTrigger.dropdownClosed` undefined and throwing on `.pipe` + // when an action button is rendered — see #DS-5079. + @ContentChild(KbqTooltipTrigger) tooltipTrigger: KbqTooltipTrigger; + @ContentChild(KbqDropdownTrigger) dropdownTrigger: KbqDropdownTrigger; readonly pseudoCheckbox = contentChild(KbqPseudoCheckbox); readonly text = viewChild.required('text'); diff --git a/packages/components/tree/tree-option.component.ts b/packages/components/tree/tree-option.component.ts index bfdd3c3f9..95110929a 100644 --- a/packages/components/tree/tree-option.component.ts +++ b/packages/components/tree/tree-option.component.ts @@ -6,6 +6,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, + ContentChild, contentChild, ElementRef, EventEmitter, @@ -107,8 +108,13 @@ export class KbqTreeOption extends KbqTreeNode implements AfterCo readonly toggleElementComponent = contentChild(KbqTreeNodeToggleComponent); readonly pseudoCheckbox = contentChild(KbqPseudoCheckbox); readonly actionButton = contentChild(KbqOptionActionComponent); - readonly tooltipTrigger = contentChild(KbqTooltipTrigger); - readonly dropdownTrigger = contentChild(KbqDropdownTrigger); + + // `KbqOptionActionComponent` reads these as directive instances through KBQ_OPTION_ACTION_PARENT, + // so they must stay decorator queries. A signal `contentChild` would expose the query function + // instead of the trigger, making `dropdownTrigger.dropdownClosed` undefined and throwing on `.pipe` + // when an action button is rendered (e.g. on tree node expansion) — see #DS-5079. + @ContentChild(KbqTooltipTrigger) tooltipTrigger: KbqTooltipTrigger; + @ContentChild(KbqDropdownTrigger) dropdownTrigger: KbqDropdownTrigger; readonly checkboxThirdState = input(false); diff --git a/packages/components/tree/tree-selection.component.spec.ts b/packages/components/tree/tree-selection.component.spec.ts index bd43ba6ee..1f4d1b98d 100644 --- a/packages/components/tree/tree-selection.component.spec.ts +++ b/packages/components/tree/tree-selection.component.spec.ts @@ -1,9 +1,18 @@ import { Clipboard } from '@angular/cdk/clipboard'; import { Component, DebugElement, ViewChild, viewChild } from '@angular/core'; -import { ComponentFixture, TestBed, fakeAsync, flush, tick } from '@angular/core/testing'; +import { ComponentFixture, fakeAsync, flush, TestBed, tick } from '@angular/core/testing'; import { FormsModule } from '@angular/forms'; import { By } from '@angular/platform-browser'; -import { A, C, createKeyboardEvent, createMouseEvent, dispatchEvent, dispatchFakeEvent } from '@koobiq/components/core'; +import { + A, + C, + createKeyboardEvent, + createMouseEvent, + dispatchEvent, + dispatchFakeEvent, + KbqOptionModule +} from '@koobiq/components/core'; +import { KbqDropdownModule } from '@koobiq/components/dropdown'; import { AsyncScheduler } from 'rxjs/internal/scheduler/AsyncScheduler'; import { TestScheduler } from 'rxjs/testing'; import { @@ -505,6 +514,34 @@ describe('KbqTreeSelection', () => { }); }); + describe('with an action button and dropdown (#DS-5079)', () => { + beforeEach(() => { + configureKbqTreeTestingModule(); + }); + + it('renders deeper nodes as selectable options without crashing the action button', fakeAsync(() => { + const fixture = TestBed.createComponent(TreeWithActionButtonApp); + + fixture.detectChanges(); + + const component = fixture.componentInstance; + const parent = component.treeControl.dataNodes.find((node) => node.name === 'Pictures')!; + + component.treeControl.expand(parent); + fixture.detectChanges(); + tick(); + + // Before the fix, KbqOptionActionComponent.ngAfterViewInit threw — `dropdownTrigger` was a + // signal query and `dropdownClosed` an `output()` without `.pipe` — aborting the tree render, + // so nodes revealed on expand never registered in renderedOptions and could not be selected. + const renderedHasSun = component.tree.renderedOptions + .toArray() + .some((option) => option.getHostElement().textContent!.includes('Sun')); + + expect(renderedHasSun).toBe(true); + })); + }); + // todo need recover xdescribe('with when node template', () => { let fixture: ComponentFixture; @@ -1080,6 +1117,35 @@ class KbqTreeAppMultiple extends TreeParams { } } +@Component({ + imports: [ + KbqTreeModule, + KbqDropdownModule, + KbqOptionModule + ], + template: ` + + + {{ node.name }} + + + + + + {{ node.name }} + + + + + + + + ` +}) +class TreeWithActionButtonApp extends TreeParams { + @ViewChild(KbqTreeSelection) tree: KbqTreeSelection; +} + @Component({ imports: [ KbqTreeModule, diff --git a/tools/public_api_guard/components/dropdown.api.md b/tools/public_api_guard/components/dropdown.api.md index 3179c9fc0..444f48480 100644 --- a/tools/public_api_guard/components/dropdown.api.md +++ b/tools/public_api_guard/components/dropdown.api.md @@ -268,7 +268,7 @@ export class KbqDropdownTrigger implements AfterContentInit, OnDestroy { get dir(): Direction; get dropdown(): KbqDropdownPanel; set dropdown(dropdown: KbqDropdownPanel); - readonly dropdownClosed: i0.OutputEmitterRef; + readonly dropdownClosed: EventEmitter; readonly dropdownOpened: i0.OutputEmitterRef; focus(origin?: FocusOrigin, options?: FocusOptions): void; handleClick(event: MouseEvent): void; diff --git a/tools/public_api_guard/components/list.api.md b/tools/public_api_guard/components/list.api.md index 1888d8e79..636840757 100644 --- a/tools/public_api_guard/components/list.api.md +++ b/tools/public_api_guard/components/list.api.md @@ -97,7 +97,7 @@ export class KbqListOption implements OnDestroy, OnInit, IFocusableOption, KbqTi get disabled(): boolean; set disabled(value: boolean); // (undocumented) - readonly dropdownTrigger: i0.Signal; + dropdownTrigger: KbqDropdownTrigger; // (undocumented) get externalPseudoCheckbox(): boolean; // (undocumented) @@ -149,12 +149,12 @@ export class KbqListOption implements OnDestroy, OnInit, IFocusableOption, KbqTi // (undocumented) toggle(): void; // (undocumented) - readonly tooltipTrigger: i0.Signal; + tooltipTrigger: KbqTooltipTrigger; // (undocumented) get value(): any; set value(newValue: any); // (undocumented) - static ɵcmp: i0.ɵɵComponentDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } diff --git a/tools/public_api_guard/components/tree.api.md b/tools/public_api_guard/components/tree.api.md index a8ece3b07..aaa247b30 100644 --- a/tools/public_api_guard/components/tree.api.md +++ b/tools/public_api_guard/components/tree.api.md @@ -438,7 +438,7 @@ export class KbqTreeOption extends KbqTreeNode implements AfterCo get disabled(): any; set disabled(value: any); // (undocumented) - readonly dropdownTrigger: i0.Signal; + dropdownTrigger: KbqDropdownTrigger; // (undocumented) emitSelectionChangeEvent(): void; // (undocumented) @@ -498,7 +498,7 @@ export class KbqTreeOption extends KbqTreeNode implements AfterCo // (undocumented) readonly toggleElementDirective: i0.Signal | undefined>; // (undocumented) - readonly tooltipTrigger: i0.Signal; + tooltipTrigger: KbqTooltipTrigger; // (undocumented) tree: any; // (undocumented) From 8c2ac81a854c65ee1e2ca309f5cc1012d43bc64f Mon Sep 17 00:00:00 2001 From: lskramarov Date: Thu, 4 Jun 2026 14:20:50 +0300 Subject: [PATCH 03/12] fix(tree): vertically center content in kbq-tree-option Drop the align-self: flex-start override that lifted the toggle and checkbox off center. Also center the badge in the tree-action-button example. --- packages/components/tree/tree-option.scss | 7 ------- .../tree/tree-action-button/tree-action-button-example.ts | 4 ++-- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/packages/components/tree/tree-option.scss b/packages/components/tree/tree-option.scss index d36f3abb8..1fff3d258 100644 --- a/packages/components/tree/tree-option.scss +++ b/packages/components/tree/tree-option.scss @@ -36,13 +36,6 @@ gap: var(--kbq-tree-size-container-content-gap-horizontal); - & > *[kbqtreenodetoggle], - & > .kbq-tree-node-toggle, - & > .kbq-pseudo-checkbox { - margin-top: var(--kbq-size-3xs); - align-self: flex-start; - } - & .kbq-option-text { @include common.kbq-line-wrapper-base(); display: inline-block; diff --git a/packages/docs-examples/components/tree/tree-action-button/tree-action-button-example.ts b/packages/docs-examples/components/tree/tree-action-button/tree-action-button-example.ts index a37339f44..2df715691 100644 --- a/packages/docs-examples/components/tree/tree-action-button/tree-action-button-example.ts +++ b/packages/docs-examples/components/tree/tree-action-button/tree-action-button-example.ts @@ -125,7 +125,7 @@ export const DATA_OBJECT = { -
+
badge
@@ -142,7 +142,7 @@ export const DATA_OBJECT = { -
+
badge
From 11c145ed68c393c7884c5459b448651a5d8a3253 Mon Sep 17 00:00:00 2001 From: lskramarov Date: Mon, 8 Jun 2026 14:01:04 +0300 Subject: [PATCH 04/12] refactor: migrate to inject() function across the workspace Run `ng generate @angular/core:inject` with --migrate-abstract-classes and --backwards-compatible-constructors across all packages. Constructor parameter injection is replaced by the inject() function. Manual fixes for migration limitations: - assert non-null (!) on all optional inject fields to preserve the original non-null @Optional() typing and public API (nonNullableOptional behaviour) - fix null/undefined mismatches (?? undefined) for luxon/moment options and markdown marked options - form-field KbqTrim: coerce @Attribute('no-trim') to boolean at the field - tooltip: fix KBQ_TOOLTIP_OPEN_TIME token type (() => ScrollStrategy -> { value: number }) - remove stale deps:[] from providers of inject()-based classes (formatters, notification-center, luxon/moment adapters) so Angular uses each class's factory and keeps the injection context (fixes NG0201) - DateFormatter: inject the Core DateAdapter token instead of the base @koobiq/date-adapter one to match the registered provider - adapt specs that used deps:[] / manual new KbqLocaleService() to the inject API Builds, public API guard and unit tests (3121 passed) are green. --- .../components/anchors/anchors.component.ts | 18 +++-- .../example-viewer/example-viewer.ts | 19 ++--- .../stackblitz/stackblitz-button.ts | 16 +++-- .../components/welcome/welcome.component.ts | 7 +- .../adapter/date-adapter.ts | 18 +++-- .../angular-luxon-adapter/adapter/index.ts | 13 +--- .../angular-moment-adapter/adapter/index.ts | 13 +--- .../adapter/moment-date-adapter.ts | 18 +++-- packages/components-dev/all/module.ts | 9 ++- .../components-dev/date-formatter/module.ts | 17 +++-- packages/components-dev/datepicker/module.ts | 9 ++- packages/components-dev/input/module.ts | 9 ++- packages/components-dev/list/module.ts | 9 ++- packages/components-dev/locale/module.ts | 9 ++- packages/components-dev/modal/module.ts | 22 ++++-- packages/components-dev/navbar/module.ts | 9 ++- packages/components-dev/sidepanel/module.ts | 18 ++++- packages/components-dev/timepicker/module.ts | 13 ++-- packages/components-dev/toast/module.ts | 36 ++++++---- packages/components-dev/validation/module.ts | 13 ++-- packages/components-dev/z-index/module.ts | 39 +++++++---- .../autocomplete-origin.directive.ts | 9 ++- .../autocomplete-trigger.directive.ts | 31 +++++---- .../autocomplete/autocomplete.component.ts | 18 ++--- packages/components/badge/badge.component.ts | 16 +++-- .../button-toggle/button-toggle.component.ts | 24 ++++--- .../components/button/button.component.ts | 26 ++++--- packages/components/checkbox/checkbox.ts | 11 +-- .../core/formatters/date/formatter.spec.ts | 18 ++--- .../core/formatters/date/formatter.ts | 19 +++-- packages/components/core/formatters/index.ts | 3 +- .../core/formatters/number/formatter.spec.ts | 3 +- .../core/formatters/number/formatter.ts | 36 ++++++---- .../components/core/forms/forms.directive.ts | 9 ++- .../components/core/locales/locale-service.ts | 10 ++- packages/components/core/option/option.ts | 17 ++--- packages/components/core/select/common.ts | 18 ++--- .../datepicker/calendar-header.component.ts | 17 ++++- .../datepicker/calendar-header.spec.ts | 9 ++- .../datepicker/calendar.component.ts | 17 +++-- .../components/datepicker/calendar.spec.ts | 23 +++++-- .../datepicker/datepicker-input.directive.ts | 25 +++---- .../datepicker/datepicker.component.ts | 29 +++++--- .../components/datepicker/datepicker.spec.ts | 9 ++- .../datepicker/month-view.component.ts | 13 ++-- .../dropdown/dropdown-content.directive.ts | 15 ++-- .../dropdown/dropdown-item.component.ts | 15 ++-- .../dropdown/dropdown-trigger.directive.ts | 34 ++++----- .../components/dropdown/dropdown.component.ts | 15 ++-- .../empty-state/empty-state.component.ts | 8 ++- .../file-upload/file-upload.spec.ts | 69 +++++++++++++++---- .../filter-bar/pipes/pipe-date.spec.ts | 4 +- .../filter-bar/pipes/pipe-datetime.spec.ts | 4 +- packages/components/form-field/form-field.ts | 18 +++-- .../components/form-field/password-hint.ts | 15 ++-- .../components/input/input-number.spec.ts | 23 +++++-- packages/components/input/input-number.ts | 27 ++++---- packages/components/input/input-password.ts | 22 +++--- packages/components/input/input.ts | 24 ++++--- packages/components/link/link.component.ts | 11 +-- .../list/list-selection.component.ts | 35 +++++----- packages/components/list/list.component.ts | 10 ++- .../loader-overlay.component.ts | 12 ++-- .../components/markdown/markdown.component.ts | 16 +++-- .../components/modal/modal-control.service.ts | 8 ++- packages/components/modal/modal.component.ts | 23 ++++--- packages/components/modal/modal.directive.ts | 9 ++- packages/components/modal/modal.service.ts | 15 ++-- packages/components/modal/modal.spec.ts | 38 ++++++---- .../navbar/navbar-item.component.ts | 32 +++++---- .../components/navbar/navbar.component.ts | 33 ++++++--- .../navbar/vertical-navbar.component.ts | 22 +++--- .../notification-center.module.ts | 4 +- .../popover/popover-confirm.component.ts | 14 ++-- packages/components/popover/popover.spec.ts | 9 ++- packages/components/radio/radio.component.ts | 26 ++++--- .../scrollbar/scrollbar.component.ts | 11 +-- .../scrollbar/scrollbar.directive.ts | 13 ++-- .../select/select.component.spec.ts | 19 ++++- .../components/select/select.component.ts | 39 +++++------ .../components/sidebar/sidebar.component.ts | 11 +-- .../sidepanel-container.component.ts | 17 +++-- .../sidepanel/sidepanel-directives.ts | 14 ++-- .../components/sidepanel/sidepanel.service.ts | 26 +++---- .../components/sidepanel/sidepanel.spec.ts | 19 +++-- .../components/splitter/splitter.component.ts | 51 ++++++++------ .../components/tabs/tab-body.component.ts | 30 ++++---- packages/components/tabs/tab-body.spec.ts | 9 ++- .../components/tabs/tab-content.directive.ts | 9 ++- .../components/tabs/tab-group.component.ts | 15 ++-- .../tabs/tab-label-wrapper.directive.ts | 22 ++++-- packages/components/tabs/tab.component.ts | 8 ++- packages/components/tags/tag-input.ts | 22 +++--- .../components/tags/tag-list.component.ts | 23 ++++--- packages/components/tags/tag.component.ts | 17 +++-- .../components/textarea/textarea.component.ts | 30 ++++---- .../components/time-range/time-range.spec.ts | 4 +- .../timepicker/timepicker.directive.ts | 18 ++--- .../components/timepicker/timepicker.spec.ts | 18 ++++- packages/components/title/title.directive.ts | 18 ++--- .../toast/toast-container.component.ts | 22 +++--- packages/components/toast/toast.component.ts | 17 ++--- packages/components/toast/toast.service.ts | 24 ++++--- packages/components/toast/toast.spec.ts | 9 ++- .../components/toggle/toggle.component.ts | 11 +-- .../components/tooltip/tooltip.component.ts | 12 ++-- .../tree-select/tree-select.component.ts | 37 +++++----- packages/components/tree/node.ts | 9 ++- packages/components/tree/outlet.ts | 13 ++-- packages/components/tree/padding.directive.ts | 20 +++--- packages/components/tree/toggle.ts | 12 ++-- packages/components/tree/tree-base.ts | 24 ++++--- .../components/tree/tree-option.component.ts | 21 ++++-- .../tree/tree-selection.component.ts | 22 +++--- .../accordion-in-panel-example.ts | 9 ++- .../checkbox-indeterminate-example.ts | 9 ++- .../datepicker-inactive-example.ts | 9 ++- .../datepicker-minimax-example.ts | 9 ++- .../datepicker-range-example.ts | 9 ++- .../dropdown-recursive-template-example.ts | 8 ++- .../sidepanel-normal-mode-example.ts | 9 ++- .../sidepanel-overview-example.ts | 9 ++- .../sidepanel-sizes-example.ts | 9 ++- .../timepicker-overview-example.ts | 9 ++- .../timepicker-variations-example.ts | 9 ++- .../tree-select-lazyload-example.ts | 9 ++- .../tree-lazyload/tree-lazyload-example.ts | 9 ++- .../components/autocomplete.api.md | 16 ++--- .../public_api_guard/components/badge.api.md | 7 +- .../components/button-toggle.api.md | 9 +-- .../public_api_guard/components/button.api.md | 9 +-- .../components/checkbox.api.md | 4 +- tools/public_api_guard/components/core.api.md | 30 ++++---- .../components/datepicker.api.md | 33 ++++----- .../components/dropdown.api.md | 19 ++--- .../components/empty-state.api.md | 5 +- .../components/form-field.api.md | 9 +-- .../public_api_guard/components/input.api.md | 14 ++-- tools/public_api_guard/components/link.api.md | 3 +- tools/public_api_guard/components/list.api.md | 13 ++-- .../components/loader-overlay.api.md | 4 +- .../components/markdown.api.md | 5 +- .../public_api_guard/components/modal.api.md | 14 ++-- .../public_api_guard/components/navbar.api.md | 18 +++-- .../components/popover.api.md | 4 +- .../public_api_guard/components/radio.api.md | 9 +-- .../components/scrollbar.api.md | 5 +- .../public_api_guard/components/select.api.md | 15 ++-- .../components/sidebar.api.md | 4 +- .../components/sidepanel.api.md | 17 ++--- .../components/splitter.api.md | 10 ++- tools/public_api_guard/components/tabs.api.md | 20 +++--- tools/public_api_guard/components/tags.api.md | 14 ++-- .../components/textarea.api.md | 5 +- .../components/timepicker.api.md | 8 +-- .../public_api_guard/components/title.api.md | 5 +- .../public_api_guard/components/toast.api.md | 18 ++--- .../public_api_guard/components/toggle.api.md | 4 +- .../components/tooltip.api.md | 12 ++-- .../components/tree-select.api.md | 12 ++-- tools/public_api_guard/components/tree.api.md | 25 +++---- 161 files changed, 1528 insertions(+), 1057 deletions(-) diff --git a/apps/docs/src/app/components/anchors/anchors.component.ts b/apps/docs/src/app/components/anchors/anchors.component.ts index f7cea37da..01ac4075a 100644 --- a/apps/docs/src/app/components/anchors/anchors.component.ts +++ b/apps/docs/src/app/components/anchors/anchors.component.ts @@ -4,7 +4,6 @@ import { Component, DestroyRef, inject, - Inject, Input, OnDestroy, OnInit, @@ -45,6 +44,11 @@ const NEXT_ROUTE_KEY = 'KBQ_nextRoute'; } }) export class DocsAnchorsComponent implements OnDestroy, OnInit { + private router = inject(Router); + private route = inject(ActivatedRoute); + private ref = inject(ChangeDetectorRef); + private document = inject(DOCUMENT); + @Input() anchors: KbqDocsAnchor[] = []; @Input() headerSelectors: string; @@ -84,12 +88,12 @@ export class DocsAnchorsComponent implements OnDestroy, OnInit { private readonly destroyRef = inject(DestroyRef); private readonly window = inject(KBQ_WINDOW); - constructor( - private router: Router, - private route: ActivatedRoute, - private ref: ChangeDetectorRef, - @Inject(DOCUMENT) private document: Document - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const router = this.router; + this.isSmoothScrollSupported = 'scrollBehavior' in this.scrollContainer.style; if (!this.isSmoothScrollSupported) { diff --git a/apps/docs/src/app/components/example-viewer/example-viewer.ts b/apps/docs/src/app/components/example-viewer/example-viewer.ts index c2dedd43f..9e1f088a3 100644 --- a/apps/docs/src/app/components/example-viewer/example-viewer.ts +++ b/apps/docs/src/app/components/example-viewer/example-viewer.ts @@ -41,6 +41,13 @@ import { DocsLiveExampleViewerComponent } from '../live-example-viewer/docs-live } }) export class DocsExampleViewerComponent extends DocsLocaleState implements OnDestroy { + private appRef = inject(ApplicationRef); + private elementRef = inject>(ElementRef); + private injector = inject(Injector); + private viewContainerRef = inject(ViewContainerRef); + private ngZone = inject(NgZone); + private domSanitizer = inject(DomSanitizer); + private portalHosts: DomPortalOutlet[] = []; private documentFetchSubscription: Subscription | undefined; private readonly window = inject(KBQ_WINDOW); @@ -71,14 +78,10 @@ export class DocsExampleViewerComponent extends DocsLocaleState implements OnDes private readonly documentLoader = inject(DocsDocumentLoader); private readonly platformId = inject(PLATFORM_ID); - constructor( - private appRef: ApplicationRef, - private elementRef: ElementRef, - private injector: Injector, - private viewContainerRef: ViewContainerRef, - private ngZone: NgZone, - private domSanitizer: DomSanitizer - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); } diff --git a/apps/docs/src/app/components/stackblitz/stackblitz-button.ts b/apps/docs/src/app/components/stackblitz/stackblitz-button.ts index 81769a4a2..4ced050f2 100644 --- a/apps/docs/src/app/components/stackblitz/stackblitz-button.ts +++ b/apps/docs/src/app/components/stackblitz/stackblitz-button.ts @@ -1,5 +1,5 @@ import { FocusMonitor } from '@angular/cdk/a11y'; -import { Component, ElementRef, Input, ViewEncapsulation } from '@angular/core'; +import { Component, ElementRef, Input, ViewEncapsulation, inject } from '@angular/core'; import { KbqIconModule } from '@koobiq/components/icon'; import { KbqLink, KbqLinkModule } from '@koobiq/components/link'; import { ExampleData } from '@koobiq/docs-examples'; @@ -20,6 +20,8 @@ import { DocsStackblitzWriter } from './stackblitz-writer'; } }) export class DocsStackblitzButtonComponent extends KbqLink { + private stackBlitzWriter = inject(DocsStackblitzWriter); + @Input() set exampleId(value: string | undefined) { if (value) { @@ -39,11 +41,13 @@ export class DocsStackblitzButtonComponent extends KbqLink { private exampleData: ExampleData | undefined; - constructor( - elementRef: ElementRef, - focusMonitor: FocusMonitor, - private stackBlitzWriter: DocsStackblitzWriter - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const elementRef = inject>(ElementRef); + const focusMonitor = inject(FocusMonitor); + super(elementRef, focusMonitor); } diff --git a/apps/docs/src/app/components/welcome/welcome.component.ts b/apps/docs/src/app/components/welcome/welcome.component.ts index 0d7e50d7f..13f2b8d62 100644 --- a/apps/docs/src/app/components/welcome/welcome.component.ts +++ b/apps/docs/src/app/components/welcome/welcome.component.ts @@ -29,6 +29,8 @@ import { DocsRegisterHeaderDirective } from '../register-header/register-header. } }) export class DocsWelcomeComponent extends DocsLocaleState implements OnInit { + private readonly themeService = inject(ThemeService); + protected structureCategories: DocsStructureCategory[]; readonly currentTheme = toSignal( this.themeService.current.pipe(map((theme) => theme?.className.replace('kbq-', '') ?? 'light')), @@ -38,7 +40,10 @@ export class DocsWelcomeComponent extends DocsLocaleState implements OnInit { private readonly elementRef = inject>(ElementRef); private readonly docStates = inject(DocsDocStates); - constructor(private readonly themeService: ThemeService) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); fromEvent(this.elementRef.nativeElement, 'scroll') diff --git a/packages/angular-luxon-adapter/adapter/date-adapter.ts b/packages/angular-luxon-adapter/adapter/date-adapter.ts index ff54dcd38..3b59a3744 100644 --- a/packages/angular-luxon-adapter/adapter/date-adapter.ts +++ b/packages/angular-luxon-adapter/adapter/date-adapter.ts @@ -1,5 +1,5 @@ import { getLocaleFirstDayOfWeek } from '@angular/common'; -import { Inject, Injectable, InjectionToken, Optional } from '@angular/core'; +import { Injectable, InjectionToken, inject } from '@angular/core'; import { KBQ_DATE_LOCALE, KBQ_DEFAULT_LOCALE_ID, KBQ_LOCALE_SERVICE, KbqLocaleService } from '@koobiq/components/core'; import { LuxonDateAdapter as BaseLuxonDateAdapter, LuxonDateAdapterOptions } from '@koobiq/luxon-date-adapter'; import { Info } from 'luxon'; @@ -24,6 +24,8 @@ export function KBQ_LUXON_DATE_ADAPTER_OPTIONS_FACTORY(): KbqLuxonDateAdapterOpt @Injectable() export class LuxonDateAdapter extends BaseLuxonDateAdapter { + protected readonly options?: LuxonDateAdapterOptions; + private localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; /** A stream that emits when the locale changes. */ get localeChanges(): Observable { return this._localeChanges; @@ -31,12 +33,16 @@ export class LuxonDateAdapter extends BaseLuxonDateAdapter { private _localeChanges = new BehaviorSubject(KBQ_DEFAULT_LOCALE_ID); - constructor( - @Inject(KBQ_DATE_LOCALE) dateLocale: string, - @Optional() @Inject(KBQ_LUXON_DATE_ADAPTER_OPTIONS) protected readonly options?: LuxonDateAdapterOptions, - @Optional() @Inject(KBQ_LOCALE_SERVICE) private localeService?: KbqLocaleService - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const dateLocale = inject(KBQ_DATE_LOCALE); + const options = + inject(KBQ_LUXON_DATE_ADAPTER_OPTIONS, { optional: true }) ?? undefined; + super(dateLocale, options); + this.options = options; this.setLocale(this.localeService?.id || dateLocale); diff --git a/packages/angular-luxon-adapter/adapter/index.ts b/packages/angular-luxon-adapter/adapter/index.ts index 148114f0d..95352cc22 100644 --- a/packages/angular-luxon-adapter/adapter/index.ts +++ b/packages/angular-luxon-adapter/adapter/index.ts @@ -1,12 +1,6 @@ import { NgModule } from '@angular/core'; -import { - DateAdapter, - KBQ_DATE_FORMATS, - KBQ_DATE_LOCALE, - KBQ_LOCALE_SERVICE, - KbqLocaleServiceModule -} from '@koobiq/components/core'; -import { KBQ_LUXON_DATE_ADAPTER_OPTIONS, LuxonDateAdapter } from './date-adapter'; +import { DateAdapter, KBQ_DATE_FORMATS, KbqLocaleServiceModule } from '@koobiq/components/core'; +import { LuxonDateAdapter } from './date-adapter'; export * from './date-adapter'; export * from './date-formats'; @@ -15,8 +9,7 @@ export * from './date-formats'; providers: [ { provide: DateAdapter, - useClass: LuxonDateAdapter, - deps: [KBQ_DATE_LOCALE, KBQ_LUXON_DATE_ADAPTER_OPTIONS, KBQ_LOCALE_SERVICE] + useClass: LuxonDateAdapter } ] }) diff --git a/packages/angular-moment-adapter/adapter/index.ts b/packages/angular-moment-adapter/adapter/index.ts index aa3eb52ad..d4136b322 100644 --- a/packages/angular-moment-adapter/adapter/index.ts +++ b/packages/angular-moment-adapter/adapter/index.ts @@ -1,12 +1,6 @@ import { NgModule } from '@angular/core'; -import { - DateAdapter, - KBQ_DATE_FORMATS, - KBQ_DATE_LOCALE, - KBQ_LOCALE_SERVICE, - KbqLocaleServiceModule -} from '@koobiq/components/core'; -import { KBQ_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from './moment-date-adapter'; +import { DateAdapter, KBQ_DATE_FORMATS, KbqLocaleServiceModule } from '@koobiq/components/core'; +import { MomentDateAdapter } from './moment-date-adapter'; export * from './moment-date-adapter'; export * from './moment-date-formats'; @@ -15,8 +9,7 @@ export * from './moment-date-formats'; providers: [ { provide: DateAdapter, - useClass: MomentDateAdapter, - deps: [KBQ_DATE_LOCALE, KBQ_MOMENT_DATE_ADAPTER_OPTIONS, KBQ_LOCALE_SERVICE] + useClass: MomentDateAdapter } ] }) diff --git a/packages/angular-moment-adapter/adapter/moment-date-adapter.ts b/packages/angular-moment-adapter/adapter/moment-date-adapter.ts index a2515f051..c4f7e46af 100644 --- a/packages/angular-moment-adapter/adapter/moment-date-adapter.ts +++ b/packages/angular-moment-adapter/adapter/moment-date-adapter.ts @@ -1,4 +1,4 @@ -import { Inject, Injectable, InjectionToken, Optional } from '@angular/core'; +import { Injectable, InjectionToken, inject } from '@angular/core'; import { KBQ_DATE_LOCALE, KBQ_LOCALE_SERVICE, KbqLocaleService } from '@koobiq/components/core'; import { MomentDateAdapter as BaseMomentDateAdapter, MomentDateAdapterOptions } from '@koobiq/moment-date-adapter'; import { Observable, Subject } from 'rxjs'; @@ -25,12 +25,18 @@ export function KBQ_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY(): IKbqMomentDateAdapter @Injectable() export class MomentDateAdapter extends BaseMomentDateAdapter { - constructor( - @Optional() @Inject(KBQ_DATE_LOCALE) dateLocale: string, - @Optional() @Inject(KBQ_MOMENT_DATE_ADAPTER_OPTIONS) protected readonly options?: IKbqMomentDateAdapterOptions, - @Optional() @Inject(KBQ_LOCALE_SERVICE) private localeService?: KbqLocaleService - ) { + protected readonly options?: IKbqMomentDateAdapterOptions; + private localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const dateLocale = inject(KBQ_DATE_LOCALE, { optional: true })!; + const options = + inject(KBQ_MOMENT_DATE_ADAPTER_OPTIONS, { optional: true }) ?? undefined; + super(dateLocale, options); + this.options = options; this.setLocale(this.localeService?.id || dateLocale); diff --git a/packages/components-dev/all/module.ts b/packages/components-dev/all/module.ts index 8e80ff4a1..b61a0439e 100644 --- a/packages/components-dev/all/module.ts +++ b/packages/components-dev/all/module.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, OnDestroy, ViewEncapsulation } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject, OnDestroy, ViewEncapsulation } from '@angular/core'; import { FormsModule, ReactiveFormsModule, UntypedFormControl, Validators } from '@angular/forms'; import { KbqLuxonDateModule } from '@koobiq/angular-luxon-adapter/adapter'; import { KbqMomentDateModule } from '@koobiq/angular-moment-adapter/adapter'; @@ -78,6 +78,8 @@ const MAX_PERCENT: number = 100; encapsulation: ViewEncapsulation.None }) export class DevApp implements OnDestroy { + private modalService = inject(KbqModalService); + themePalette = ThemePalette; popUpPlacements = PopUpPlacements; @@ -162,7 +164,10 @@ export class DevApp implements OnDestroy { dataSource: KbqTreeFlatDataSource; treeFlattener: KbqTreeFlattener; - constructor(private modalService: KbqModalService) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { setInterval(() => (this.percent = (this.percent + STEP) % (MAX_PERCENT + STEP)), INTERVAL); this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren); diff --git a/packages/components-dev/date-formatter/module.ts b/packages/components-dev/date-formatter/module.ts index ae0d15a4f..151f2c314 100644 --- a/packages/components-dev/date-formatter/module.ts +++ b/packages/components-dev/date-formatter/module.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, ViewEncapsulation } from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation, inject } from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; import { DateAdapter, @@ -26,6 +26,11 @@ import { DevLocaleSelector } from '../locale-selector'; encapsulation: ViewEncapsulation.None }) export class DevApp { + private cdr = inject(ChangeDetectorRef); + formatter = inject>(DateFormatter); + adapter = inject>(DateAdapter); + localeService = inject(KBQ_LOCALE_SERVICE); + lang = { absolute: { long: { @@ -329,12 +334,10 @@ export class DevApp { } }; - constructor( - private cdr: ChangeDetectorRef, - public formatter: DateFormatter, - public adapter: DateAdapter, - @Inject(KBQ_LOCALE_SERVICE) public localeService: KbqLocaleService - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.localeService.changes.pipe(distinctUntilChanged(), delay(0)).subscribe(this.onLocaleChange); } diff --git a/packages/components-dev/datepicker/module.ts b/packages/components-dev/datepicker/module.ts index fd534fe91..5c90e83cd 100644 --- a/packages/components-dev/datepicker/module.ts +++ b/packages/components-dev/datepicker/module.ts @@ -1,4 +1,4 @@ -import { AfterViewInit, ChangeDetectionStrategy, Component, ViewEncapsulation, viewChild } from '@angular/core'; +import { AfterViewInit, ChangeDetectionStrategy, Component, ViewEncapsulation, inject, viewChild } from '@angular/core'; import { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms'; import { KbqLuxonDateModule } from '@koobiq/angular-luxon-adapter/adapter'; import { DateAdapter } from '@koobiq/components/core'; @@ -58,6 +58,8 @@ export class DevDocsExamples {} encapsulation: ViewEncapsulation.None }) export class DevApp implements AfterViewInit { + private adapter = inject>(DateAdapter); + date = this.adapter.today(); formControlValue: UntypedFormControl; minDate; @@ -66,7 +68,10 @@ export class DevApp implements AfterViewInit { readonly datepicker = viewChild.required(KbqDatepicker); - constructor(private adapter: DateAdapter) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.formControlValue = new UntypedFormControl(this.adapter.createDateTime(2021, 8, 11, 12, 0, 0, 0)); this.formControlValue.valueChanges.subscribe((value) => { console.log('this.formControlValue.valueChanges: ', value?.toString()); diff --git a/packages/components-dev/input/module.ts b/packages/components-dev/input/module.ts index fdeb56ced..d4eba4519 100644 --- a/packages/components-dev/input/module.ts +++ b/packages/components-dev/input/module.ts @@ -2,7 +2,7 @@ import { AfterViewInit, ChangeDetectionStrategy, Component, - Inject, + inject, model, viewChild, viewChildren, @@ -79,6 +79,8 @@ export class DevDocsExamples {} } }) export class DevApp implements AfterViewInit { + localeService = inject(KBQ_LOCALE_SERVICE); + passwordRules = PasswordRules; password = '456'; @@ -96,7 +98,10 @@ export class DevApp implements AfterViewInit { readonly passwordHints = viewChildren(KbqPasswordHint); readonly formField = viewChild.required('formField'); - constructor(@Inject(KBQ_LOCALE_SERVICE) public localeService: KbqLocaleService) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.locales = Object.keys(this.localeService.locales).filter((key) => key !== 'items'); } diff --git a/packages/components-dev/list/module.ts b/packages/components-dev/list/module.ts index 8c4062686..3e7fd4486 100644 --- a/packages/components-dev/list/module.ts +++ b/packages/components-dev/list/module.ts @@ -1,7 +1,7 @@ import { Clipboard } from '@angular/cdk/clipboard'; import { ScrollingModule } from '@angular/cdk/scrolling'; import { AsyncPipe, JsonPipe } from '@angular/common'; -import { ChangeDetectionStrategy, Component, signal, ViewEncapsulation } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core'; import { FormsModule, UntypedFormControl } from '@angular/forms'; import { PopUpPlacements } from '@koobiq/components/core'; import { KbqDropdownModule } from '@koobiq/components/dropdown'; @@ -54,6 +54,8 @@ export class DevDocsExamples {} encapsulation: ViewEncapsulation.None }) export class DevApp { + private clipboard = inject(Clipboard); + list = signal(Array.from({ length: 5 }, (_, i) => `Item ${i}`)); readonly options = Array.from({ length: 10000 }).map((_, i) => ({ @@ -79,7 +81,10 @@ export class DevApp { }) ); - constructor(private clipboard: Clipboard) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} onSelectionChange($event: KbqListSelectionChange) { console.log(`onSelectionChange: ${$event.option.value}`); diff --git a/packages/components-dev/locale/module.ts b/packages/components-dev/locale/module.ts index 51de73a51..be3d2bd10 100644 --- a/packages/components-dev/locale/module.ts +++ b/packages/components-dev/locale/module.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation } from '@angular/core'; +import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { KbqButtonModule } from '@koobiq/components/button'; import { @@ -31,11 +31,16 @@ import { KbqSelectModule } from '@koobiq/components/select'; encapsulation: ViewEncapsulation.None }) export class DevApp { + private localeService = inject(KBQ_LOCALE_SERVICE); + themePalette = ThemePalette; selectedLanguage; languages; - constructor(@Inject(KBQ_LOCALE_SERVICE) private localeService: KbqLocaleService) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.languages = this.localeService.locales.items.map((item) => ({ ...item, selected: false })); this.selectLanguage(this.languages[0]); diff --git a/packages/components-dev/modal/module.ts b/packages/components-dev/modal/module.ts index 12734948e..59f864879 100644 --- a/packages/components-dev/modal/module.ts +++ b/packages/components-dev/modal/module.ts @@ -82,11 +82,15 @@ export class DevModalLongCustomComponent { changeDetection: ChangeDetectionStrategy.OnPush }) export class DevModalCustomComponent { + private modal = inject(KbqModalRef); + componentColors = KbqComponentColors; - data = inject<{ title?: string; subtitle?: string; myData?: string }>(KBQ_MODAL_DATA, { optional: true }); + data = inject<{ title?: string; subtitle?: string; myData?: string }>(KBQ_MODAL_DATA, { optional: true })!; + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); - constructor(private modal: KbqModalRef) { + constructor() { console.log('data: ', this.data); } @@ -123,12 +127,17 @@ export class DevModalCustomComponent { changeDetection: ChangeDetectionStrategy.OnPush }) export class DevModalFullCustomComponent { + private modal = inject(KbqModalRef); + componentColors = KbqComponentColors; readonly title = input(undefined!); readonly subtitle = input(undefined!); - constructor(private modal: KbqModalRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} destroyModal() { this.modal.destroy({ data: 'this the result data' }); @@ -151,6 +160,8 @@ export class DevModalFullCustomComponent { encapsulation: ViewEncapsulation.None }) export class DevApp { + private modalService = inject(KbqModalService); + componentColors = KbqComponentColors; isVisible = false; @@ -159,7 +170,10 @@ export class DevApp { isLoading = false; - constructor(private modalService: KbqModalService) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} showConfirm() { this.modalService.success({ diff --git a/packages/components-dev/navbar/module.ts b/packages/components-dev/navbar/module.ts index 4ca6115ed..c284a06c2 100644 --- a/packages/components-dev/navbar/module.ts +++ b/packages/components-dev/navbar/module.ts @@ -1,5 +1,5 @@ import { AsyncPipe } from '@angular/common'; -import { ChangeDetectionStrategy, Component, ViewEncapsulation, viewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject, viewChild } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { KbqBadgeModule } from '@koobiq/components/badge'; import { KbqButtonModule } from '@koobiq/components/button'; @@ -54,6 +54,8 @@ export class DevDocsExamples {} encapsulation: ViewEncapsulation.None }) export class DevApp { + private modalService = inject(KbqModalService); + popUpPlacements = PopUpPlacements; readonly navbar = viewChild.required('verticalNavbar'); @@ -78,7 +80,10 @@ export class DevApp { permission$ = timer(500).pipe(map(() => true)); - constructor(private modalService: KbqModalService) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} collapsedNavbarWidthChange() { this.navbar().updateExpandedStateForItems(); diff --git a/packages/components-dev/sidepanel/module.ts b/packages/components-dev/sidepanel/module.ts index 4ce26f25c..1bf71a6e7 100644 --- a/packages/components-dev/sidepanel/module.ts +++ b/packages/components-dev/sidepanel/module.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Inject, TemplateRef, ViewEncapsulation, viewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, inject, viewChild } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { KbqButtonModule } from '@koobiq/components/button'; import { ThemePalette } from '@koobiq/components/core'; @@ -83,13 +83,20 @@ export class DevDocsExamples {} } }) export class DevSidepanelComponent { + data = inject(KBQ_SIDEPANEL_DATA); + themePalette = ThemePalette; openComponentSidepanel: () => void; array = new Array(60); - constructor(@Inject(KBQ_SIDEPANEL_DATA) public data: any) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const data = this.data; + this.openComponentSidepanel = data.openComponentSidepanel; } } @@ -112,6 +119,8 @@ export class DevSidepanelComponent { encapsulation: ViewEncapsulation.None }) export class DevApp { + private sidepanelService = inject(KbqSidepanelService); + themePalette = ThemePalette; position: KbqSidepanelPosition = KbqSidepanelPosition.Right; size: KbqSidepanelSize = KbqSidepanelSize.Medium; @@ -121,7 +130,10 @@ export class DevApp { readonly template = viewChild.required(TemplateRef); array = new Array(40); - constructor(private sidepanelService: KbqSidepanelService) {} + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + constructor() {} openComponentSidepanel() { this.sidepanelService.open(DevSidepanelComponent, { diff --git a/packages/components-dev/timepicker/module.ts b/packages/components-dev/timepicker/module.ts index b5c3e02fe..aeb84e49e 100644 --- a/packages/components-dev/timepicker/module.ts +++ b/packages/components-dev/timepicker/module.ts @@ -1,5 +1,5 @@ import { JsonPipe, LowerCasePipe } from '@angular/common'; -import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core'; +import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core'; import { FormsModule, ReactiveFormsModule, @@ -50,6 +50,9 @@ export class DevExamples {} encapsulation: ViewEncapsulation.None }) export class DevApp { + private fb = inject(UntypedFormBuilder); + private adapter = inject>(DateAdapter); + timeFormats = TimeFormats; placeholder: string = 'placeholder'; minDate: DateTime; @@ -66,10 +69,10 @@ export class DevApp { testForm: UntypedFormGroup; selectedLanguage!: { id: string; name: string }; - constructor( - private fb: UntypedFormBuilder, - private adapter: DateAdapter - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.minDate = this.adapter.createDateTime(2020, 0, 6, 12, 0, 10, 0); this.maxDate = this.adapter.createDateTime(2020, 0, 6, 13, 0, 10, 0); diff --git a/packages/components-dev/toast/module.ts b/packages/components-dev/toast/module.ts index 99276bbb9..d02a1148f 100644 --- a/packages/components-dev/toast/module.ts +++ b/packages/components-dev/toast/module.ts @@ -5,6 +5,7 @@ import { ElementRef, TemplateRef, ViewEncapsulation, + inject, viewChild } from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; @@ -73,13 +74,21 @@ export class DevDocsExamples {} } }) export class DevToastComponent extends KbqToastComponent { - constructor( - readonly data: KbqToastData, - readonly service: KbqToastService, - elementRef: ElementRef, - focusMonitor: FocusMonitor - ) { + readonly data: KbqToastData; + readonly service: KbqToastService; + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const data = inject(KbqToastData); + const service = inject(KbqToastService); + const elementRef = inject>(ElementRef); + const focusMonitor = inject(FocusMonitor); + super(data, service, elementRef, focusMonitor); + this.data = data; + this.service = service; console.log('MyToastComponent: '); } @@ -106,6 +115,11 @@ export class DevToastComponent extends KbqToastComponent { encapsulation: ViewEncapsulation.None }) export class DevApp { + private toastService = inject(KbqToastService); + private newToastService = inject>(KbqToastService); + private modalService = inject(KbqModalService); + private sidepanelService = inject(KbqSidepanelService); + themePalette = ThemePalette; position: KbqSidepanelPosition = KbqSidepanelPosition.Right; @@ -115,12 +129,10 @@ export class DevApp { array = new Array(40); readonly template = viewChild.required>('sipanelTemplate'); - constructor( - private toastService: KbqToastService, - private newToastService: KbqToastService, - private modalService: KbqModalService, - private sidepanelService: KbqSidepanelService - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} openTemplateSidepanel() { this.sidepanelService.open(this.template(), { diff --git a/packages/components-dev/validation/module.ts b/packages/components-dev/validation/module.ts index 7e4c65a4e..e43f2b1ba 100644 --- a/packages/components-dev/validation/module.ts +++ b/packages/components-dev/validation/module.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, ViewEncapsulation } from '@angular/core'; import { AbstractControl, FormsModule, @@ -83,6 +83,9 @@ export class DevDocsExamples {} encapsulation: ViewEncapsulation.None }) export class DevApp { + private formBuilder = inject(UntypedFormBuilder); + changeDetectorRef = inject(ChangeDetectorRef); + themePalette = ThemePalette; reactiveTypeaheadItems: string[] = []; @@ -128,10 +131,10 @@ export class DevApp { formControlTags: UntypedFormControl; formControlTagInputFormControl: UntypedFormControl; - constructor( - private formBuilder: UntypedFormBuilder, - public changeDetectorRef: ChangeDetectorRef - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren); this.treeControl = new FlatTreeControl( diff --git a/packages/components-dev/z-index/module.ts b/packages/components-dev/z-index/module.ts index cf9e2222a..1c9d950c0 100644 --- a/packages/components-dev/z-index/module.ts +++ b/packages/components-dev/z-index/module.ts @@ -8,6 +8,7 @@ import { ElementRef, TemplateRef, ViewEncapsulation, + inject, viewChild } from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; @@ -35,13 +36,22 @@ import { KbqToolTipModule } from '@koobiq/components/tooltip'; } }) export class DevToastComponent extends KbqToastComponent { - constructor( - readonly data: KbqToastData, - readonly service: KbqToastService, - elementRef: ElementRef, - focusMonitor: FocusMonitor - ) { + readonly data: KbqToastData; + readonly service: KbqToastService; + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const data = inject(KbqToastData); + const service = inject(KbqToastService); + const elementRef = inject>(ElementRef); + const focusMonitor = inject(FocusMonitor); + super(data, service, elementRef, focusMonitor); + + this.data = data; + this.service = service; } } @@ -71,6 +81,11 @@ export class DevToastComponent extends KbqToastComponent { encapsulation: ViewEncapsulation.None }) export class DevApp { + private toastService = inject(KbqToastService); + private modalService = inject(KbqModalService); + private sidepanelService = inject(KbqSidepanelService); + private overlayRef = inject(OverlayContainer); + themePalette = ThemePalette; selectValue = ''; @@ -82,12 +97,12 @@ export class DevApp { array = new Array(40); readonly template = viewChild.required>('sipanelTemplate'); - constructor( - private toastService: KbqToastService, - private modalService: KbqModalService, - private sidepanelService: KbqSidepanelService, - private overlayRef: OverlayContainer - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const overlayRef = this.overlayRef; + console.log('overlayRef: ', overlayRef); console.log('overlayRef.getContainerElement(): ', overlayRef.getContainerElement()); console.log('qwe: ', overlayRef.getContainerElement().childNodes.length); diff --git a/packages/components/autocomplete/autocomplete-origin.directive.ts b/packages/components/autocomplete/autocomplete-origin.directive.ts index ff6bac82b..4d4e363da 100644 --- a/packages/components/autocomplete/autocomplete-origin.directive.ts +++ b/packages/components/autocomplete/autocomplete-origin.directive.ts @@ -1,4 +1,4 @@ -import { Directive, ElementRef } from '@angular/core'; +import { Directive, ElementRef, inject } from '@angular/core'; /** * Directive applied to an element to make it usable @@ -9,5 +9,10 @@ import { Directive, ElementRef } from '@angular/core'; exportAs: 'kbqAutocompleteOrigin' }) export class KbqAutocompleteOrigin { - constructor(public elementRef: ElementRef) {} + elementRef = inject>(ElementRef); + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } diff --git a/packages/components/autocomplete/autocomplete-trigger.directive.ts b/packages/components/autocomplete/autocomplete-trigger.directive.ts index f2595b413..b31b4eecf 100644 --- a/packages/components/autocomplete/autocomplete-trigger.directive.ts +++ b/packages/components/autocomplete/autocomplete-trigger.directive.ts @@ -18,13 +18,10 @@ import { ChangeDetectorRef, Directive, ElementRef, - Host, - Inject, InjectionToken, Input, NgZone, OnDestroy, - Optional, Provider, ViewContainerRef, afterNextRender, @@ -116,6 +113,15 @@ export function getKbqAutocompleteMissingPanelError(): Error { export class KbqAutocompleteTrigger implements AfterViewInit, ControlValueAccessor, OnDestroy, KeyboardNavigationHandler { + private elementRef = inject>(ElementRef); + private viewContainerRef = inject(ViewContainerRef); + private changeDetectorRef = inject(ChangeDetectorRef); + private overlay = inject(Overlay); + private zone = inject(NgZone); + private dir = inject(Directionality, { optional: true })!; + private formField = inject(KbqFormField, { optional: true, host: true })!; + private viewportRuler = inject(ViewportRuler); + protected readonly document = inject(DOCUMENT); readonly optionSelections: Observable = defer(() => { @@ -221,18 +227,13 @@ export class KbqAutocompleteTrigger private readonly closeKeyEventStream = new Subject(); private readonly window = inject(KBQ_WINDOW); - constructor( - private elementRef: ElementRef, - private viewContainerRef: ViewContainerRef, - private changeDetectorRef: ChangeDetectorRef, - private overlay: Overlay, - private zone: NgZone, - @Inject(KBQ_AUTOCOMPLETE_SCROLL_STRATEGY) scrollStrategy: any, - @Optional() private dir: Directionality, - @Optional() @Host() private formField: KbqFormField, - // @breaking-change 8.0.0 Make `_viewportRuler` required. - private viewportRuler?: ViewportRuler - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const zone = this.zone; + const scrollStrategy = inject(KBQ_AUTOCOMPLETE_SCROLL_STRATEGY); + afterNextRender(() => { zone.runOutsideAngular(() => this.window.addEventListener('blur', this.windowBlurHandler)); }); diff --git a/packages/components/autocomplete/autocomplete.component.ts b/packages/components/autocomplete/autocomplete.component.ts index 6cd95a935..ec5de4e11 100644 --- a/packages/components/autocomplete/autocomplete.component.ts +++ b/packages/components/autocomplete/autocomplete.component.ts @@ -9,13 +9,10 @@ import { DestroyRef, Directive, ElementRef, - Host, inject, - Inject, InjectionToken, Input, numberAttribute, - Optional, output, QueryList, TemplateRef, @@ -90,6 +87,9 @@ export function KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY(): KbqAutocompleteDefau exportAs: 'kbqAutocomplete' }) export class KbqAutocomplete implements AfterContentInit { + private changeDetectorRef = inject(ChangeDetectorRef); + private elementRef = inject>(ElementRef); + private readonly parentFormField = inject(KbqFormField, { host: true, optional: true })!; private readonly destroyRef = inject(DestroyRef); /** Unique ID to be used by autocomplete trigger's "aria-owns" property. */ id: string = `kbq-autocomplete-${uniqueAutocompleteIdCounter++}`; @@ -203,12 +203,12 @@ export class KbqAutocomplete implements AfterContentInit { private _openOnFocus: boolean = true; - constructor( - private changeDetectorRef: ChangeDetectorRef, - private elementRef: ElementRef, - @Inject(KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS) defaults: KbqAutocompleteDefaultOptions, - @Host() @Optional() private readonly parentFormField: KbqFormField - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const defaults = inject(KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS); + this._autoActiveFirstOption = !!defaults.autoActiveFirstOption; } diff --git a/packages/components/badge/badge.component.ts b/packages/components/badge/badge.component.ts index ed4882eaa..da778b4f9 100644 --- a/packages/components/badge/badge.component.ts +++ b/packages/components/badge/badge.component.ts @@ -8,10 +8,10 @@ import { Directive, ElementRef, forwardRef, + inject, Input, input, Renderer2, - SkipSelf, ViewEncapsulation } from '@angular/core'; import { getNodesWithoutComments } from '@koobiq/components/core'; @@ -50,17 +50,21 @@ export const badgeRightIconClassName = 'kbq-badge-icon_right'; selector: 'kbq-badge' }) export class KbqBadgeCssStyler implements AfterContentInit { + private renderer = inject(Renderer2); + private cdr = inject(ChangeDetectorRef, { skipSelf: true }); + readonly icons = contentChildren(forwardRef(() => KbqIcon)); nativeElement: HTMLElement; isIconButton: boolean = false; - constructor( - elementRef: ElementRef, - private renderer: Renderer2, - @SkipSelf() private cdr: ChangeDetectorRef - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const elementRef = inject>(ElementRef); + this.nativeElement = elementRef.nativeElement; } diff --git a/packages/components/button-toggle/button-toggle.component.ts b/packages/components/button-toggle/button-toggle.component.ts index caf197c18..ba10c5f83 100644 --- a/packages/components/button-toggle/button-toggle.component.ts +++ b/packages/components/button-toggle/button-toggle.component.ts @@ -11,11 +11,11 @@ import { Directive, ElementRef, forwardRef, + inject, Input, input, OnDestroy, OnInit, - Optional, output, viewChild, ViewEncapsulation @@ -61,6 +61,8 @@ export class KbqButtonToggleChange { exportAs: 'kbqButtonToggleGroup' }) export class KbqButtonToggleGroup implements ControlValueAccessor, OnInit, AfterContentInit { + private _changeDetector = inject(ChangeDetectorRef); + /** Whether the toggle group is vertical. */ // TODO: Skipped for migration because: // Accessor inputs cannot be migrated as they are too complex. @@ -156,7 +158,10 @@ export class KbqButtonToggleGroup implements ControlValueAccessor, OnInit, After */ private rawValue: any; - constructor(private _changeDetector: ChangeDetectorRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} /** * The method to be called in order to update ngModel. @@ -332,6 +337,11 @@ export class KbqButtonToggleGroup implements ControlValueAccessor, OnInit, After exportAs: 'kbqButtonToggle' }) export class KbqButtonToggle implements OnInit, AfterContentInit, AfterViewInit, OnDestroy { + buttonToggleGroup = inject(KbqButtonToggleGroup, { optional: true })!; + private changeDetectorRef = inject(ChangeDetectorRef); + private focusMonitor = inject(FocusMonitor); + private element = inject(ElementRef); + readonly icons = contentChildren(KbqIcon, { descendants: true }); /** Whether the button is checked. */ @@ -387,12 +397,10 @@ export class KbqButtonToggle implements OnInit, AfterContentInit, AfterViewInit, private _checked = false; private _disabled: boolean = false; - constructor( - @Optional() public buttonToggleGroup: KbqButtonToggleGroup, - private changeDetectorRef: ChangeDetectorRef, - private focusMonitor: FocusMonitor, - private element: ElementRef - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngOnInit() { this.isSingleSelector = this.buttonToggleGroup && !this.buttonToggleGroup.multiple; diff --git a/packages/components/button/button.component.ts b/packages/components/button/button.component.ts index 162a2930e..487f2ea92 100644 --- a/packages/components/button/button.component.ts +++ b/packages/components/button/button.component.ts @@ -18,7 +18,6 @@ import { OnDestroy, Renderer2, signal, - SkipSelf, ViewChild, ViewEncapsulation } from '@angular/core'; @@ -51,17 +50,21 @@ export const buttonRightIconClassName = 'kbq-button-icon_right'; } }) export class KbqButtonCssStyler implements AfterContentInit { + private renderer = inject(Renderer2); + private cdr = inject(ChangeDetectorRef, { skipSelf: true }); + readonly icons = contentChildren(forwardRef(() => KbqIcon)); nativeElement: HTMLElement; isIconButton: boolean = false; - constructor( - elementRef: ElementRef, - private renderer: Renderer2, - @SkipSelf() private cdr: ChangeDetectorRef - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const elementRef = inject>(ElementRef); + this.nativeElement = elementRef.nativeElement; } @@ -137,6 +140,9 @@ export class KbqButtonCssStyler implements AfterContentInit { } }) export class KbqButton extends KbqColorDirective implements OnDestroy, AfterViewInit, KbqTitleTextRef { + private focusMonitor = inject(FocusMonitor); + private styler = inject(KbqButtonCssStyler); + private readonly changeDetectorRef = inject(ChangeDetectorRef); hasFocus: boolean = false; @@ -190,10 +196,10 @@ export class KbqButton extends KbqColorDirective implements OnDestroy, AfterView private _tabIndex = 0; - constructor( - private focusMonitor: FocusMonitor, - private styler: KbqButtonCssStyler - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); this.color = KbqComponentColors.ContrastFade; diff --git a/packages/components/checkbox/checkbox.ts b/packages/components/checkbox/checkbox.ts index eeef32a61..cbea3a058 100644 --- a/packages/components/checkbox/checkbox.ts +++ b/packages/components/checkbox/checkbox.ts @@ -89,6 +89,9 @@ export class KbqCheckboxChange { exportAs: 'kbqCheckbox' }) export class KbqCheckbox extends KbqColorDirective implements ControlValueAccessor, AfterViewInit, OnDestroy { + private changeDetectorRef = inject(ChangeDetectorRef); + private focusMonitor = inject(FocusMonitor); + readonly big = input(false); /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */ @@ -213,10 +216,10 @@ export class KbqCheckbox extends KbqColorDirective implements ControlValueAccess private currentCheckState: TransitionCheckState = TransitionCheckState.Init; - constructor( - private changeDetectorRef: ChangeDetectorRef, - private focusMonitor: FocusMonitor - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); this.id = this.uniqueId; diff --git a/packages/components/core/formatters/date/formatter.spec.ts b/packages/components/core/formatters/date/formatter.spec.ts index 013ce3f78..2fb1365c2 100644 --- a/packages/components/core/formatters/date/formatter.spec.ts +++ b/packages/components/core/formatters/date/formatter.spec.ts @@ -4,8 +4,8 @@ import { KbqLuxonDateModule, LuxonDateAdapter, LuxonDateModule } from '@koobiq/a import { DateAdapter, DateFormatter, - KBQ_DATE_LOCALE, KBQ_DEFAULT_LOCALE_DATA_FACTORY, + KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KbqAbsoluteLongDatePipe, @@ -45,7 +45,7 @@ describe('Date formatter', () => { providers: [ { provide: DateAdapter, useClass: LuxonDateAdapter }, { provide: LOCALE_ID, useValue: 'ru-RU' }, - { provide: DateFormatter, deps: [DateAdapter, KBQ_DATE_LOCALE] } + DateFormatter ] }).compileComponents(); }); @@ -2312,10 +2312,9 @@ describe('Date formatter (imports and providing)', () => { TestBed.configureTestingModule({ imports: [KbqFormattersModule, KbqLuxonDateModule], providers: [ - { - provide: KBQ_LOCALE_SERVICE, - useFactory: () => new KbqLocaleService('pt-BR', KBQ_DEFAULT_LOCALE_DATA_FACTORY()) - } + { provide: KBQ_LOCALE_ID, useValue: 'pt-BR' }, + { provide: KBQ_LOCALE_DATA, useValue: KBQ_DEFAULT_LOCALE_DATA_FACTORY() }, + { provide: KBQ_LOCALE_SERVICE, useClass: KbqLocaleService } ] }).compileComponents(); }); @@ -2341,11 +2340,8 @@ describe('Date formatter (imports and providing)', () => { imports: [KbqFormattersModule, KbqLuxonDateModule], providers: [ { provide: KBQ_LOCALE_ID, useValue: 'en-US' }, - { - provide: KBQ_LOCALE_SERVICE, - useFactory: (locale: string) => new KbqLocaleService(locale, KBQ_DEFAULT_LOCALE_DATA_FACTORY()), - deps: [KBQ_LOCALE_ID] - } + { provide: KBQ_LOCALE_DATA, useValue: KBQ_DEFAULT_LOCALE_DATA_FACTORY() }, + { provide: KBQ_LOCALE_SERVICE, useClass: KbqLocaleService } ] }).compileComponents(); }); diff --git a/packages/components/core/formatters/date/formatter.ts b/packages/components/core/formatters/date/formatter.ts index 48d47044b..9bab21cdb 100644 --- a/packages/components/core/formatters/date/formatter.ts +++ b/packages/components/core/formatters/date/formatter.ts @@ -1,18 +1,23 @@ -import { inject, Inject, Injectable } from '@angular/core'; +import { inject, Injectable } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { DateAdapter } from '@koobiq/date-adapter'; import { DateFormatter as BaseDateFormatter } from '@koobiq/date-formatter'; -import { KBQ_DATE_LOCALE } from '../../datetime'; +import { KBQ_DATE_LOCALE, DateAdapter as KbqDateAdapter } from '../../datetime'; import { KBQ_LOCALE_SERVICE, KbqLocaleService } from '../../locales'; @Injectable() export class DateFormatter extends BaseDateFormatter { - protected localeService = inject(KBQ_LOCALE_SERVICE, { optional: true }); - constructor( - override readonly adapter: DateAdapter, - @Inject(KBQ_DATE_LOCALE) locale: string - ) { + override readonly adapter: DateAdapter; + + protected localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + constructor() { + const adapter = inject>(KbqDateAdapter); + const locale = inject(KBQ_DATE_LOCALE); + super(adapter, locale); + this.adapter = adapter; this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe((locale) => this.setLocale(locale)); } diff --git a/packages/components/core/formatters/index.ts b/packages/components/core/formatters/index.ts index 4e6e7c410..520e794fa 100644 --- a/packages/components/core/formatters/index.ts +++ b/packages/components/core/formatters/index.ts @@ -1,5 +1,4 @@ import { NgModule } from '@angular/core'; -import { DateAdapter, KBQ_DATE_LOCALE } from '../datetime'; import { DateFormatter } from './date/formatter'; import { AbsoluteDateFormatterImpurePipe, @@ -91,7 +90,7 @@ import { KbqDecimalPipe, KbqRoundDecimalPipe, KbqTableNumberPipe } from './numbe KbqRoundDecimalPipe, KbqTableNumberPipe ], - providers: [{ provide: DateFormatter, deps: [DateAdapter, KBQ_DATE_LOCALE] }], + providers: [DateFormatter], exports: [ KbqDecimalPipe, KbqRoundDecimalPipe, diff --git a/packages/components/core/formatters/number/formatter.spec.ts b/packages/components/core/formatters/number/formatter.spec.ts index 52723493e..41dfd0ff9 100644 --- a/packages/components/core/formatters/number/formatter.spec.ts +++ b/packages/components/core/formatters/number/formatter.spec.ts @@ -1,6 +1,5 @@ import { fakeAsync, flush, TestBed } from '@angular/core/testing'; import { - KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KbqFormattersModule, @@ -17,7 +16,7 @@ describe('KbqRoundDecimalPipe', () => { imports: [KbqFormattersModule], providers: [ { provide: KBQ_LOCALE_ID, useValue: 'ru-RU' }, - { provide: KBQ_LOCALE_SERVICE, useClass: KbqLocaleService, deps: [KBQ_LOCALE_ID, KBQ_LOCALE_DATA] } + { provide: KBQ_LOCALE_SERVICE, useClass: KbqLocaleService } ] }).compileComponents(); diff --git a/packages/components/core/formatters/number/formatter.ts b/packages/components/core/formatters/number/formatter.ts index b8ca7fbb9..2ee660bea 100644 --- a/packages/components/core/formatters/number/formatter.ts +++ b/packages/components/core/formatters/number/formatter.ts @@ -1,5 +1,5 @@ import { coerceNumberProperty } from '@angular/cdk/coercion'; -import { Inject, Injectable, InjectionToken, Optional, Pipe, PipeTransform } from '@angular/core'; +import { Injectable, InjectionToken, Pipe, PipeTransform, inject } from '@angular/core'; import { KBQ_DEFAULT_LOCALE_ID, KBQ_LOCALE_ID, @@ -149,11 +149,13 @@ function parseDigitsInfo(digitsInfo: string): ParsedDigitsInfo { pure: false }) export class KbqDecimalPipe implements KbqNumericPipe, PipeTransform { - constructor( - @Optional() @Inject(KBQ_LOCALE_ID) private id: string, - @Optional() @Inject(KBQ_LOCALE_SERVICE) private localeService: KbqLocaleService, - @Optional() @Inject(KBQ_NUMBER_FORMATTER_OPTIONS) private readonly options: ParsedDigitsInfo - ) { + private id = inject(KBQ_LOCALE_ID, { optional: true })!; + private localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; + private readonly options = inject(KBQ_NUMBER_FORMATTER_OPTIONS, { optional: true })!; + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.options = this.options || KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS; this.localeService?.changes.subscribe((newId: string) => (this.id = newId)); @@ -223,11 +225,13 @@ export class KbqDecimalPipe implements KbqNumericPipe, PipeTransform { pure: false }) export class KbqTableNumberPipe implements KbqNumericPipe, PipeTransform { - constructor( - @Optional() @Inject(KBQ_LOCALE_ID) private id: string, - @Optional() @Inject(KBQ_LOCALE_SERVICE) private localeService: KbqLocaleService, - @Optional() @Inject(KBQ_NUMBER_FORMATTER_OPTIONS) private readonly options: ParsedDigitsInfo - ) { + private id = inject(KBQ_LOCALE_ID, { optional: true })!; + private localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; + private readonly options = inject(KBQ_NUMBER_FORMATTER_OPTIONS, { optional: true })!; + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.options = this.options || KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS; this.localeService?.changes.subscribe((newId: string) => (this.id = newId)); @@ -289,12 +293,14 @@ export function isWithin(startRange: number, endRange: number, valueToCheck: num pure: false }) export class KbqRoundDecimalPipe implements PipeTransform { + private id = inject(KBQ_LOCALE_ID, { optional: true })!; + private localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; roundingOptions: RoundDecimalOptions; - constructor( - @Optional() @Inject(KBQ_LOCALE_ID) private id: string, - @Optional() @Inject(KBQ_LOCALE_SERVICE) private localeService: KbqLocaleService - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.localeService?.changes.subscribe((newId: string) => (this.id = newId)); } diff --git a/packages/components/core/forms/forms.directive.ts b/packages/components/core/forms/forms.directive.ts index beb48e871..6d78351c9 100644 --- a/packages/components/core/forms/forms.directive.ts +++ b/packages/components/core/forms/forms.directive.ts @@ -1,4 +1,4 @@ -import { AfterContentInit, Directive, ElementRef, contentChildren } from '@angular/core'; +import { AfterContentInit, Directive, ElementRef, contentChildren, inject } from '@angular/core'; @Directive({ selector: '.kbq-form__row, .kbq-form__fieldset, .kbq-form__legend', @@ -8,6 +8,8 @@ import { AfterContentInit, Directive, ElementRef, contentChildren } from '@angul exportAs: 'kbqFormElement' }) export class KbqFormElement implements AfterContentInit { + private readonly element = inject>(ElementRef); + margin = false; isRow = false; @@ -17,7 +19,10 @@ export class KbqFormElement implements AfterContentInit { readonly elements = contentChildren(KbqFormElement); - constructor(private readonly element: ElementRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngAfterContentInit(): void { const classList = this.element.nativeElement.classList; diff --git a/packages/components/core/locales/locale-service.ts b/packages/components/core/locales/locale-service.ts index a9e506c5b..e1db975f4 100644 --- a/packages/components/core/locales/locale-service.ts +++ b/packages/components/core/locales/locale-service.ts @@ -1,5 +1,5 @@ import { DOCUMENT } from '@angular/common'; -import { Inject, inject, Injectable, InjectionToken, Optional, Provider } from '@angular/core'; +import { inject, Injectable, InjectionToken, Provider } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { enUSLocaleData } from './en-US'; import { esLALocaleData } from './es-LA'; @@ -77,7 +77,13 @@ export class KbqLocaleService { private readonly langAttrName = inject(KBQ_LOCALE_SERVICE_LANG_ATTR_NAME); - constructor(@Optional() @Inject(KBQ_LOCALE_ID) id: string, @Optional() @Inject(KBQ_LOCALE_DATA) localeData) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const id = inject(KBQ_LOCALE_ID, { optional: true }); + const localeData = inject(KBQ_LOCALE_DATA, { optional: true }); + this.locales = localeData; this.id = id || KBQ_DEFAULT_LOCALE_ID; diff --git a/packages/components/core/option/option.ts b/packages/components/core/option/option.ts index cd38ca127..74c53b505 100644 --- a/packages/components/core/option/option.ts +++ b/packages/components/core/option/option.ts @@ -7,12 +7,11 @@ import { Component, ElementRef, EventEmitter, - Inject, + inject, InjectionToken, Input, input, OnDestroy, - Optional, Output, QueryList, ViewChild, @@ -163,6 +162,10 @@ export class KbqVirtualOption extends KbqOptionBase { exportAs: 'kbqOption' }) export class KbqOption extends KbqOptionBase implements AfterViewChecked, OnDestroy, KbqTitleTextRef { + private readonly elementRef = inject>(ElementRef); + private readonly changeDetectorRef = inject(ChangeDetectorRef); + protected readonly parent = inject(KBQ_OPTION_PARENT_COMPONENT, { optional: true })!; + readonly group = inject(KbqOptgroup, { optional: true })!; @ViewChild('kbqTitleText', { static: false }) textElement: ElementRef; /** The form value of the option. */ @@ -264,12 +267,10 @@ export class KbqOption extends KbqOptionBase implements AfterViewChecked, OnDest */ private isFocusedByMouse: boolean = false; - constructor( - private readonly elementRef: ElementRef, - private readonly changeDetectorRef: ChangeDetectorRef, - @Optional() @Inject(KBQ_OPTION_PARENT_COMPONENT) protected readonly parent: KbqOptionParentComponent, - @Optional() readonly group: KbqOptgroup - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); } diff --git a/packages/components/core/select/common.ts b/packages/components/core/select/common.ts index d068c448f..21528a3c6 100644 --- a/packages/components/core/select/common.ts +++ b/packages/components/core/select/common.ts @@ -1,14 +1,5 @@ import { CdkConnectedOverlay } from '@angular/cdk/overlay'; -import { - AfterContentInit, - booleanAttribute, - Directive, - EventEmitter, - Inject, - input, - OnDestroy, - Optional -} from '@angular/core'; +import { AfterContentInit, booleanAttribute, Directive, EventEmitter, inject, input, OnDestroy } from '@angular/core'; import { Subscription } from 'rxjs'; import { KBQ_FORM_FIELD_REF, KbqFormFieldRef } from '../form-field'; import { END, ESCAPE, HOME, SPACE } from '../keycodes'; @@ -49,6 +40,8 @@ export class KbqSelectFooter {} exportAs: 'kbqSelectSearch' }) export class KbqSelectSearch implements AfterContentInit, OnDestroy { + protected formField = inject(KBQ_FORM_FIELD_REF, { optional: true })!; + readonly changes: EventEmitter = new EventEmitter(); isSearchChanged: boolean = false; @@ -59,7 +52,10 @@ export class KbqSelectSearch implements AfterContentInit, OnDestroy { private searchChangesSubscription: Subscription = new Subscription(); - constructor(@Optional() @Inject(KBQ_FORM_FIELD_REF) protected formField: KbqFormFieldRef) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.formField.canCleanerClearByEsc = false; this.formField.inOverlay.set(true); } diff --git a/packages/components/datepicker/calendar-header.component.ts b/packages/components/datepicker/calendar-header.component.ts index 58fb9ce88..31ed02408 100644 --- a/packages/components/datepicker/calendar-header.component.ts +++ b/packages/components/datepicker/calendar-header.component.ts @@ -1,5 +1,13 @@ import { TitleCasePipe } from '@angular/common'; -import { AfterContentInit, ChangeDetectionStrategy, Component, Input, ViewEncapsulation, output } from '@angular/core'; +import { + AfterContentInit, + ChangeDetectionStrategy, + Component, + Input, + ViewEncapsulation, + inject, + output +} from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; import { DateAdapter, KbqOptionModule } from '@koobiq/components/core'; import { KbqIconModule } from '@koobiq/components/icon'; @@ -35,6 +43,8 @@ export type MonthName = { exportAs: 'kbqCalendarHeader' }) export class KbqCalendarHeader implements AfterContentInit { + private readonly adapter = inject>(DateAdapter); + monthNames: MonthName[]; selectedMonth: number; @@ -114,7 +124,10 @@ export class KbqCalendarHeader implements AfterContentInit { readonly monthSelected = output(); readonly yearSelected = output(); - constructor(private readonly adapter: DateAdapter) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.monthNames = this.adapter.getMonthNames('long').map((name, i) => { return { name, nameShort: this.adapter.getMonthNames('short')[i], value: i, disabled: false }; }); diff --git a/packages/components/datepicker/calendar-header.spec.ts b/packages/components/datepicker/calendar-header.spec.ts index 513775c15..6add41d48 100644 --- a/packages/components/datepicker/calendar-header.spec.ts +++ b/packages/components/datepicker/calendar-header.spec.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, inject as inject_1 } from '@angular/core'; import { ComponentFixture, inject, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { KbqLuxonDateModule, LuxonDateAdapter } from '@koobiq/angular-luxon-adapter/adapter'; @@ -81,10 +81,15 @@ describe('KbqCalendarHeader', () => { ` }) class StandardCalendar { + adapter = inject_1>(DateAdapter); + selected: DateTime; selectedYear: DateTime; selectedMonth: DateTime; startDate = this.adapter.createDate(2017, 0, 31); - constructor(public adapter: DateAdapter) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } diff --git a/packages/components/datepicker/calendar.component.ts b/packages/components/datepicker/calendar.component.ts index 5074adb7f..8e0adc39f 100644 --- a/packages/components/datepicker/calendar.component.ts +++ b/packages/components/datepicker/calendar.component.ts @@ -6,9 +6,9 @@ import { Input, OnChanges, OnDestroy, - Optional, SimpleChanges, ViewEncapsulation, + inject, input, output, viewChild @@ -41,6 +41,9 @@ import { KbqMonthView } from './month-view.component'; exportAs: 'kbqCalendar' }) export class KbqCalendar implements AfterContentInit, OnDestroy, OnChanges { + private readonly adapter = inject>(DateAdapter, { optional: true })!; + private changeDetectorRef = inject(ChangeDetectorRef); + /** A date representing the period (month or year) to start the calendar in. */ // TODO: Skipped for migration because: // Accessor inputs cannot be migrated as they are too complex. @@ -160,11 +163,13 @@ export class KbqCalendar implements AfterContentInit, OnDestroy, OnChanges { /** Subscription to value changes in the associated input element. */ private inputSubscription = Subscription.EMPTY; - constructor( - intl: KbqDatepickerIntl, - @Optional() private readonly adapter: DateAdapter, - private changeDetectorRef: ChangeDetectorRef - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const intl = inject(KbqDatepickerIntl); + const changeDetectorRef = this.changeDetectorRef; + if (!this.adapter) { throw createMissingDateImplError('DateAdapter'); } diff --git a/packages/components/datepicker/calendar.spec.ts b/packages/components/datepicker/calendar.spec.ts index cf4575feb..0e37fdd4c 100644 --- a/packages/components/datepicker/calendar.spec.ts +++ b/packages/components/datepicker/calendar.spec.ts @@ -1,4 +1,4 @@ -import { Component, LOCALE_ID } from '@angular/core'; +import { Component, LOCALE_ID, inject as inject_1 } from '@angular/core'; import { ComponentFixture, TestBed, inject } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { LuxonDateAdapter } from '@koobiq/angular-luxon-adapter/adapter'; @@ -342,12 +342,17 @@ describe('KbqCalendar', () => { ` }) class StandardCalendar { + adapter = inject_1>(DateAdapter); + selected: DateTime; selectedYear: DateTime; selectedMonth: DateTime; startDate = this.adapter.createDate(2017, 0, 31); - constructor(public adapter: DateAdapter) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Component({ @@ -357,11 +362,16 @@ class StandardCalendar { ` }) class CalendarWithMinMax { + adapter = inject_1>(DateAdapter); + startAt: DateTime; minDate = this.adapter.createDate(2016, 0, 1); maxDate = this.adapter.createDate(2018, 0, 1); - constructor(public adapter: DateAdapter) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Component({ @@ -371,10 +381,15 @@ class CalendarWithMinMax { ` }) class CalendarWithDateFilter { + adapter = inject_1>(DateAdapter); + selected: DateTime; startDate = this.adapter.createDate(2017, 0, 1); - constructor(public adapter: DateAdapter) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} dateFilter = (date: DateTime): boolean => !(this.adapter.getDate(date) % 2) && this.adapter.getMonth(date) !== 10; } diff --git a/packages/components/datepicker/datepicker-input.directive.ts b/packages/components/datepicker/datepicker-input.directive.ts index 0adf60fff..d84704228 100644 --- a/packages/components/datepicker/datepicker-input.directive.ts +++ b/packages/components/datepicker/datepicker-input.directive.ts @@ -7,11 +7,9 @@ import { EventEmitter, forwardRef, inject, - Inject, InjectionToken, Input, OnDestroy, - Optional, output, Renderer2 } from '@angular/core'; @@ -248,14 +246,15 @@ interface DateTimeObject { export class KbqDatepickerInput implements KbqFormFieldControl, ControlValueAccessor, Validator, OnDestroy, DoCheck, AfterContentInit { + elementRef = inject>(ElementRef); + private readonly renderer = inject(Renderer2); + readonly adapter = inject>(DateAdapter, { optional: true })!; + private readonly dateFormats = inject(KBQ_DATE_FORMATS, { optional: true })!; /** @docs-private */ - protected readonly formField = inject(KbqFormField, { optional: true, host: true }); + protected readonly formField = inject(KbqFormField, { optional: true, host: true })!; /** @docs-private */ + protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; /** @docs-private */ - protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true }); - - /** @docs-private */ - protected readonly externalConfiguration = inject(KBQ_DATEPICKER_CONFIGURATION, { optional: true }); - + protected readonly externalConfiguration = inject(KBQ_DATEPICKER_CONFIGURATION, { optional: true })!; protected configuration; readonly stateChanges: Subject = new Subject(); @@ -557,12 +556,10 @@ export class KbqDatepickerInput private errorStateTracker: KbqErrorStateTracker; - constructor( - public elementRef: ElementRef, - private readonly renderer: Renderer2, - @Optional() readonly adapter: DateAdapter, - @Optional() @Inject(KBQ_DATE_FORMATS) private readonly dateFormats: KbqDateFormats - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.validator = Validators.compose([ this.parseValidator, this.minValidator, diff --git a/packages/components/datepicker/datepicker.component.ts b/packages/components/datepicker/datepicker.component.ts index 58a97960f..34b9f96ef 100644 --- a/packages/components/datepicker/datepicker.component.ts +++ b/packages/components/datepicker/datepicker.component.ts @@ -11,13 +11,11 @@ import { Component, ComponentRef, inject, - Inject, InjectionToken, Input, input, NgZone, OnDestroy, - Optional, output, viewChild, ViewContainerRef, @@ -81,6 +79,8 @@ export const KBQ_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = { exportAs: 'kbqDatepickerContent' }) export class KbqDatepickerContent implements OnDestroy, AfterViewInit { + private changeDetectorRef = inject(ChangeDetectorRef); + /** Emits when an animation has finished. */ readonly animationDone = new Subject(); @@ -95,7 +95,10 @@ export class KbqDatepickerContent implements OnDestroy, AfterViewInit { private subscriptions = new Subscription(); - constructor(private changeDetectorRef: ChangeDetectorRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngAfterViewInit() { this.subscriptions.add( @@ -129,6 +132,12 @@ export class KbqDatepickerContent implements OnDestroy, AfterViewInit { exportAs: 'kbqDatepicker' }) export class KbqDatepicker implements OnDestroy { + private overlay = inject(Overlay); + private ngZone = inject(NgZone); + private viewContainerRef = inject(ViewContainerRef); + private readonly dateAdapter = inject>(DateAdapter, { optional: true })!; + private dir = inject(Directionality, { optional: true })!; + protected readonly document = inject(DOCUMENT); // TODO: Skipped for migration because: @@ -286,14 +295,12 @@ export class KbqDatepicker implements OnDestroy { private closeSubscription = Subscription.EMPTY; - constructor( - private overlay: Overlay, - private ngZone: NgZone, - private viewContainerRef: ViewContainerRef, - @Inject(KBQ_DATEPICKER_SCROLL_STRATEGY) scrollStrategy: any, - @Optional() private readonly dateAdapter: DateAdapter, - @Optional() private dir: Directionality - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const scrollStrategy = inject(KBQ_DATEPICKER_SCROLL_STRATEGY); + if (!this.dateAdapter) { throw createMissingDateImplError('DateAdapter'); } diff --git a/packages/components/datepicker/datepicker.spec.ts b/packages/components/datepicker/datepicker.spec.ts index 1a5cc2c24..a34ae7cad 100644 --- a/packages/components/datepicker/datepicker.spec.ts +++ b/packages/components/datepicker/datepicker.spec.ts @@ -1,6 +1,6 @@ import { Directionality } from '@angular/cdk/bidi'; import { OverlayContainer } from '@angular/cdk/overlay'; -import { Component, FactoryProvider, Type, ValueProvider, viewChild } from '@angular/core'; +import { Component, FactoryProvider, inject as inject_1, Type, ValueProvider, viewChild } from '@angular/core'; import { ComponentFixture, fakeAsync, flush, inject, TestBed, tick } from '@angular/core/testing'; import { AsyncValidatorFn, @@ -1570,11 +1570,16 @@ class DatepickerWithStartAt { ` }) class DatepickerWithNgModel { + adapter = inject_1>(DateAdapter); + selected: DateTime | null = null; readonly datepicker = viewChild.required>('d'); readonly datepickerInput = viewChild.required(KbqDatepickerInput); - constructor(public adapter: DateAdapter) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Component({ diff --git a/packages/components/datepicker/month-view.component.ts b/packages/components/datepicker/month-view.component.ts index 9db201e4f..5318c9a13 100644 --- a/packages/components/datepicker/month-view.component.ts +++ b/packages/components/datepicker/month-view.component.ts @@ -4,8 +4,8 @@ import { ChangeDetectorRef, Component, Input, - Optional, ViewEncapsulation, + inject, input, output, viewChild @@ -31,6 +31,9 @@ const DAYS_PER_WEEK = 7; exportAs: 'kbqMonthView' }) export class KbqMonthView implements AfterContentInit { + private changeDetectorRef = inject(ChangeDetectorRef); + adapter = inject>(DateAdapter, { optional: true })!; + /** * The date to display in this month view (everything other than the month and year is ignored). */ @@ -110,10 +113,10 @@ export class KbqMonthView implements AfterContentInit { /** The names of the weekdays. */ weekdays: { long: string; narrow: string }[]; - constructor( - private changeDetectorRef: ChangeDetectorRef, - @Optional() public adapter: DateAdapter - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { if (!this.adapter) { throw createMissingDateImplError('DateAdapter'); } diff --git a/packages/components/dropdown/dropdown-content.directive.ts b/packages/components/dropdown/dropdown-content.directive.ts index b9159fd99..059183fb1 100644 --- a/packages/components/dropdown/dropdown-content.directive.ts +++ b/packages/components/dropdown/dropdown-content.directive.ts @@ -10,6 +10,11 @@ import { Subject } from 'rxjs'; selector: 'ng-template[kbqDropdownContent]' }) export class KbqDropdownContent implements OnDestroy { + private template = inject>(TemplateRef); + private appRef = inject(ApplicationRef); + private injector = inject(Injector); + private viewContainerRef = inject(ViewContainerRef); + protected readonly document = inject(DOCUMENT); /** Emits when the dropdown content has been attached. */ @@ -17,12 +22,10 @@ export class KbqDropdownContent implements OnDestroy { private portal: TemplatePortal; private outlet: DomPortalOutlet; - constructor( - private template: TemplateRef, - private appRef: ApplicationRef, - private injector: Injector, - private viewContainerRef: ViewContainerRef - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} /** * Attaches the content with a particular context. diff --git a/packages/components/dropdown/dropdown-item.component.ts b/packages/components/dropdown/dropdown-item.component.ts index 81dd9765e..50e64d044 100644 --- a/packages/components/dropdown/dropdown-item.component.ts +++ b/packages/components/dropdown/dropdown-item.component.ts @@ -6,10 +6,9 @@ import { Component, ContentChild, ElementRef, - Inject, + inject, Input, OnDestroy, - Optional, ViewChild, ViewEncapsulation } from '@angular/core'; @@ -49,6 +48,9 @@ import { KBQ_DROPDOWN_PANEL, KbqDropdownPanel } from './dropdown.types'; exportAs: 'kbqDropdownItem' }) export class KbqDropdownItem implements KbqTitleTextRef, IFocusableOption, AfterViewInit, OnDestroy { + private elementRef = inject>(ElementRef); + private focusMonitor = inject(FocusMonitor); + parentDropdownPanel? = inject(KBQ_DROPDOWN_PANEL, { optional: true })!; @ViewChild('kbqTitleText', { static: true }) textElement: ElementRef; @ContentChild(KbqIcon) icon: KbqIcon; @@ -83,11 +85,10 @@ export class KbqDropdownItem implements KbqTitleTextRef, IFocusableOption, After /** @docs-private */ protected readonly componentColors = KbqComponentColors; - constructor( - private elementRef: ElementRef, - private focusMonitor: FocusMonitor, - @Inject(KBQ_DROPDOWN_PANEL) @Optional() public parentDropdownPanel?: KbqDropdownPanel - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngAfterViewInit() { if (this.focusMonitor) { diff --git a/packages/components/dropdown/dropdown-trigger.directive.ts b/packages/components/dropdown/dropdown-trigger.directive.ts index 86b23e0ff..4ac9ccf3d 100644 --- a/packages/components/dropdown/dropdown-trigger.directive.ts +++ b/packages/components/dropdown/dropdown-trigger.directive.ts @@ -20,16 +20,13 @@ import { ElementRef, EventEmitter, inject, - Inject, InjectionToken, Input, numberAttribute, OnDestroy, - Optional, Output, output, Renderer2, - Self, ViewContainerRef } from '@angular/core'; import { defaultOffsetY, DOWN_ARROW, ENTER, KBQ_WINDOW, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@koobiq/components/core'; @@ -118,13 +115,22 @@ const positionMap = { exportAs: 'kbqDropdownTrigger' }) export class KbqDropdownTrigger implements AfterContentInit, OnDestroy { + private overlay = inject(Overlay); + private elementRef = inject>(ElementRef); + private viewContainerRef = inject(ViewContainerRef); + private scrollStrategy = inject(KBQ_DROPDOWN_SCROLL_STRATEGY); + private parent = inject(KbqDropdown, { optional: true })!; + private dropdownItemInstance = inject(KbqDropdownItem, { optional: true, self: true })!; + private _dir = inject(Directionality, { optional: true })!; + private changeDetectorRef = inject(ChangeDetectorRef); + private focusMonitor = inject(FocusMonitor); + private readonly overlayContainer = inject(OverlayContainer); private readonly renderer = inject(Renderer2); protected readonly isBrowser = inject(Platform).isBrowser; private readonly window = inject(KBQ_WINDOW); - private readonly host = inject(KBQ_DROPDOWN_HOST, { optional: true }); - + private readonly host = inject(KBQ_DROPDOWN_HOST, { optional: true })!; lastDestroyReason: DropdownCloseReason; /** Position offset of the dropdown in the X axis. */ @@ -230,17 +236,13 @@ export class KbqDropdownTrigger implements AfterContentInit, OnDestroy { private classAddedToOverlayContainer: boolean = false; - constructor( - private overlay: Overlay, - private elementRef: ElementRef, - private viewContainerRef: ViewContainerRef, - @Inject(KBQ_DROPDOWN_SCROLL_STRATEGY) private scrollStrategy: any, - @Optional() private parent: KbqDropdown, - @Optional() @Self() private dropdownItemInstance: KbqDropdownItem, - @Optional() private _dir: Directionality, - private changeDetectorRef: ChangeDetectorRef, - private focusMonitor?: FocusMonitor - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const elementRef = this.elementRef; + const dropdownItemInstance = this.dropdownItemInstance; + elementRef.nativeElement.addEventListener('touchstart', this.handleTouchStart, passiveEventListenerOptions); if (dropdownItemInstance) { diff --git a/packages/components/dropdown/dropdown.component.ts b/packages/components/dropdown/dropdown.component.ts index 53ad70792..f5802349e 100644 --- a/packages/components/dropdown/dropdown.component.ts +++ b/packages/components/dropdown/dropdown.component.ts @@ -12,7 +12,6 @@ import { Directive, ElementRef, EventEmitter, - Inject, Input, NgZone, OnDestroy, @@ -23,6 +22,7 @@ import { ViewChild, ViewEncapsulation, contentChild, + inject, input } from '@angular/core'; import { ESCAPE, FocusKeyManager, LEFT_ARROW, RIGHT_ARROW } from '@koobiq/components/core'; @@ -65,6 +65,10 @@ export class KbqDropdownStaticContent {} exportAs: 'kbqDropdown' }) export class KbqDropdown implements AfterContentInit, KbqDropdownPanel, OnInit, OnDestroy { + private elementRef = inject>(ElementRef); + private ngZone = inject(NgZone); + private defaultOptions = inject(KBQ_DROPDOWN_DEFAULT_OPTIONS); + private readonly search = contentChild(KbqFormField); readonly navigationWithWrap = input(false); @@ -226,11 +230,10 @@ export class KbqDropdown implements AfterContentInit, KbqDropdownPanel, OnInit, /** Subscription to tab events on the dropdown panel */ private tabSubscription = Subscription.EMPTY; - constructor( - private elementRef: ElementRef, - private ngZone: NgZone, - @Inject(KBQ_DROPDOWN_DEFAULT_OPTIONS) private defaultOptions: KbqDropdownDefaultOptions - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngOnInit() { this.setPositionClasses(); diff --git a/packages/components/empty-state/empty-state.component.ts b/packages/components/empty-state/empty-state.component.ts index 418af3f0d..3d8b4c5d1 100644 --- a/packages/components/empty-state/empty-state.component.ts +++ b/packages/components/empty-state/empty-state.component.ts @@ -5,8 +5,8 @@ import { ContentChild, Directive, Input, - Optional, ViewEncapsulation, + inject, input } from '@angular/core'; import { KbqDefaultSizes } from '@koobiq/components/core'; @@ -19,7 +19,11 @@ import { KbqIconItem } from '@koobiq/components/icon'; } }) export class KbqEmptyStateIcon { - constructor(@Optional() private icon: KbqIconItem) {} + private icon = inject(KbqIconItem, { optional: true })!; + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} setErrorColor() { if (!this.icon) { diff --git a/packages/components/file-upload/file-upload.spec.ts b/packages/components/file-upload/file-upload.spec.ts index 4fb4b49a0..0d4e2d8ec 100644 --- a/packages/components/file-upload/file-upload.spec.ts +++ b/packages/components/file-upload/file-upload.spec.ts @@ -1,6 +1,6 @@ import { Overlay, OverlayRef } from '@angular/cdk/overlay'; import { DOCUMENT } from '@angular/common'; -import { ChangeDetectorRef, Component, ElementRef, signal, viewChild } from '@angular/core'; +import { ChangeDetectorRef, Component, ElementRef, inject as inject_1, signal, viewChild } from '@angular/core'; import { ComponentFixture, TestBed, fakeAsync, flush, tick } from '@angular/core/testing'; import { AbstractControl, @@ -1532,6 +1532,8 @@ describe('KbqLocalDropzone', () => { ` }) class BasicSingleFileUpload { + elementRef = inject_1(ElementRef); + readonly fileUpload = viewChild.required('fileUpload'); disabled: boolean; file: KbqFileItem | null; @@ -1540,7 +1542,10 @@ class BasicSingleFileUpload { localeConfig = signal>({}); - constructor(public elementRef: ElementRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} onChange = jest.fn().mockImplementation((file: KbqFileItem) => { this.file = file; @@ -1562,12 +1567,17 @@ class BasicSingleFileUpload { ` }) class ControlValueAccessorSingleFileUpload { + elementRef = inject_1(ElementRef); + readonly fileUpload = viewChild.required('fileUpload'); file: KbqFileItem | null; accept: string[] = []; control = new FormControl(); - constructor(public elementRef: ElementRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} onChange = jest.fn().mockImplementation((file: KbqFileItem) => { this.file = file; @@ -1590,6 +1600,9 @@ class ControlValueAccessorSingleFileUpload { ` }) class BasicMultipleFileUpload { + elementRef = inject_1(ElementRef); + cdr = inject_1(ChangeDetectorRef); + readonly fileUpload = viewChild.required('fileUpload'); disabled: boolean; files: KbqFileItem[]; @@ -1597,10 +1610,10 @@ class BasicMultipleFileUpload { localeConfig = signal>({}); - constructor( - public elementRef: ElementRef, - public cdr: ChangeDetectorRef - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} onChange = jest.fn().mockImplementation((files: KbqFileItem[]) => { this.files = files; @@ -1622,12 +1635,17 @@ class BasicMultipleFileUpload { ` }) class ControlValueAccessorMultipleFileUpload { + elementRef = inject_1(ElementRef); + readonly fileUpload = viewChild.required('fileUpload'); files: KbqFileItem[]; accept: string[] = []; control = new FormControl(); - constructor(public elementRef: ElementRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} onChange = jest.fn().mockImplementation((files: KbqFileItem[]) => { this.files = files; @@ -1642,12 +1660,17 @@ class ControlValueAccessorMultipleFileUpload { ` }) class SingleFileUploadWithAsyncValidator { + elementRef = inject_1(ElementRef); + readonly fileUpload = viewChild.required('fileUpload'); readonly control = new FormControl(null, { asyncValidators: [getAsyncValidator()] }); - constructor(public elementRef: ElementRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Component({ @@ -1658,12 +1681,17 @@ class SingleFileUploadWithAsyncValidator { ` }) class SingleFileUploadWithInvalidAsyncValidator { + elementRef = inject_1(ElementRef); + readonly fileUpload = viewChild.required('fileUpload'); readonly control = new FormControl(null, { asyncValidators: [getAsyncValidator(false)] }); - constructor(public elementRef: ElementRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Component({ @@ -1674,12 +1702,17 @@ class SingleFileUploadWithInvalidAsyncValidator { ` }) class SingleFileUploadWithFileReaderValidator { + elementRef = inject_1(ElementRef); + readonly fileUpload = viewChild.required('fileUpload'); readonly control = new FormControl(null, { asyncValidators: [fileContentLinesValidator(MAX_FILE_LINES_FOR_TEST)] }); - constructor(public elementRef: ElementRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Component({ @@ -1690,12 +1723,17 @@ class SingleFileUploadWithFileReaderValidator { ` }) class MultipleFileUploadWithAsyncValidator { + elementRef = inject_1(ElementRef); + readonly fileUpload = viewChild.required('fileUpload'); readonly control = new FormControl(null, { asyncValidators: [getAsyncValidator()] }); - constructor(public elementRef: ElementRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Component({ @@ -1706,12 +1744,17 @@ class MultipleFileUploadWithAsyncValidator { ` }) class MultipleFileUploadWithInvalidAsyncValidator { + elementRef = inject_1(ElementRef); + readonly fileUpload = viewChild.required('fileUpload'); readonly control = new FormControl(null, { asyncValidators: [getAsyncValidator(false)] }); - constructor(public elementRef: ElementRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } // Test host component diff --git a/packages/components/filter-bar/pipes/pipe-date.spec.ts b/packages/components/filter-bar/pipes/pipe-date.spec.ts index 903bd7cd2..38bd81d65 100644 --- a/packages/components/filter-bar/pipes/pipe-date.spec.ts +++ b/packages/components/filter-bar/pipes/pipe-date.spec.ts @@ -5,7 +5,7 @@ import { FormControl, FormGroup } from '@angular/forms'; import { By } from '@angular/platform-browser'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { KbqLuxonDateModule } from '@koobiq/angular-luxon-adapter/adapter'; -import { DateAdapter, DateFormatter, KBQ_DATE_LOCALE } from '@koobiq/components/core'; +import { DateAdapter, DateFormatter } from '@koobiq/components/core'; import { KbqFilter, KbqFilterBar, @@ -88,7 +88,7 @@ describe('KbqPipeDateComponent', () => { imports: [NoopAnimationsModule, KbqFilterBarModule, KbqLuxonDateModule, TestComponent], providers: [ { provide: LOCALE_ID, useValue: 'ru-RU' }, - { provide: DateFormatter, deps: [DateAdapter, KBQ_DATE_LOCALE] } + DateFormatter ] }) .overrideComponent(KbqPipeDateComponent, { diff --git a/packages/components/filter-bar/pipes/pipe-datetime.spec.ts b/packages/components/filter-bar/pipes/pipe-datetime.spec.ts index a00f1fc0f..a209f733c 100644 --- a/packages/components/filter-bar/pipes/pipe-datetime.spec.ts +++ b/packages/components/filter-bar/pipes/pipe-datetime.spec.ts @@ -5,7 +5,7 @@ import { FormControl, FormGroup } from '@angular/forms'; import { By } from '@angular/platform-browser'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { KbqLuxonDateModule } from '@koobiq/angular-luxon-adapter/adapter'; -import { DateAdapter, DateFormatter, KBQ_DATE_LOCALE } from '@koobiq/components/core'; +import { DateAdapter, DateFormatter } from '@koobiq/components/core'; import { KbqFilter, KbqFilterBar, @@ -88,7 +88,7 @@ describe('KbqPipeDatetimeComponent', () => { imports: [NoopAnimationsModule, KbqFilterBarModule, KbqLuxonDateModule, TestComponent], providers: [ { provide: LOCALE_ID, useValue: 'ru-RU' }, - { provide: DateFormatter, deps: [DateAdapter, KBQ_DATE_LOCALE] } + DateFormatter ] }) .overrideComponent(KbqPipeDatetimeComponent, { diff --git a/packages/components/form-field/form-field.ts b/packages/components/form-field/form-field.ts index 7e3913d26..13a66b0be 100644 --- a/packages/components/form-field/form-field.ts +++ b/packages/components/form-field/form-field.ts @@ -4,7 +4,6 @@ import { AfterContentChecked, AfterContentInit, AfterViewInit, - Attribute, booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, @@ -15,15 +14,14 @@ import { DestroyRef, Directive, ElementRef, + HostAttributeToken, inject, InjectionToken, input, model, OnDestroy, - Optional, Provider, QueryList, - Self, viewChild, ViewEncapsulation } from '@angular/core'; @@ -134,8 +132,7 @@ export class KbqFormField private readonly destroyRef = inject(DestroyRef); private readonly changeDetectorRef = inject(ChangeDetectorRef); private readonly focusMonitor = inject(FocusMonitor); - private readonly defaultOptions = inject(KBQ_FORM_FIELD_DEFAULT_OPTIONS, { optional: true }); - /** + private readonly defaultOptions = inject(KBQ_FORM_FIELD_DEFAULT_OPTIONS, { optional: true })!; /** * @docs-private */ readonly elementRef = inject>(ElementRef); @@ -535,14 +532,15 @@ export class KbqFormField exportAs: 'KbqTrim' }) export class KbqTrim { + private readonly noTrim = coerceBooleanProperty(inject(new HostAttributeToken('no-trim'), { optional: true })); + private ngControl = inject(NgControl, { optional: true, self: true })!; + private original: (fn: any) => void; - constructor( - @Attribute('no-trim') private readonly noTrim: boolean, - @Optional() @Self() private ngControl: NgControl - ) { - this.noTrim = coerceBooleanProperty(noTrim); + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + constructor() { if (this.noTrim || !this.ngControl?.valueAccessor) { return; } diff --git a/packages/components/form-field/password-hint.ts b/packages/components/form-field/password-hint.ts index aa969b3b9..cffd717d6 100644 --- a/packages/components/form-field/password-hint.ts +++ b/packages/components/form-field/password-hint.ts @@ -3,11 +3,9 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, - forwardRef, - Inject, + inject, Input, input, - Optional, QueryList, ViewEncapsulation } from '@angular/core'; @@ -62,6 +60,9 @@ export const hasPasswordStrengthError = (passwordHints: QueryList(`kbq-hint-${nextPasswordHintUniqueId++}`); readonly rule = input(); @@ -107,10 +108,10 @@ export class KbqPasswordHint extends KbqHint implements AfterContentInit { private lastControlValue: string; - constructor( - private changeDetectorRef: ChangeDetectorRef, - @Optional() @Inject(forwardRef(() => KBQ_FORM_FIELD_REF)) private formField: any - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); this.color = KbqComponentColors.ContrastFade; this.setDefaultColor(KbqComponentColors.ContrastFade); diff --git a/packages/components/input/input-number.spec.ts b/packages/components/input/input-number.spec.ts index 9a2b0ae4e..03dc8a779 100644 --- a/packages/components/input/input-number.spec.ts +++ b/packages/components/input/input-number.spec.ts @@ -1,4 +1,4 @@ -import { Component, DebugElement, Inject, Optional, Provider, Type, viewChild } from '@angular/core'; +import { Component, DebugElement, Provider, Type, inject, viewChild } from '@angular/core'; import { ComponentFixture, ComponentFixtureAutoDetect, TestBed, fakeAsync, flush, tick } from '@angular/core/testing'; import { FormsModule, @@ -130,9 +130,14 @@ class KbqNumberInputWithFormControl { ` }) class KbqNumberInputWithFormControlName { + private formBuilder = inject(UntypedFormBuilder); + reactiveForm: UntypedFormGroup; - constructor(private formBuilder: UntypedFormBuilder) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.reactiveForm = this.formBuilder.group({ reactiveInputValue: new UntypedFormControl(10) }); @@ -212,6 +217,8 @@ class KbqNumberInputWithCleaner { ` }) class KbqNumberInputWithMask { + localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; + value: number | null = null; max: number = 10; min: number = 3; @@ -221,7 +228,10 @@ class KbqNumberInputWithMask { readonly inputNumberDirective = viewChild.required(KbqNumberInput); - constructor(@Optional() @Inject(KBQ_LOCALE_SERVICE) public localeService: KbqLocaleService) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Component({ @@ -237,13 +247,18 @@ class KbqNumberInputWithMask { ` }) class KbqNumberInputWithInteger { + localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; + value: number | null = null; step: number = 1; bigStep: number = 5; readonly inputNumberDirective = viewChild.required(KbqNumberInput); - constructor(@Optional() @Inject(KBQ_LOCALE_SERVICE) public localeService: KbqLocaleService) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } describe('KbqNumberInput', () => { diff --git a/packages/components/input/input-number.ts b/packages/components/input/input-number.ts index 866f87a54..54a49ef22 100644 --- a/packages/components/input/input-number.ts +++ b/packages/components/input/input-number.ts @@ -1,16 +1,15 @@ import { coerceBooleanProperty } from '@angular/cdk/coercion'; import { - Attribute, booleanAttribute, Directive, ElementRef, EventEmitter, forwardRef, - Inject, + HostAttributeToken, + inject, Input, input, OnDestroy, - Optional, Renderer2 } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; @@ -102,6 +101,9 @@ export const KBQ_NUMBER_INPUT_VALUE_ACCESSOR: any = { exportAs: 'kbqNumericalInput' }) export class KbqNumberInput implements KbqFormFieldControl, ControlValueAccessor, OnDestroy { + private elementRef = inject>(ElementRef); + private readonly renderer = inject(Renderer2); + private localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; /** Emits when the value changes (either due to user input or programmatic change). */ valueChange = new EventEmitter(); @@ -230,15 +232,16 @@ export class KbqNumberInput implements KbqFormFieldControl, ControlValueAcc private valueFromPaste: number | null; - constructor( - private elementRef: ElementRef, - private readonly renderer: Renderer2, - @Attribute('step') step: string, - @Attribute('big-step') bigStep: string, - @Attribute('min') min: string, - @Attribute('max') max: string, - @Optional() @Inject(KBQ_LOCALE_SERVICE) private localeService?: KbqLocaleService - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const step = inject(new HostAttributeToken('step'), { optional: true })!; + const bigStep = inject(new HostAttributeToken('big-step'), { optional: true })!; + const min = inject(new HostAttributeToken('min'), { optional: true })!; + const max = inject(new HostAttributeToken('max'), { optional: true })!; + const localeService = this.localeService; + this.step = isDigit(step) ? parseFloat(step) : SMALL_STEP; this.bigStep = isDigit(bigStep) ? parseFloat(bigStep) : BIG_STEP; this.min = isDigit(min) ? parseFloat(min) : -Infinity; diff --git a/packages/components/input/input-password.ts b/packages/components/input/input-password.ts index 3fc79fde5..1310a6960 100644 --- a/packages/components/input/input-password.ts +++ b/packages/components/input/input-password.ts @@ -1,5 +1,5 @@ import { coerceBooleanProperty } from '@angular/cdk/coercion'; -import { Directive, DoCheck, ElementRef, Inject, Input, OnChanges, OnDestroy, Optional, Self } from '@angular/core'; +import { Directive, DoCheck, ElementRef, Input, OnChanges, OnDestroy, inject } from '@angular/core'; import { FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms'; import { CanUpdateErrorState, ErrorStateMatcher } from '@koobiq/components/core'; import { KbqFormFieldControl } from '@koobiq/components/form-field'; @@ -34,6 +34,12 @@ let nextUniqueId = 0; export class KbqInputPassword implements KbqFormFieldControl, OnChanges, OnDestroy, DoCheck, OnChanges, CanUpdateErrorState { + protected elementRef = inject>(ElementRef); + ngControl = inject(NgControl, { optional: true, self: true })!; + parentForm = inject(NgForm, { optional: true })!; + parentFormGroup = inject(FormGroupDirective, { optional: true })!; + defaultErrorStateMatcher = inject(ErrorStateMatcher); + /** Whether the component is in an error state. */ errorState: boolean = false; @@ -171,14 +177,12 @@ export class KbqInputPassword private _inputValueAccessor: { value: any }; - constructor( - protected elementRef: ElementRef, - @Optional() @Self() public ngControl: NgControl, - @Optional() public parentForm: NgForm, - @Optional() public parentFormGroup: FormGroupDirective, - public defaultErrorStateMatcher: ErrorStateMatcher, - @Optional() @Self() @Inject(KBQ_INPUT_VALUE_ACCESSOR) inputValueAccessor: any - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const inputValueAccessor = inject(KBQ_INPUT_VALUE_ACCESSOR, { optional: true, self: true }); + // If no input value accessor was explicitly specified, use the element as the input value // accessor. this._inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement; diff --git a/packages/components/input/input.ts b/packages/components/input/input.ts index b149aa572..0515726a3 100644 --- a/packages/components/input/input.ts +++ b/packages/components/input/input.ts @@ -1,6 +1,6 @@ import { coerceBooleanProperty } from '@angular/cdk/coercion'; import { getSupportedInputTypes } from '@angular/cdk/platform'; -import { Directive, DoCheck, ElementRef, Inject, Input, OnChanges, OnDestroy, Optional, Self } from '@angular/core'; +import { Directive, DoCheck, ElementRef, Input, OnChanges, OnDestroy, inject } from '@angular/core'; import { FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms'; import { CanUpdateErrorState, ErrorStateMatcher } from '@koobiq/components/core'; import { KbqFormFieldControl } from '@koobiq/components/form-field'; @@ -47,6 +47,13 @@ let nextUniqueId = 0; export class KbqInput implements KbqFormFieldControl, OnChanges, OnDestroy, DoCheck, OnChanges, CanUpdateErrorState { + protected elementRef = inject>(ElementRef); + ngControl = inject(NgControl, { optional: true, self: true })!; + numberInput = inject(KbqNumberInput, { optional: true, self: true })!; + parentForm = inject(NgForm, { optional: true })!; + parentFormGroup = inject(FormGroupDirective, { optional: true })!; + defaultErrorStateMatcher = inject(ErrorStateMatcher); + /** Whether the component is in an error state. */ errorState: boolean = false; @@ -198,15 +205,12 @@ export class KbqInput private inputValueAccessor: { value: any }; - constructor( - protected elementRef: ElementRef, - @Optional() @Self() public ngControl: NgControl, - @Optional() @Self() public numberInput: KbqNumberInput, - @Optional() public parentForm: NgForm, - @Optional() public parentFormGroup: FormGroupDirective, - public defaultErrorStateMatcher: ErrorStateMatcher, - @Optional() @Self() @Inject(KBQ_INPUT_VALUE_ACCESSOR) inputValueAccessor: any - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const inputValueAccessor = inject(KBQ_INPUT_VALUE_ACCESSOR, { optional: true, self: true }); + // If no input value accessor was explicitly specified, use the element as the input value accessor. this.inputValueAccessor = inputValueAccessor || this.elementRef.nativeElement; diff --git a/packages/components/link/link.component.ts b/packages/components/link/link.component.ts index 6f8561cd7..44dcee5ea 100644 --- a/packages/components/link/link.component.ts +++ b/packages/components/link/link.component.ts @@ -50,6 +50,9 @@ export const baseURLRegex = /^http(s)?:\/\//; exportAs: 'kbqLink' }) export class KbqLink implements AfterContentInit, AfterViewInit, OnDestroy { + private elementRef = inject>(ElementRef); + private focusMonitor = inject(FocusMonitor); + protected readonly renderer = inject(Renderer2); protected readonly destroyRef = inject(DestroyRef); protected readonly nativeElement = kbqInjectNativeElement(); @@ -124,10 +127,10 @@ export class KbqLink implements AfterContentInit, AfterViewInit, OnDestroy { readonly icon = contentChild(KbqIcon); - constructor( - private elementRef: ElementRef, - private focusMonitor: FocusMonitor - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.updatePrintUrl(); // @todo 20 In the next major release this line will be deleted. diff --git a/packages/components/list/list-selection.component.ts b/packages/components/list/list-selection.component.ts index 5b4fdc0ff..ce13afa92 100644 --- a/packages/components/list/list-selection.component.ts +++ b/packages/components/list/list-selection.component.ts @@ -5,7 +5,6 @@ import { SelectionModel } from '@angular/cdk/collections'; import { AfterContentInit, AfterViewInit, - Attribute, booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, @@ -18,14 +17,13 @@ import { ElementRef, EventEmitter, forwardRef, + HostAttributeToken, inject, - Inject, Input, input, NgZone, OnDestroy, OnInit, - Optional, Output, output, QueryList, @@ -128,6 +126,9 @@ export class KbqListCopyEvent { preserveWhitespaces: false }) export class KbqListSelection implements AfterContentInit, AfterViewInit, OnDestroy, ControlValueAccessor { + private elementRef = inject>(ElementRef); + private changeDetectorRef = inject(ChangeDetectorRef); + private clipboard = inject(Clipboard, { optional: true })!; protected readonly focusMonitor = inject(FocusMonitor); keyManager: FocusKeyManager; @@ -235,12 +236,12 @@ export class KbqListSelection implements AfterContentInit, AfterViewInit, OnDest private optionBlurSubscription: Subscription | null; - constructor( - private elementRef: ElementRef, - private changeDetectorRef: ChangeDetectorRef, - @Attribute('multiple') multiple: MultipleMode, - @Optional() private clipboard: Clipboard - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const multiple = inject(new HostAttributeToken('multiple'), { optional: true }); + if (multiple === MultipleMode.CHECKBOX || multiple === MultipleMode.KEYBOARD) { this.multipleMode = multiple; } else if (multiple !== null) { @@ -707,6 +708,11 @@ export class KbqListOptionCaption {} preserveWhitespaces: false }) export class KbqListOption implements OnDestroy, OnInit, IFocusableOption, KbqTitleTextRef { + private elementRef = inject>(ElementRef); + private changeDetector = inject(ChangeDetectorRef); + private ngZone = inject(NgZone); + listSelection = inject(KbqListSelection); + readonly group = inject(KbqOptgroup, { optional: true })!; hasFocus: boolean = false; preventBlur: boolean = false; @@ -807,13 +813,10 @@ export class KbqListOption implements OnDestroy, OnInit, IFocusableOption, KbqTi return !!this.pseudoCheckbox(); } - constructor( - private elementRef: ElementRef, - private changeDetector: ChangeDetectorRef, - private ngZone: NgZone, - @Inject(forwardRef(() => KbqListSelection)) public listSelection: KbqListSelection, - @Optional() readonly group: KbqOptgroup - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngOnInit() { const list = this.listSelection; diff --git a/packages/components/list/list.component.ts b/packages/components/list/list.component.ts index 7af9d7cc3..a1ad38ab5 100644 --- a/packages/components/list/list.component.ts +++ b/packages/components/list/list.component.ts @@ -6,7 +6,8 @@ import { ContentChildren, ElementRef, QueryList, - ViewEncapsulation + ViewEncapsulation, + inject } from '@angular/core'; import { KbqLine, KbqLineSetter } from '@koobiq/components/core'; @@ -33,9 +34,14 @@ export class KbqList {} preserveWhitespaces: false }) export class KbqListItem implements AfterContentInit { + private elementRef = inject(ElementRef); + @ContentChildren(KbqLine) lines: QueryList; - constructor(private elementRef: ElementRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngAfterContentInit() { new KbqLineSetter(this.lines, this.elementRef); diff --git a/packages/components/loader-overlay/loader-overlay.component.ts b/packages/components/loader-overlay/loader-overlay.component.ts index 807206fde..528cb2736 100644 --- a/packages/components/loader-overlay/loader-overlay.component.ts +++ b/packages/components/loader-overlay/loader-overlay.component.ts @@ -5,6 +5,7 @@ import { ContentChild, Directive, ElementRef, + inject, Input, input, OnDestroy, @@ -58,6 +59,9 @@ export class KbqLoaderOverlayCaption {} } }) export class KbqLoaderOverlay implements OnInit, OnDestroy { + private elementRef = inject>(ElementRef); + private renderer = inject(Renderer2); + // TODO: Skipped for migration because: // This input is used in a control flow expression (e.g. `@if` or `*ngIf`) // and migrating would break narrowing currently. @@ -108,10 +112,10 @@ export class KbqLoaderOverlay implements OnInit, OnDestroy { @ContentChild(KbqLoaderOverlayText) externalText: KbqLoaderOverlayText | null; @ContentChild(KbqLoaderOverlayCaption) externalCaption: KbqLoaderOverlayCaption | null; - constructor( - private elementRef: ElementRef, - private renderer: Renderer2 - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngOnInit(): void { this.parent = this.elementRef.nativeElement.parentElement; diff --git a/packages/components/markdown/markdown.component.ts b/packages/components/markdown/markdown.component.ts index dfe1bd919..665f52f23 100644 --- a/packages/components/markdown/markdown.component.ts +++ b/packages/components/markdown/markdown.component.ts @@ -6,11 +6,9 @@ import { effect, ElementRef, inject, - Inject, InjectionToken, Input, OnDestroy, - Optional, Provider, signal, viewChild, @@ -45,6 +43,11 @@ export const kbqMarkdownMarkedOptionsProvider = (options: MarkedOptions): Provid } }) export class KbqMarkdown implements OnDestroy { + private readonly markdownService = inject(KbqMarkdownService); + private sanitizer = inject(DomSanitizer); + private readonly markedOptions = + inject(KBQ_MARKDOWN_MARKED_OPTIONS, { optional: true }) ?? undefined; + private readonly contentWrapper = viewChild.required>('contentWrapper'); private readonly outputWrapper = viewChild.required>('outputWrapper'); @@ -70,11 +73,10 @@ export class KbqMarkdown implements OnDestroy { private readonly focusMonitor = inject(FocusMonitor); private readonly links: HTMLAnchorElement[] = []; - constructor( - private readonly markdownService: KbqMarkdownService, - private sanitizer: DomSanitizer, - @Optional() @Inject(KBQ_MARKDOWN_MARKED_OPTIONS) private readonly markedOptions?: MarkedOptions | undefined - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { afterNextRender(() => { const contentWrapper = this.contentWrapper(); diff --git a/packages/components/modal/modal-control.service.ts b/packages/components/modal/modal-control.service.ts index d601fe76e..4f057a84b 100644 --- a/packages/components/modal/modal-control.service.ts +++ b/packages/components/modal/modal-control.service.ts @@ -1,4 +1,4 @@ -import { Injectable, Optional, SkipSelf } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { Subject, Subscription } from 'rxjs'; import { KbqModalRef } from './modal-ref.class'; import { KbqModalComponent } from './modal.component'; @@ -12,6 +12,7 @@ interface IRegisteredMeta { @Injectable({ providedIn: 'root' }) export class KbqModalControlService { + private parentService = inject(KbqModalControlService, { optional: true, skipSelf: true })!; // Track singleton afterAllClose through over the injection tree get afterAllClose(): Subject { return this.parentService ? this.parentService.afterAllClose : this.rootAfterAllClose; @@ -37,7 +38,10 @@ export class KbqModalControlService { return this.parentService ? this.parentService.registeredMetaMap : this.rootRegisteredMetaMap; } - constructor(@Optional() @SkipSelf() private parentService: KbqModalControlService) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} // Register a modal to listen its open/close registerModal(modalRef: KbqModalRef): void { diff --git a/packages/components/modal/modal.component.ts b/packages/components/modal/modal.component.ts index 984065524..6dbf5b5c4 100644 --- a/packages/components/modal/modal.component.ts +++ b/packages/components/modal/modal.component.ts @@ -70,6 +70,15 @@ export class KbqModalComponent extends KbqModalRef implements OnInit, OnChanges, AfterViewInit, OnDestroy, ModalOptions { + private overlay = inject(Overlay); + private renderer = inject(Renderer2); + private cfr = inject(ComponentFactoryResolver); + private elementRef = inject>(ElementRef); + private viewContainer = inject(ViewContainerRef); + private modalControl = inject(KbqModalControlService); + private changeDetector = inject(ChangeDetectorRef); + private focusMonitor = inject(FocusMonitor); + protected readonly document = inject(DOCUMENT); componentColors = KbqComponentColors; @@ -296,16 +305,10 @@ export class KbqModalComponent private animationState: AnimationState; private container: HTMLElement | OverlayRef; - constructor( - private overlay: Overlay, - private renderer: Renderer2, - private cfr: ComponentFactoryResolver, - private elementRef: ElementRef, - private viewContainer: ViewContainerRef, - private modalControl: KbqModalControlService, - private changeDetector: ChangeDetectorRef, - private focusMonitor: FocusMonitor - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); } diff --git a/packages/components/modal/modal.directive.ts b/packages/components/modal/modal.directive.ts index 776abc8ed..96f762772 100644 --- a/packages/components/modal/modal.directive.ts +++ b/packages/components/modal/modal.directive.ts @@ -1,4 +1,4 @@ -import { Component, Directive } from '@angular/core'; +import { Component, Directive, inject } from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; import { KbqIconModule } from '@koobiq/components/icon'; import { KbqTitleDirective } from '@koobiq/components/title'; @@ -34,7 +34,12 @@ import { KbqModalComponent } from './modal.component'; } }) export class KbqModalTitle { - constructor(protected modal: KbqModalComponent) {} + protected modal = inject(KbqModalComponent); + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Directive({ diff --git a/packages/components/modal/modal.service.ts b/packages/components/modal/modal.service.ts index b4bac85cd..7547024db 100644 --- a/packages/components/modal/modal.service.ts +++ b/packages/components/modal/modal.service.ts @@ -1,6 +1,6 @@ import { Overlay, OverlayRef } from '@angular/cdk/overlay'; import { ComponentPortal } from '@angular/cdk/portal'; -import { ComponentRef, Injectable, InjectionToken, Injector, isDevMode } from '@angular/core'; +import { ComponentRef, inject, Injectable, InjectionToken, Injector, isDevMode } from '@angular/core'; import { ESCAPE } from '@koobiq/components/core'; import { Observable } from 'rxjs'; import { filter, switchMap } from 'rxjs/operators'; @@ -75,6 +75,10 @@ export class ModalBuilderForService { @Injectable({ providedIn: 'root' }) export class KbqModalService { + private readonly overlay = inject(Overlay); + private readonly modalControl = inject(KbqModalControlService); + private injector = inject(Injector); + // Track of the current close modals (we assume invisible is close this time) get openModals(): KbqModalRef[] { return this.modalControl.openModals; @@ -84,11 +88,10 @@ export class KbqModalService { return this.modalControl.afterAllClose.asObservable(); } - constructor( - private readonly overlay: Overlay, - private readonly modalControl: KbqModalControlService, - private injector: Injector - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} // Closes all of the currently-open dialogs closeAll(): void { diff --git a/packages/components/modal/modal.spec.ts b/packages/components/modal/modal.spec.ts index de597420d..1436d2fd6 100644 --- a/packages/components/modal/modal.spec.ts +++ b/packages/components/modal/modal.spec.ts @@ -609,10 +609,13 @@ class TestComponentLevelService { ` }) export class CustomModalComponent { - constructor( - public componentLevelService: TestComponentLevelService, - public injector: Injector - ) {} + componentLevelService = inject(TestComponentLevelService); + injector = inject(Injector); + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Component({ @@ -626,10 +629,13 @@ export class CustomModalComponent { ] }) export class CustomComponent { - constructor( - public modalService: KbqModalService, - public injector: Injector - ) {} + modalService = inject(KbqModalService); + injector = inject(Injector); + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} open() { return this.modalService.open({ @@ -662,7 +668,10 @@ class TestModalContentComponent {} class ModalByServiceComponent { nonServiceModalVisible = false; - constructor(_modalControlService: KbqModalControlService) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Component({ @@ -680,13 +689,16 @@ class ModalByServiceComponent { providers: [KbqModalControlService] }) class ModalByServiceFromDropdownComponent { + modalControlService = inject(KbqModalControlService); + modalService = inject(KbqModalService); + nonServiceModalVisible = false; kbqOkText = 'Save'; - constructor( - public modalControlService: KbqModalControlService, - public modalService: KbqModalService - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} showConfirm() { this.modalService.success({ diff --git a/packages/components/navbar/navbar-item.component.ts b/packages/components/navbar/navbar-item.component.ts index 21ee6f5de..3bbba3436 100644 --- a/packages/components/navbar/navbar-item.component.ts +++ b/packages/components/navbar/navbar-item.component.ts @@ -12,7 +12,6 @@ import { Input, NgZone, OnDestroy, - Optional, ViewEncapsulation, booleanAttribute, contentChild, @@ -128,6 +127,11 @@ export class KbqNavbarDivider {} } }) export class KbqNavbarFocusableItem implements AfterContentInit, AfterViewInit, OnDestroy, IFocusableOption { + private elementRef = inject>(ElementRef); + private changeDetector = inject(ChangeDetectorRef); + private focusMonitor = inject(FocusMonitor); + private ngZone = inject(NgZone); + readonly title = contentChild(KbqNavbarTitle); readonly button = contentChild(KbqButton); @@ -179,12 +183,10 @@ export class KbqNavbarFocusableItem implements AfterContentInit, AfterViewInit, return -1; } - constructor( - private elementRef: ElementRef, - private changeDetector: ChangeDetectorRef, - private focusMonitor: FocusMonitor, - private ngZone: NgZone - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngAfterViewInit(): void { this.focusMonitor.monitor(this.elementRef); @@ -369,6 +371,11 @@ export class KbqNavbarRectangleElement { exportAs: 'kbqNavbarItem' }) export class KbqNavbarItem extends KbqTooltipTrigger implements AfterContentInit { + rectangleElement = inject(KbqNavbarRectangleElement); + navbarFocusableItem = inject(KbqNavbarFocusableItem); + private changeDetectorRef = inject(ChangeDetectorRef); + private dropdownTrigger = inject(KbqDropdownTrigger, { optional: true })!; + private bento = inject(KbqNavbarBento, { optional: true })!; readonly title = contentChild(KbqNavbarTitle); readonly icon = contentChild(KbqIcon); @@ -469,13 +476,10 @@ export class KbqNavbarItem extends KbqTooltipTrigger implements AfterContentInit return !!this.title()?.isOverflown; } - constructor( - public rectangleElement: KbqNavbarRectangleElement, - public navbarFocusableItem: KbqNavbarFocusableItem, - private changeDetectorRef: ChangeDetectorRef, - @Optional() private dropdownTrigger: KbqDropdownTrigger, - @Optional() private bento: KbqNavbarBento - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); if (this.hasDropDownTrigger) { diff --git a/packages/components/navbar/navbar.component.ts b/packages/components/navbar/navbar.component.ts index 57c21f07a..67661f31f 100644 --- a/packages/components/navbar/navbar.component.ts +++ b/packages/components/navbar/navbar.component.ts @@ -41,6 +41,10 @@ export type KbqNavbarContainerPositionType = 'left' | 'right'; @Directive() export class KbqFocusableComponent implements AfterContentInit, AfterViewInit, OnDestroy { + protected readonly changeDetectorRef = inject(ChangeDetectorRef); + protected readonly elementRef = inject>(ElementRef); + protected readonly focusMonitor = inject(FocusMonitor); + @ContentChildren(forwardRef(() => KbqNavbarFocusableItem), { descendants: true }) focusableItems: QueryList; @@ -74,11 +78,10 @@ export class KbqFocusableComponent implements AfterContentInit, AfterViewInit, O private optionFocusSubscription: Subscription | null; private optionBlurSubscription: Subscription | null; - constructor( - protected readonly changeDetectorRef: ChangeDetectorRef, - protected readonly elementRef: ElementRef, - protected readonly focusMonitor: FocusMonitor - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngAfterContentInit(): void { this.keyManager = new FocusKeyManager(this.focusableItems).withTypeAhead(); @@ -210,6 +213,10 @@ export class KbqNavbarContainer {} } }) export class KbqNavbar extends KbqFocusableComponent implements AfterViewInit, AfterContentInit, OnDestroy { + protected readonly elementRef: ElementRef; + protected readonly changeDetectorRef: ChangeDetectorRef; + protected readonly focusMonitor: FocusMonitor; + readonly rectangleElements = contentChildren( forwardRef(() => KbqNavbarRectangleElement), { descendants: true } @@ -245,12 +252,18 @@ export class KbqNavbar extends KbqFocusableComponent implements AfterViewInit, A private resizeSubscription: Subscription; - constructor( - protected readonly elementRef: ElementRef, - protected readonly changeDetectorRef: ChangeDetectorRef, - protected readonly focusMonitor: FocusMonitor - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const elementRef = inject>(ElementRef); + const changeDetectorRef = inject(ChangeDetectorRef); + const focusMonitor = inject(FocusMonitor); + super(changeDetectorRef, elementRef, focusMonitor); + this.elementRef = elementRef; + this.changeDetectorRef = changeDetectorRef; + this.focusMonitor = focusMonitor; this.resizeSubscription = this.resizeStream .pipe(debounceTime(this.resizeDebounceInterval), takeUntilDestroyed()) diff --git a/packages/components/navbar/vertical-navbar.component.ts b/packages/components/navbar/vertical-navbar.component.ts index 7d9baaf0e..d93cbe041 100644 --- a/packages/components/navbar/vertical-navbar.component.ts +++ b/packages/components/navbar/vertical-navbar.component.ts @@ -70,11 +70,11 @@ export const KBQ_VERTICAL_NAVBAR_CONFIGURATION = new InjectionToken('KbqVertical exportAs: 'KbqVerticalNavbar' }) export class KbqVerticalNavbar extends KbqFocusableComponent implements AfterContentInit { - /** @docs-private */ - protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true }); - - readonly externalConfiguration = inject(KBQ_VERTICAL_NAVBAR_CONFIGURATION, { optional: true }); + protected elementRef: ElementRef; + /** @docs-private */ + protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; + readonly externalConfiguration = inject(KBQ_VERTICAL_NAVBAR_CONFIGURATION, { optional: true })!; configuration; rectangleElements = contentChildren( @@ -108,12 +108,16 @@ export class KbqVerticalNavbar extends KbqFocusableComponent implements AfterCon private _expanded: boolean = false; - constructor( - protected elementRef: ElementRef, - changeDetectorRef: ChangeDetectorRef, - focusMonitor: FocusMonitor - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const elementRef = inject>(ElementRef); + const changeDetectorRef = inject(ChangeDetectorRef); + const focusMonitor = inject(FocusMonitor); + super(changeDetectorRef, elementRef, focusMonitor); + this.elementRef = elementRef; this.animationDone.pipe(takeUntilDestroyed()).subscribe(this.updateTooltipForItems); diff --git a/packages/components/notification-center/notification-center.module.ts b/packages/components/notification-center/notification-center.module.ts index 315b57580..880c66255 100644 --- a/packages/components/notification-center/notification-center.module.ts +++ b/packages/components/notification-center/notification-center.module.ts @@ -1,6 +1,6 @@ import { ConfigurableFocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY, FocusTrapFactory } from '@angular/cdk/a11y'; import { NgModule } from '@angular/core'; -import { DateAdapter, DateFormatter, EmptyFocusTrapStrategy } from '@koobiq/components/core'; +import { EmptyFocusTrapStrategy } from '@koobiq/components/core'; import { KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER, KbqNotificationCenterComponent, @@ -17,7 +17,7 @@ import { KbqNotificationCenterService } from './notification-center.service'; KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER, { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory }, { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }, - { provide: KbqNotificationCenterService, deps: [DateAdapter, DateFormatter] } + KbqNotificationCenterService ], exports: [ KbqNotificationCenterComponent, diff --git a/packages/components/popover/popover-confirm.component.ts b/packages/components/popover/popover-confirm.component.ts index 977342b72..fdf0fe60e 100644 --- a/packages/components/popover/popover-confirm.component.ts +++ b/packages/components/popover/popover-confirm.component.ts @@ -3,11 +3,10 @@ import { ChangeDetectionStrategy, Component, Directive, - Inject, InjectionToken, Input, - Optional, ViewEncapsulation, + inject, output } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; @@ -81,10 +80,13 @@ export class KbqPopoverConfirmTrigger extends KbqPopoverTrigger { private _confirmButtonText: string = 'Да'; - constructor( - @Optional() @Inject(KBQ_POPOVER_CONFIRM_TEXT) confirmText: string, - @Optional() @Inject(KBQ_POPOVER_CONFIRM_BUTTON_TEXT) confirmButtonText: string - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const confirmText = inject(KBQ_POPOVER_CONFIRM_TEXT, { optional: true }); + const confirmButtonText = inject(KBQ_POPOVER_CONFIRM_BUTTON_TEXT, { optional: true }); + super(); this.confirmText = confirmText || 'Вы уверены, что хотите продолжить?'; diff --git a/packages/components/popover/popover.spec.ts b/packages/components/popover/popover.spec.ts index 1fff9a2b5..e6fbe45ce 100644 --- a/packages/components/popover/popover.spec.ts +++ b/packages/components/popover/popover.spec.ts @@ -1,6 +1,6 @@ import { coerceElement } from '@angular/cdk/coercion'; import { FlexibleConnectedPositionStrategy, OverlayContainer } from '@angular/cdk/overlay'; -import { Component, DebugElement, ElementRef, Provider, Type, viewChild } from '@angular/core'; +import { Component, DebugElement, ElementRef, Provider, Type, inject as inject_1, viewChild } from '@angular/core'; import { ComponentFixture, TestBed, fakeAsync, inject, tick } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; @@ -414,9 +414,14 @@ describe('KbqPopover', () => { ` }) export class PopoverSimple { + elementRef = inject_1(ElementRef); + readonly popoverTrigger = viewChild.required(KbqPopoverTrigger); readonly triggerElementRef = viewChild.required(KbqPopoverTrigger, { read: ElementRef }); - constructor(public elementRef: ElementRef) {} + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + constructor() {} } @Component({ diff --git a/packages/components/radio/radio.component.ts b/packages/components/radio/radio.component.ts index d32576c8c..95e56285c 100644 --- a/packages/components/radio/radio.component.ts +++ b/packages/components/radio/radio.component.ts @@ -11,12 +11,12 @@ import { Directive, ElementRef, forwardRef, + inject, Input, input, numberAttribute, OnDestroy, OnInit, - Optional, output, QueryList, viewChild, @@ -61,6 +61,8 @@ export const KBQ_RADIO_GROUP_CONTROL_VALUE_ACCESSOR: any = { exportAs: 'kbqRadioGroup' }) export class KbqRadioGroup implements AfterContentInit, ControlValueAccessor { + private readonly changeDetector = inject(ChangeDetectorRef); + readonly big = input(false); /** Name of the radio button group. All radio buttons inside this group will use this name. */ @@ -183,7 +185,10 @@ export class KbqRadioGroup implements AfterContentInit, ControlValueAccessor { /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */ private _labelPosition: 'before' | 'after' = 'after'; - constructor(private readonly changeDetector: ChangeDetectorRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} /** The method to be called in order to update ngModel */ controlValueAccessorChangeFn: (value: any) => void = () => {}; @@ -308,6 +313,10 @@ export class KbqRadioGroup implements AfterContentInit, ControlValueAccessor { exportAs: 'kbqRadioButton' }) export class KbqRadioButton extends KbqColorDirective implements OnInit, AfterViewInit, OnDestroy { + private readonly changeDetector = inject(ChangeDetectorRef); + private focusMonitor = inject(FocusMonitor); + private readonly radioDispatcher = inject(UniqueSelectionDispatcher); + /** Whether this radio button is checked. */ // TODO: Skipped for migration because: // Accessor inputs cannot be migrated as they are too complex. @@ -464,13 +473,14 @@ export class KbqRadioButton extends KbqColorDirective implements OnInit, AfterVi /** Value assigned to this radio. */ private _value: any = null; - constructor( - @Optional() radioGroup: KbqRadioGroup, - private readonly changeDetector: ChangeDetectorRef, - private focusMonitor: FocusMonitor, - private readonly radioDispatcher: UniqueSelectionDispatcher - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const radioGroup = inject(KbqRadioGroup, { optional: true })!; + super(); + const radioDispatcher = this.radioDispatcher; this.id = this.uniqueId; diff --git a/packages/components/scrollbar/scrollbar.component.ts b/packages/components/scrollbar/scrollbar.component.ts index 4cdfe9245..b164f8ac7 100644 --- a/packages/components/scrollbar/scrollbar.component.ts +++ b/packages/components/scrollbar/scrollbar.component.ts @@ -67,6 +67,9 @@ const filterEvents = (emits: KbqScrollbarEvents, events: KbqScrollbarEvents) => exportAs: 'kbqScrollbar' }) export class KbqScrollbar implements AfterViewInit, OnDestroy { + private ngZone = inject(NgZone); + private targetElement = inject>(ElementRef); + /** Element that is being overflowed */ readonly contentElement = viewChild.required>('content'); private readonly kbqScrollbarDirective = viewChild.required('content', { read: KbqScrollbarDirective }); @@ -92,10 +95,10 @@ export class KbqScrollbar implements AfterViewInit, OnDestroy { private readonly injector = inject(Injector); - constructor( - private ngZone: NgZone, - private targetElement: ElementRef - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngAfterViewInit() { afterNextRender( diff --git a/packages/components/scrollbar/scrollbar.directive.ts b/packages/components/scrollbar/scrollbar.directive.ts index b627c9b2b..bd58a7beb 100644 --- a/packages/components/scrollbar/scrollbar.directive.ts +++ b/packages/components/scrollbar/scrollbar.directive.ts @@ -1,5 +1,5 @@ import { CdkScrollable } from '@angular/cdk/overlay'; -import { Directive, Inject, Input, NgZone, OnDestroy, input } from '@angular/core'; +import { Directive, Input, NgZone, OnDestroy, inject, input } from '@angular/core'; import { OverlayScrollbars } from 'overlayscrollbars'; import { KBQ_SCROLLBAR_CONFIG, KbqScrollbarEvents, KbqScrollbarOptions, KbqScrollbarTarget } from './scrollbar.types'; @@ -57,6 +57,9 @@ const createDefer = (): Defer => { hostDirectives: [CdkScrollable] }) export class KbqScrollbarDirective implements OnDestroy { + private ngZone = inject(NgZone); + private scrollbarConfig = inject(KBQ_SCROLLBAR_CONFIG); + private requestDefer: ReturnType[0]; private cancelDefer: ReturnType[1]; @@ -100,10 +103,10 @@ export class KbqScrollbarDirective implements OnDestroy { scrollbarInstance?: OverlayScrollbars; - constructor( - private ngZone: NgZone, - @Inject(KBQ_SCROLLBAR_CONFIG) private scrollbarConfig?: KbqScrollbarOptions - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { const [requestDefer, cancelDefer] = createDefer(); this.requestDefer = requestDefer; diff --git a/packages/components/select/select.component.spec.ts b/packages/components/select/select.component.spec.ts index e16960f94..7dfd88f1c 100644 --- a/packages/components/select/select.component.spec.ts +++ b/packages/components/select/select.component.spec.ts @@ -10,6 +10,7 @@ import { TemplateRef, Type, getDebugNode, + inject as inject_1, viewChild, viewChildren } from '@angular/core'; @@ -1421,6 +1422,8 @@ class MultiSelectWithCustomizedTagContent { ` }) class CdkVirtualScrollViewportSelect { + scrollDispatcher = inject_1(ScrollDispatcher); + itemSize = 32; control = new UntypedFormControl(); isRequired: boolean; @@ -1432,7 +1435,10 @@ class CdkVirtualScrollViewportSelect { readonly viewport = viewChild.required(CdkVirtualScrollViewport); options: any[] = OPTIONS.sort(); - constructor(public scrollDispatcher: ScrollDispatcher) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Component({ @@ -1476,6 +1482,8 @@ class CdkVirtualScrollViewportSelectOptionAsObject extends CdkVirtualScrollViewp id: number; name: string; }> { + scrollDispatcher: ScrollDispatcher; + values: any[] = [ { id: 3, name: 'Anapa' }, { id: 55, name: 'Lyubertsy' }, @@ -1486,8 +1494,15 @@ class CdkVirtualScrollViewportSelectOptionAsObject extends CdkVirtualScrollViewp return { id: index, name: option, active: true }; }); - constructor(public scrollDispatcher: ScrollDispatcher) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const scrollDispatcher = inject_1(ScrollDispatcher); + super(scrollDispatcher); + + this.scrollDispatcher = scrollDispatcher; } } diff --git a/packages/components/select/select.component.ts b/packages/components/select/select.component.ts index bf03f3540..77faf6d03 100644 --- a/packages/components/select/select.component.ts +++ b/packages/components/select/select.component.ts @@ -16,19 +16,15 @@ import { DoCheck, ElementRef, EventEmitter, - Host, - Inject, InjectionToken, Input, NgZone, OnDestroy, OnInit, - Optional, Output, Provider, QueryList, Renderer2, - Self, TemplateRef, ViewChild, ViewChildren, @@ -209,13 +205,25 @@ export class KbqSelect KbqFormFieldControl, CanUpdateErrorState { + private readonly _changeDetectorRef = inject(ChangeDetectorRef); + private readonly _ngZone = inject(NgZone); + private readonly _renderer = inject(Renderer2); + defaultErrorStateMatcher = inject(ErrorStateMatcher); + elementRef = inject>(ElementRef); + private overlayContainer = inject(OverlayContainer); + private readonly _dir = inject(Directionality, { optional: true })!; + parentForm = inject(NgForm, { optional: true })!; + parentFormGroup = inject(FormGroupDirective, { optional: true })!; + private readonly parentFormField = inject(KbqFormField, { host: true, optional: true })!; + ngControl = inject(NgControl, { self: true, optional: true })!; + private readonly scrollStrategyFactory = inject(KBQ_SELECT_SCROLL_STRATEGY); + protected localeService? = inject(KBQ_LOCALE_SERVICE, { optional: true })!; /** @docs-private */ protected readonly destroyRef = inject(DestroyRef); protected readonly isBrowser = inject(Platform).isBrowser; - protected readonly defaultOptions = inject(KBQ_SELECT_OPTIONS, { optional: true }); - + protected readonly defaultOptions = inject(KBQ_SELECT_OPTIONS, { optional: true })!; private readonly window = inject(KBQ_WINDOW); /** Whether the component is in an error state. */ @@ -838,21 +846,10 @@ export class KbqSelect private openPanelTimeout: ReturnType; - constructor( - private readonly _changeDetectorRef: ChangeDetectorRef, - private readonly _ngZone: NgZone, - private readonly _renderer: Renderer2, - public defaultErrorStateMatcher: ErrorStateMatcher, - public elementRef: ElementRef, - private overlayContainer: OverlayContainer, - @Optional() private readonly _dir: Directionality, - @Optional() public parentForm: NgForm, - @Optional() public parentFormGroup: FormGroupDirective, - @Host() @Optional() private readonly parentFormField: KbqFormField, - @Self() @Optional() public ngControl: NgControl, - @Inject(KBQ_SELECT_SCROLL_STRATEGY) private readonly scrollStrategyFactory, - @Optional() @Inject(KBQ_LOCALE_SERVICE) protected localeService?: KbqLocaleService - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); this.localeService?.changes.subscribe(this.updateLocaleParams); diff --git a/packages/components/sidebar/sidebar.component.ts b/packages/components/sidebar/sidebar.component.ts index 3222f33a3..8052c8dd4 100644 --- a/packages/components/sidebar/sidebar.component.ts +++ b/packages/components/sidebar/sidebar.component.ts @@ -76,6 +76,9 @@ export class KbqSidebarClosed { exportAs: 'kbqSidebar' }) export class KbqSidebar implements OnDestroy, AfterContentInit { + private ngZone = inject(NgZone); + private elementRef = inject(ElementRef); + /** * @docs-private */ @@ -139,10 +142,10 @@ export class KbqSidebar implements OnDestroy, AfterContentInit { private unbindKeydownListener: ReturnType | null = null; - constructor( - private ngZone: NgZone, - private elementRef: ElementRef - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { afterNextRender(() => this.registerKeydownListener()); } diff --git a/packages/components/sidepanel/sidepanel-container.component.ts b/packages/components/sidepanel/sidepanel-container.component.ts index 57b218afb..5b7989261 100644 --- a/packages/components/sidepanel/sidepanel-container.component.ts +++ b/packages/components/sidepanel/sidepanel-container.component.ts @@ -9,7 +9,7 @@ import { ElementRef, EmbeddedViewRef, EventEmitter, - Inject, + inject, InjectionToken, OnDestroy, viewChild, @@ -51,6 +51,11 @@ export const KBQ_SIDEPANEL_WITH_INDENT = new InjectionToken('kbq-sidepa animations: [kbqSidepanelAnimations.sidepanelState] }) export class KbqSidepanelContainerComponent extends BasePortalOutlet implements OnDestroy { + private elementRef = inject>(ElementRef); + private changeDetectorRef = inject(ChangeDetectorRef); + sidepanelConfig = inject(KbqSidepanelConfig); + withIndent = inject(KBQ_SIDEPANEL_WITH_INDENT); + /** ID for the container DOM element. */ id: string; @@ -93,12 +98,10 @@ export class KbqSidepanelContainerComponent extends BasePortalOutlet implements /** Whether the component has been destroyed. */ private destroyed: boolean; - constructor( - private elementRef: ElementRef, - private changeDetectorRef: ChangeDetectorRef, - public sidepanelConfig: KbqSidepanelConfig, - @Inject(KBQ_SIDEPANEL_WITH_INDENT) public withIndent: boolean - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); } diff --git a/packages/components/sidepanel/sidepanel-directives.ts b/packages/components/sidepanel/sidepanel-directives.ts index 29efa9d78..16064b7f9 100644 --- a/packages/components/sidepanel/sidepanel-directives.ts +++ b/packages/components/sidepanel/sidepanel-directives.ts @@ -8,7 +8,6 @@ import { input, OnChanges, OnInit, - Optional, SimpleChanges } from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; @@ -29,17 +28,20 @@ import { KbqSidepanelService } from './sidepanel.service'; } }) export class KbqSidepanelClose implements OnInit, OnChanges { + sidepanelRef = inject(KbqSidepanelRef, { optional: true })!; + private elementRef = inject>(ElementRef); + private sidepanelService = inject(KbqSidepanelService); + // TODO: Skipped for migration because: // Your application code writes to the input. This prevents migration. @Input('kbq-sidepanel-close') sidepanelResult: any; readonly kbqSidepanelClose = input(); - constructor( - @Optional() public sidepanelRef: KbqSidepanelRef, - private elementRef: ElementRef, - private sidepanelService: KbqSidepanelService - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngOnInit() { if (!this.sidepanelRef) { diff --git a/packages/components/sidepanel/sidepanel.service.ts b/packages/components/sidepanel/sidepanel.service.ts index ff3e614f4..ba0372082 100644 --- a/packages/components/sidepanel/sidepanel.service.ts +++ b/packages/components/sidepanel/sidepanel.service.ts @@ -1,16 +1,6 @@ import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay'; import { ComponentPortal, ComponentType, TemplatePortal } from '@angular/cdk/portal'; -import { - ComponentRef, - Inject, - Injectable, - InjectionToken, - Injector, - OnDestroy, - Optional, - SkipSelf, - TemplateRef -} from '@angular/core'; +import { ComponentRef, Injectable, InjectionToken, Injector, OnDestroy, TemplateRef, inject } from '@angular/core'; import { KbqSidepanelAnimationState } from './sidepanel-animations'; import { KBQ_SIDEPANEL_DATA, KbqSidepanelConfig } from './sidepanel-config'; import { KBQ_SIDEPANEL_WITH_INDENT, KbqSidepanelContainerComponent } from './sidepanel-container.component'; @@ -21,6 +11,10 @@ export const KBQ_SIDEPANEL_DEFAULT_OPTIONS = new InjectionToken(KBQ_SIDEPANEL_DEFAULT_OPTIONS, { optional: true })!; + private parentSidepanelService = inject(KbqSidepanelService, { optional: true, skipSelf: true })!; private openedSidepanelsAtThisLevel: KbqSidepanelRef[] = []; /** Keeps track of the currently-open sidepanels. */ @@ -30,12 +24,10 @@ export class KbqSidepanelService implements OnDestroy { : this.openedSidepanelsAtThisLevel; } - constructor( - private overlay: Overlay, - private injector: Injector, - @Optional() @Inject(KBQ_SIDEPANEL_DEFAULT_OPTIONS) private defaultOptions: KbqSidepanelConfig, - @Optional() @SkipSelf() private parentSidepanelService: KbqSidepanelService - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngOnDestroy() { // Only close the sidepanels at this level on destroy diff --git a/packages/components/sidepanel/sidepanel.spec.ts b/packages/components/sidepanel/sidepanel.spec.ts index d8d41f19b..2c7239960 100644 --- a/packages/components/sidepanel/sidepanel.spec.ts +++ b/packages/components/sidepanel/sidepanel.spec.ts @@ -1,7 +1,6 @@ import { OverlayContainer } from '@angular/cdk/overlay'; import { Component, - Inject, InjectionToken, Injector, NgModule, @@ -457,9 +456,14 @@ class SidepanelWithFormComponent { providers: [KbqSidepanelService] }) class SidepanelFromDropdownComponent { + ss = injectCore(KbqSidepanelService); + readonly trigger = viewChild.required('trigger'); - constructor(public ss: KbqSidepanelService) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} showSidepanel() { this.ss.open(ComponentForSidepanel); @@ -479,10 +483,13 @@ class SidepanelWithCustomToken { template: '
Simple Sidepanel
' }) class SimpleSidepanelExample { - constructor( - public sidepanelRef: KbqSidepanelRef, - @Inject(KBQ_SIDEPANEL_DATA) public data: any - ) {} + sidepanelRef = injectCore>(KbqSidepanelRef); + data = injectCore(KBQ_SIDEPANEL_DATA); + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } @Component({ diff --git a/packages/components/splitter/splitter.component.ts b/packages/components/splitter/splitter.component.ts index ac56c1d18..872df9690 100644 --- a/packages/components/splitter/splitter.component.ts +++ b/packages/components/splitter/splitter.component.ts @@ -8,7 +8,6 @@ import { ContentChildren, Directive, ElementRef, - Inject, Input, NgZone, OnDestroy, @@ -69,6 +68,9 @@ export enum Direction { } }) export class KbqGutterDirective implements OnInit { + private elementRef = inject>(ElementRef); + private renderer = inject(Renderer2); + // TODO: Skipped for migration because: // Accessor inputs cannot be migrated as they are too complex. @Input() @@ -114,10 +116,10 @@ export class KbqGutterDirective implements OnInit { dragged: boolean = false; - constructor( - private elementRef: ElementRef, - private renderer: Renderer2 - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngOnInit(): void { this.setStyle(StyleProperty.FlexBasis, coerceCssPixelValue(this.size)); @@ -153,6 +155,9 @@ export class KbqGutterDirective implements OnInit { } }) export class KbqGutterGhostDirective { + private elementRef = inject>(ElementRef); + private renderer = inject(Renderer2); + // TODO: Skipped for migration because: // Your application code writes to the input. This prevents migration. @Input() visible: boolean; @@ -217,10 +222,10 @@ export class KbqGutterGhostDirective { return this.direction === Direction.Vertical; } - constructor( - private elementRef: ElementRef, - private renderer: Renderer2 - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} private updateDimensions(): void { this.setStyle(this.isVertical ? StyleProperty.Width : StyleProperty.Height, '100%'); @@ -246,6 +251,11 @@ export class KbqGutterGhostDirective { preserveWhitespaces: false }) export class KbqSplitterComponent implements OnInit, AfterContentInit, OnDestroy { + elementRef = inject>(ElementRef); + changeDetectorRef = inject(ChangeDetectorRef); + private ngZone = inject(NgZone); + private renderer = inject(Renderer2); + readonly gutterPositionChange = output(); areas: IArea[] = []; @@ -338,12 +348,10 @@ export class KbqSplitterComponent implements OnInit, AfterContentInit, OnDestroy private _resizing: boolean = false; - constructor( - public elementRef: ElementRef, - public changeDetectorRef: ChangeDetectorRef, - private ngZone: NgZone, - private renderer: Renderer2 - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} addArea(area: KbqSplitterAreaDirective): void { this.areas.push(this.mapAndOrderArea(area, this.areas.length)); @@ -581,15 +589,18 @@ export class KbqSplitterComponent implements OnInit, AfterContentInit, OnDestroy } }) export class KbqSplitterAreaDirective implements AfterViewInit, OnDestroy { + private elementRef = inject>(ElementRef); + private renderer = inject(Renderer2); + private splitter = inject(KbqSplitterComponent); + readonly sizeChange = output(); private readonly window = inject(KBQ_WINDOW); - constructor( - private elementRef: ElementRef, - private renderer: Renderer2, - @Inject(forwardRef(() => KbqSplitterComponent)) private splitter: KbqSplitterComponent - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} isResizing(): boolean { return this.splitter.isDragging; diff --git a/packages/components/tabs/tab-body.component.ts b/packages/components/tabs/tab-body.component.ts index 8bcf48ec2..efd36c583 100644 --- a/packages/components/tabs/tab-body.component.ts +++ b/packages/components/tabs/tab-body.component.ts @@ -10,15 +10,14 @@ import { Directive, ElementRef, EventEmitter, - Inject, Input, OnDestroy, OnInit, - Optional, Output, ViewContainerRef, ViewEncapsulation, forwardRef, + inject, input, output, viewChild @@ -64,6 +63,8 @@ export type KbqTabBodyOriginState = 'left' | 'right'; animations: [kbqTabsAnimations.translateTab] }) export class KbqTabBody implements OnInit, OnDestroy { + private readonly elementRef = inject>(ElementRef); + private readonly dir = inject(Directionality, { optional: true })!; /** The shifted index position of the tab body, where zero represents the active center tab. */ // TODO: Skipped for migration because: // Accessor inputs cannot be migrated as they are too complex. @@ -110,11 +111,12 @@ export class KbqTabBody implements OnInit, OnDestroy { /** Subscription to the directionality change observable. */ private readonly dirChangeSubscription = Subscription.EMPTY; - constructor( - private readonly elementRef: ElementRef, - @Optional() private readonly dir: Directionality, - changeDetectorRef: ChangeDetectorRef - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const changeDetectorRef = inject(ChangeDetectorRef); + if (this.dir && changeDetectorRef) { this.dirChangeSubscription = this.dir.change.subscribe((direction: Direction) => { this.computePositionAnimationState(direction); @@ -203,16 +205,20 @@ export class KbqTabBody implements OnInit, OnDestroy { selector: '[kbqTabBodyHost]' }) export class KbqTabBodyPortal extends CdkPortalOutlet implements OnInit, OnDestroy { + private readonly host = inject(KbqTabBody); + /** Subscription to events for when the tab body begins centering. */ private centeringSub = Subscription.EMPTY; /** Subscription to events for when the tab body finishes leaving from center position. */ private leavingSub = Subscription.EMPTY; - constructor( - componentFactoryResolver: ComponentFactoryResolver, - viewContainerRef: ViewContainerRef, - @Inject(forwardRef(() => KbqTabBody)) private readonly host: KbqTabBody - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const componentFactoryResolver = inject(ComponentFactoryResolver); + const viewContainerRef = inject(ViewContainerRef); + super(componentFactoryResolver, viewContainerRef); } diff --git a/packages/components/tabs/tab-body.spec.ts b/packages/components/tabs/tab-body.spec.ts index d7815e868..cc372910e 100644 --- a/packages/components/tabs/tab-body.spec.ts +++ b/packages/components/tabs/tab-body.spec.ts @@ -1,6 +1,6 @@ import { Direction, Directionality } from '@angular/cdk/bidi'; import { PortalModule, TemplatePortal } from '@angular/cdk/portal'; -import { AfterContentInit, Component, TemplateRef, ViewContainerRef, viewChild } from '@angular/core'; +import { AfterContentInit, Component, TemplateRef, ViewContainerRef, inject, viewChild } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { Subject } from 'rxjs'; @@ -182,6 +182,8 @@ describe('KbqTabBody', () => { ` }) class SimpleTabBodyApp implements AfterContentInit { + private viewContainerRef = inject(ViewContainerRef); + content: TemplatePortal; position: number; origin: number | null; @@ -189,7 +191,10 @@ class SimpleTabBodyApp implements AfterContentInit { readonly tabBody = viewChild.required(KbqTabBody); readonly template = viewChild.required(TemplateRef); - constructor(private viewContainerRef: ViewContainerRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngAfterContentInit() { this.content = new TemplatePortal(this.template(), this.viewContainerRef); diff --git a/packages/components/tabs/tab-content.directive.ts b/packages/components/tabs/tab-content.directive.ts index 0ba23c16d..3aaea98da 100644 --- a/packages/components/tabs/tab-content.directive.ts +++ b/packages/components/tabs/tab-content.directive.ts @@ -1,9 +1,14 @@ -import { Directive, TemplateRef } from '@angular/core'; +import { Directive, TemplateRef, inject } from '@angular/core'; /** Decorates the `ng-template` tags and reads out the template from it. */ @Directive({ selector: '[kbqTabContent]' }) export class KbqTabContent { - constructor(public template: TemplateRef) {} + template = inject>(TemplateRef); + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } diff --git a/packages/components/tabs/tab-group.component.ts b/packages/components/tabs/tab-group.component.ts index 2accff591..b839f957f 100644 --- a/packages/components/tabs/tab-group.component.ts +++ b/packages/components/tabs/tab-group.component.ts @@ -12,13 +12,12 @@ import { Directive, ElementRef, forwardRef, - Inject, + inject, InjectionToken, Input, input, numberAttribute, OnDestroy, - Optional, output, QueryList, viewChild, @@ -108,6 +107,8 @@ export type KbqTabSelectBy = string | number | ((tabs: KbqTab[]) => KbqTab | nul exportAs: 'kbqTabGroup' }) export class KbqTabGroup implements AfterContentInit, AfterViewInit, AfterContentChecked, OnDestroy { + private readonly changeDetectorRef = inject(ChangeDetectorRef); + readonly resizeStream = new Subject(); @ContentChildren(KbqTab) tabs: QueryList; @@ -221,10 +222,12 @@ export class KbqTabGroup implements AfterContentInit, AfterViewInit, AfterConten private readonly groupId: number; private readonly resizeDebounceInterval: number = 100; - constructor( - private readonly changeDetectorRef: ChangeDetectorRef, - @Inject(KBQ_TABS_CONFIG) @Optional() defaultConfig?: KbqTabsConfig - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const defaultConfig = inject(KBQ_TABS_CONFIG, { optional: true }); + this.groupId = nextId++; this.animationDuration = defaultConfig?.animationDuration || '0ms'; diff --git a/packages/components/tabs/tab-label-wrapper.directive.ts b/packages/components/tabs/tab-label-wrapper.directive.ts index 481e37977..a9cb44030 100644 --- a/packages/components/tabs/tab-label-wrapper.directive.ts +++ b/packages/components/tabs/tab-label-wrapper.directive.ts @@ -1,4 +1,13 @@ -import { AfterViewInit, booleanAttribute, ContentChild, Directive, ElementRef, Input, Renderer2 } from '@angular/core'; +import { + AfterViewInit, + booleanAttribute, + ContentChild, + Directive, + ElementRef, + inject, + Input, + Renderer2 +} from '@angular/core'; import { KbqTab } from './tab.component'; /** @@ -13,6 +22,9 @@ import { KbqTab } from './tab.component'; } }) export class KbqTabLabelWrapper implements AfterViewInit { + elementRef = inject>(ElementRef); + private renderer = inject(Renderer2); + @ContentChild('labelContent') labelContent: ElementRef; // TODO: Skipped for migration because: @@ -34,10 +46,10 @@ export class KbqTabLabelWrapper implements AfterViewInit { private _disabled: boolean = false; - constructor( - public elementRef: ElementRef, - private renderer: Renderer2 - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngAfterViewInit(): void { this.addClassModifierForIcons(Array.from(this.elementRef.nativeElement.querySelectorAll('.kbq-icon'))); diff --git a/packages/components/tabs/tab.component.ts b/packages/components/tabs/tab.component.ts index b6e4c3b81..712a2111b 100644 --- a/packages/components/tabs/tab.component.ts +++ b/packages/components/tabs/tab.component.ts @@ -5,6 +5,7 @@ import { Component, ContentChild, contentChild, + inject, Input, input, OnChanges, @@ -43,6 +44,8 @@ import { KBQ_TAB_LABEL, KbqTabLabel } from './tab-label.directive'; exportAs: 'kbqTab' }) export class KbqTab implements OnInit, OnChanges, OnDestroy { + private readonly viewContainerRef = inject(ViewContainerRef); + /** @docs-private */ get content(): TemplatePortal | null { return this.contentPortal; @@ -150,7 +153,10 @@ export class KbqTab implements OnInit, OnChanges, OnDestroy { /** Portal that will be the hosted content of the tab */ private contentPortal: TemplatePortal | null = null; - constructor(private readonly viewContainerRef: ViewContainerRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngOnChanges(changes: SimpleChanges): void { if (changes.hasOwnProperty('textLabel') || changes.hasOwnProperty('disabled')) { diff --git a/packages/components/tags/tag-input.ts b/packages/components/tags/tag-input.ts index e02f3e0ea..1aef0584d 100644 --- a/packages/components/tags/tag-input.ts +++ b/packages/components/tags/tag-input.ts @@ -4,13 +4,11 @@ import { Directive, ElementRef, EventEmitter, - Inject, + inject, Input, input, OnChanges, - Optional, - output, - Self + output } from '@angular/core'; import { NgControl } from '@angular/forms'; import { KbqAutocompleteTrigger } from '@koobiq/components/autocomplete'; @@ -65,6 +63,11 @@ let nextUniqueId = 0; exportAs: 'kbqTagInput, kbqTagInputFor' }) export class KbqTagInput implements KbqTagTextControl, OnChanges { + private elementRef = inject>(ElementRef); + private defaultOptions = inject(KBQ_TAGS_DEFAULT_OPTIONS); + private trimDirective = inject(KbqTrim, { optional: true, self: true })!; + ngControl = inject(NgControl, { optional: true, self: true })!; + autocompleteTrigger? = inject(KbqAutocompleteTrigger, { optional: true, self: true })!; /** Whether the control is focused. */ focused: boolean = false; @@ -171,13 +174,10 @@ export class KbqTagInput implements KbqTagTextControl, OnChanges { /** The native input element to which this directive is attached. */ private inputElement: HTMLInputElement; - constructor( - private elementRef: ElementRef, - @Inject(KBQ_TAGS_DEFAULT_OPTIONS) private defaultOptions: KbqTagsDefaultOptions, - @Optional() @Self() private trimDirective: KbqTrim, - @Optional() @Self() public ngControl: NgControl, - @Optional() @Self() public autocompleteTrigger?: KbqAutocompleteTrigger - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.inputElement = this.elementRef.nativeElement as HTMLInputElement; } diff --git a/packages/components/tags/tag-list.component.ts b/packages/components/tags/tag-list.component.ts index 6deaf8864..3c985cf9f 100644 --- a/packages/components/tags/tag-list.component.ts +++ b/packages/components/tags/tag-list.component.ts @@ -20,10 +20,8 @@ import { Input, input, OnDestroy, - Optional, output, QueryList, - Self, ViewEncapsulation } from '@angular/core'; import { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop'; @@ -101,6 +99,14 @@ export class KbqTagList CanUpdateErrorState, AfterViewInit { + protected elementRef = inject>(ElementRef); + private changeDetectorRef = inject(ChangeDetectorRef); + defaultErrorStateMatcher = inject(ErrorStateMatcher); + private dir = inject(Directionality, { optional: true })!; + parentForm = inject(NgForm, { optional: true })!; + parentFormGroup = inject(FormGroupDirective, { optional: true })!; + ngControl = inject(NgControl, { optional: true, self: true })!; + private readonly dropList = inject(CdkDropList, { host: true }); private readonly destroyRef = inject(DestroyRef); private readonly focusMonitor = inject(FocusMonitor); @@ -418,15 +424,10 @@ export class KbqTagList /** Triggers unsubscription from all per-tags streams when tags are reset. */ private readonly tagsSubscriptions$ = new Subject(); - constructor( - protected elementRef: ElementRef, - private changeDetectorRef: ChangeDetectorRef, - public defaultErrorStateMatcher: ErrorStateMatcher, - @Optional() private dir: Directionality, - @Optional() public parentForm: NgForm, - @Optional() public parentFormGroup: FormGroupDirective, - @Optional() @Self() public ngControl: NgControl - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { if (this.ngControl) { this.ngControl.valueAccessor = this; } diff --git a/packages/components/tags/tag.component.ts b/packages/components/tags/tag.component.ts index 2a35be576..a4ccde823 100644 --- a/packages/components/tags/tag.component.ts +++ b/packages/components/tags/tag.component.ts @@ -15,7 +15,6 @@ import { ElementRef, forwardRef, inject, - Inject, Input, input, OnDestroy, @@ -223,8 +222,10 @@ export class KbqTag extends KbqColorDirective implements IFocusableOption, OnDestroy, KbqTitleTextRef, AfterContentInit, AfterViewInit { + changeDetectorRef = inject(ChangeDetectorRef); + private readonly focusMonitor = inject(FocusMonitor); - private readonly tagList = inject(KbqTagList, { optional: true }); + private readonly tagList = inject(KbqTagList, { optional: true })!; private readonly drag: CdkDrag = inject(CdkDrag, { host: true }); private readonly destroyRef = inject(DestroyRef); @@ -414,7 +415,10 @@ export class KbqTag return (this.tagList?.draggable ?? false) && !this.disabled; } - constructor(public changeDetectorRef: ChangeDetectorRef) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); this.color = KbqComponentColors.ContrastFade; @@ -728,7 +732,12 @@ export class KbqTag } }) export class KbqTagRemove { - constructor(@Inject(forwardRef(() => KbqTag)) protected parentTag: KbqTag) {} + protected parentTag = inject(KbqTag); + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} /** @docs-private */ focus(event: FocusEvent): void { diff --git a/packages/components/textarea/textarea.component.ts b/packages/components/textarea/textarea.component.ts index 8f55d18c5..868819a74 100644 --- a/packages/components/textarea/textarea.component.ts +++ b/packages/components/textarea/textarea.component.ts @@ -5,9 +5,7 @@ import { Directive, DoCheck, ElementRef, - Host, inject, - Inject, InjectionToken, Input, input, @@ -16,9 +14,7 @@ import { OnChanges, OnDestroy, OnInit, - Optional, - Renderer2, - Self + Renderer2 } from '@angular/core'; import { FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms'; import { @@ -56,6 +52,14 @@ let nextUniqueId = 0; export class KbqTextarea implements KbqFormFieldControl, OnInit, OnChanges, OnDestroy, DoCheck, CanUpdateErrorState { + protected elementRef = inject>(ElementRef); + ngControl = inject(NgControl, { optional: true, self: true })!; + parentForm = inject(NgForm, { optional: true })!; + parentFormGroup = inject(FormGroupDirective, { optional: true })!; + defaultErrorStateMatcher = inject(ErrorStateMatcher); + private parent = inject(KBQ_PARENT_ANIMATION_COMPONENT, { optional: true, host: true })!; + private ngZone = inject(NgZone); + /** Whether the component is in an error state. */ errorState: boolean = false; @@ -210,16 +214,12 @@ export class KbqTextarea private minHeight: number = 0; private rowsCount: number; - constructor( - protected elementRef: ElementRef, - @Optional() @Self() public ngControl: NgControl, - @Optional() public parentForm: NgForm, - @Optional() public parentFormGroup: FormGroupDirective, - public defaultErrorStateMatcher: ErrorStateMatcher, - @Optional() @Self() @Inject(KBQ_TEXTAREA_VALUE_ACCESSOR) inputValueAccessor: any, - @Optional() @Host() @Inject(KBQ_PARENT_ANIMATION_COMPONENT) private parent: any, - private ngZone: NgZone - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const inputValueAccessor = inject(KBQ_TEXTAREA_VALUE_ACCESSOR, { optional: true, self: true }); + // If no input value accessor was explicitly specified, use the element as the textarea value // accessor. this.valueAccessor = inputValueAccessor || this.elementRef.nativeElement; diff --git a/packages/components/time-range/time-range.spec.ts b/packages/components/time-range/time-range.spec.ts index a92cf0f66..2143837d4 100644 --- a/packages/components/time-range/time-range.spec.ts +++ b/packages/components/time-range/time-range.spec.ts @@ -5,7 +5,7 @@ import { FormControl, ReactiveFormsModule } from '@angular/forms'; import { By } from '@angular/platform-browser'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { KbqLuxonDateModule, LuxonDateModule } from '@koobiq/angular-luxon-adapter/adapter'; -import { DateAdapter, DateFormatter, KBQ_DATE_LOCALE, KbqFormattersModule } from '@koobiq/components/core'; +import { DateFormatter, KbqFormattersModule } from '@koobiq/components/core'; import { KbqFormFieldModule } from '@koobiq/components/form-field'; import { KbqIconModule } from '@koobiq/components/icon'; import { KbqPopoverComponent } from '@koobiq/components/popover'; @@ -132,7 +132,7 @@ describe('KbqTimeRange', () => { const customDefaultTypes = customTypes.map(({ type }) => type); const fixture = setup(TestComponent, [ - { provide: DateFormatter, deps: [DateAdapter, KBQ_DATE_LOCALE] }, + DateFormatter, { provide: KBQ_CUSTOM_TIME_RANGE_TYPES, useValue: customTypes }, { provide: KBQ_DEFAULT_TIME_RANGE_TYPES, useValue: customDefaultTypes } ]); diff --git a/packages/components/timepicker/timepicker.directive.ts b/packages/components/timepicker/timepicker.directive.ts index 98d8d9f5c..a4d9d0eda 100644 --- a/packages/components/timepicker/timepicker.directive.ts +++ b/packages/components/timepicker/timepicker.directive.ts @@ -6,10 +6,8 @@ import { ElementRef, forwardRef, inject, - Inject, Input, OnDestroy, - Optional, output, Renderer2 } from '@angular/core'; @@ -116,6 +114,10 @@ const fullFormatSize: number = 8; export class KbqTimepicker implements KbqFormFieldControl, ControlValueAccessor, Validator, OnDestroy, DoCheck, AfterContentInit { + private elementRef = inject>(ElementRef); + private renderer = inject(Renderer2); + private dateAdapter = inject>(DateAdapter, { optional: true })!; + private localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; /** * Implemented as part of KbqFormFieldControl. * @docs-private @@ -394,12 +396,12 @@ export class KbqTimepicker private errorStateTracker: KbqErrorStateTracker; - constructor( - private elementRef: ElementRef, - private renderer: Renderer2, - @Optional() private dateAdapter: DateAdapter, - @Optional() @Inject(KBQ_LOCALE_SERVICE) private localeService?: KbqLocaleService - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const dateAdapter = this.dateAdapter; + if (!this.dateAdapter) { throw Error( `KbqTimepicker: No provider found for DateAdapter. You must import one of the existing ` + diff --git a/packages/components/timepicker/timepicker.spec.ts b/packages/components/timepicker/timepicker.spec.ts index a5cd6f394..d8f165d6f 100644 --- a/packages/components/timepicker/timepicker.spec.ts +++ b/packages/components/timepicker/timepicker.spec.ts @@ -1,4 +1,4 @@ -import { Component, DebugElement, Inject, Type, viewChild } from '@angular/core'; +import { Component, DebugElement, inject as inject_1, Type, viewChild } from '@angular/core'; import { ComponentFixture, fakeAsync, flush, TestBed, tick } from '@angular/core/testing'; import { AsyncValidatorFn, @@ -136,6 +136,8 @@ class TimepickerControlWithAsyncValidators { ` }) class TestApp { + adapter = inject_1>(DateAdapter); + readonly ngModel = viewChild.required('ngModel'); timeFormat: TimeFormats; @@ -144,7 +146,12 @@ class TestApp { timeValue: DateTime; isDisabled: boolean; - constructor(public adapter: DateAdapter) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const adapter = this.adapter; + this.timeValue = adapter.createDateTime(1970, 1, 1, 12, 18, 28, 100); } } @@ -1028,10 +1035,15 @@ describe('KbqTimepicker with null model value', () => { ` }) class TimepickerWithLocaleChange { + localeService = inject_1(KBQ_LOCALE_SERVICE); + timeFormat: TimeFormats; model: any = null; - constructor(@Inject(KBQ_LOCALE_SERVICE) public localeService: KbqLocaleService) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } describe('with Locale change', () => { diff --git a/packages/components/title/title.directive.ts b/packages/components/title/title.directive.ts index 3e6c6a6e0..035d4faa0 100644 --- a/packages/components/title/title.directive.ts +++ b/packages/components/title/title.directive.ts @@ -1,15 +1,5 @@ import { ContentObserver } from '@angular/cdk/observers'; -import { - AfterViewInit, - ContentChild, - Directive, - ElementRef, - Host, - inject, - Inject, - OnDestroy, - Optional -} from '@angular/core'; +import { AfterViewInit, ContentChild, Directive, ElementRef, inject, OnDestroy } from '@angular/core'; import { KBQ_TITLE_TEXT_REF, kbqInjectNativeElement, KbqTitleTextRef, PopUpTriggers } from '@koobiq/components/core'; import { KbqTooltipTrigger } from '@koobiq/components/tooltip'; import { Subject, Subscription, throttleTime } from 'rxjs'; @@ -25,6 +15,7 @@ import { debounceTime } from 'rxjs/operators'; exportAs: 'kbqTitle' }) export class KbqTitleDirective extends KbqTooltipTrigger implements AfterViewInit, OnDestroy { + private componentInstance = inject(KBQ_TITLE_TEXT_REF, { host: true, optional: true })!; private readonly nativeElement = kbqInjectNativeElement(); private contentObserver = inject(ContentObserver); @@ -103,7 +94,10 @@ export class KbqTitleDirective extends KbqTooltipTrigger implements AfterViewIni @ContentChild('kbqTitleContainer') private parentContainer: ElementRef; - constructor(@Host() @Optional() @Inject(KBQ_TITLE_TEXT_REF) private componentInstance?: KbqTitleTextRef) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); } diff --git a/packages/components/toast/toast-container.component.ts b/packages/components/toast/toast-container.component.ts index 912e386dc..8e0d1ffcf 100644 --- a/packages/components/toast/toast-container.component.ts +++ b/packages/components/toast/toast-container.component.ts @@ -6,14 +6,13 @@ import { ComponentRef, ElementRef, EmbeddedViewRef, - Inject, Injector, NgZone, TemplateRef, ViewContainerRef, ViewEncapsulation, ViewRef, - forwardRef, + inject, viewChild } from '@angular/core'; import { KbqToastService } from './toast.service'; @@ -30,17 +29,20 @@ import { KbqToastData } from './toast.type'; } }) export class KbqToastContainerComponent extends CdkScrollable { + private injector = inject(Injector); + private changeDetectorRef = inject(ChangeDetectorRef); + readonly service = inject(KbqToastService); + readonly viewContainer = viewChild.required('container', { read: ViewContainerRef }); - constructor( - private injector: Injector, - private changeDetectorRef: ChangeDetectorRef, - @Inject(forwardRef(() => KbqToastService)) readonly service: KbqToastService, + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const elementRef = inject>(ElementRef); + const scrollDispatcher = inject(ScrollDispatcher); + const ngZone = inject(NgZone); - elementRef: ElementRef, - scrollDispatcher: ScrollDispatcher, - ngZone: NgZone - ) { super(elementRef, scrollDispatcher, ngZone); this.service.animation.subscribe(this.dispatchScrollEvent); diff --git a/packages/components/toast/toast.component.ts b/packages/components/toast/toast.component.ts index 9290741d6..e1b0217a2 100644 --- a/packages/components/toast/toast.component.ts +++ b/packages/components/toast/toast.component.ts @@ -6,11 +6,9 @@ import { Component, Directive, ElementRef, - Inject, OnDestroy, TemplateRef, ViewEncapsulation, - forwardRef, inject } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; @@ -60,6 +58,11 @@ let id = 0; animations: [kbqToastAnimations.toastState] }) export class KbqToastComponent implements OnDestroy { + readonly data = inject(KbqToastData); + readonly service = inject(KbqToastService); + elementRef = inject>(ElementRef); + private focusMonitor = inject(FocusMonitor); + protected readonly readStateDirective = inject(KbqReadStateDirective, { host: true }); themePalette = ThemePalette; @@ -85,12 +88,10 @@ export class KbqToastComponent implements OnDestroy { return this.hovered.getValue() || this.focused.getValue(); } - constructor( - readonly data: KbqToastData, - @Inject(forwardRef(() => KbqToastService)) readonly service: KbqToastService, - public elementRef: ElementRef, - private focusMonitor: FocusMonitor - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.$implicit = this; this.data.style = this.data.style || KbqToastStyle.Contrast; diff --git a/packages/components/toast/toast.service.ts b/packages/components/toast/toast.service.ts index 340e1c70e..186f13c45 100644 --- a/packages/components/toast/toast.service.ts +++ b/packages/components/toast/toast.service.ts @@ -4,14 +4,13 @@ import { ComponentPortal } from '@angular/cdk/portal'; import { ComponentRef, EmbeddedViewRef, - Inject, Injectable, InjectionToken, Injector, NgZone, OnDestroy, - Optional, - TemplateRef + TemplateRef, + inject } from '@angular/core'; import { BehaviorSubject, Subscription, filter, shareReplay, timer } from 'rxjs'; import { KbqToastContainerComponent } from './toast-container.component'; @@ -29,6 +28,13 @@ let templateId = 0; /** Generic `T` is a type hint only; the runtime component comes from `KBQ_TOAST_FACTORY`. */ @Injectable({ providedIn: 'root' }) export class KbqToastService implements OnDestroy { + private overlay = inject(Overlay); + private injector = inject(Injector); + private overlayContainer = inject(OverlayContainer); + private ngZone = inject(NgZone); + private toastFactory = inject(KBQ_TOAST_FACTORY); + private toastConfig = inject(KBQ_TOAST_CONFIG, { optional: true })!; + get toasts(): ComponentRef[] { return Object.values(this.toastsDict).filter((item) => !item.hostView.destroyed); } @@ -57,14 +63,10 @@ export class KbqToastService im private toastsDict: { [id: number]: ComponentRef } = {}; private templatesDict: { [id: number]: EmbeddedViewRef } = {}; - constructor( - private overlay: Overlay, - private injector: Injector, - private overlayContainer: OverlayContainer, - private ngZone: NgZone, - @Inject(KBQ_TOAST_FACTORY) private toastFactory: any, - @Optional() @Inject(KBQ_TOAST_CONFIG) private toastConfig: KbqToastConfig - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.ngZone.runOutsideAngular(() => { this.timerSubscription = this.timer.subscribe(this.processToasts); }); diff --git a/packages/components/toast/toast.spec.ts b/packages/components/toast/toast.spec.ts index e47038ef5..04960eedc 100644 --- a/packages/components/toast/toast.spec.ts +++ b/packages/components/toast/toast.spec.ts @@ -1,5 +1,5 @@ import { OverlayContainer } from '@angular/cdk/overlay'; -import { Component, NgZone, TemplateRef, viewChild } from '@angular/core'; +import { Component, NgZone, TemplateRef, inject as inject_1, viewChild } from '@angular/core'; import { TestBed, discardPeriodicTasks, fakeAsync, flush, inject, tick } from '@angular/core/testing'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { Subject } from 'rxjs'; @@ -203,7 +203,12 @@ describe('Standalone ToastService', () => { ` }) class KbqToastButtonWrapperComponent { - constructor(public toastService: KbqToastService) {} + toastService = inject_1(KbqToastService); + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} show(): void { this.toastService.show({ style: 'warning', title: 'Warning', content: 'Message Content' }, 0); } diff --git a/packages/components/toggle/toggle.component.ts b/packages/components/toggle/toggle.component.ts index c32bf1845..ec90452e2 100644 --- a/packages/components/toggle/toggle.component.ts +++ b/packages/components/toggle/toggle.component.ts @@ -79,6 +79,9 @@ export class KbqToggleChange { exportAs: 'kbqToggle' }) export class KbqToggleComponent extends KbqColorDirective implements AfterViewInit, ControlValueAccessor, OnDestroy { + private focusMonitor = inject(FocusMonitor); + private changeDetectorRef = inject(ChangeDetectorRef); + readonly big = input(false); readonly inputElement = viewChild.required>('input'); @@ -191,10 +194,10 @@ export class KbqToggleComponent extends KbqColorDirective implements AfterViewIn private uniqueId: string = `kbq-toggle-${++nextUniqueId}`; - constructor( - private focusMonitor: FocusMonitor, - private changeDetectorRef: ChangeDetectorRef - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); this.id = this.uniqueId; diff --git a/packages/components/tooltip/tooltip.component.ts b/packages/components/tooltip/tooltip.component.ts index 36806eb8f..adbd9bf5d 100644 --- a/packages/components/tooltip/tooltip.component.ts +++ b/packages/components/tooltip/tooltip.component.ts @@ -10,7 +10,6 @@ import { Directive, ElementRef, EventEmitter, - Inject, InjectionToken, Input, OnChanges, @@ -51,7 +50,7 @@ export enum TooltipModifier { Extended = 'extended' } -export const KBQ_TOOLTIP_OPEN_TIME = new InjectionToken<() => ScrollStrategy>('kbq-tooltip-open-time'); +export const KBQ_TOOLTIP_OPEN_TIME = new InjectionToken<{ value: number }>('kbq-tooltip-open-time'); /** @docs-private */ export const KBQ_TOOLTIP_OPEN_TIME_PROVIDER = { @@ -74,11 +73,16 @@ export const MIN_TIME_FOR_DELAY = 2000; animations: [kbqTooltipAnimations.tooltipState] }) export class KbqTooltipComponent extends KbqPopUp { + private openTime = inject(KBQ_TOOLTIP_OPEN_TIME); + prefix = 'kbq-tooltip'; @ViewChild('tooltip') elementRef: ElementRef; - constructor(@Inject(KBQ_TOOLTIP_OPEN_TIME) private openTime) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); } @@ -139,7 +143,7 @@ export class KbqTooltipTrigger implements AfterViewInit, OnChanges, OnDestroy { protected scrollStrategy: () => ScrollStrategy = inject(KBQ_TOOLTIP_SCROLL_STRATEGY); - protected parentPopup = inject(KBQ_PARENT_POPUP, { optional: true }); + protected parentPopup = inject(KBQ_PARENT_POPUP, { optional: true })!; protected focusMonitor: FocusMonitor = inject(FocusMonitor); /** @docs-private */ protected renderer: Renderer2 = inject(Renderer2); diff --git a/packages/components/tree-select/tree-select.component.ts b/packages/components/tree-select/tree-select.component.ts index 834cb79d6..fae182e35 100644 --- a/packages/components/tree-select/tree-select.component.ts +++ b/packages/components/tree-select/tree-select.component.ts @@ -15,19 +15,15 @@ import { DoCheck, ElementRef, EventEmitter, - Host, - Inject, InjectionToken, Input, NgZone, OnDestroy, OnInit, - Optional, Output, Provider, QueryList, Renderer2, - Self, TemplateRef, ViewChild, ViewChildren, @@ -190,10 +186,21 @@ export class KbqTreeSelect KbqFormFieldControl, CanUpdateErrorState { + elementRef = inject>(ElementRef); + readonly changeDetectorRef = inject(ChangeDetectorRef); + private readonly ngZone = inject(NgZone); + private readonly renderer = inject(Renderer2); + defaultErrorStateMatcher = inject(ErrorStateMatcher); + private readonly scrollStrategyFactory = inject(KBQ_SELECT_SCROLL_STRATEGY); + private readonly dir = inject(Directionality, { optional: true })!; + parentForm = inject(NgForm, { optional: true })!; + parentFormGroup = inject(FormGroupDirective, { optional: true })!; + private readonly parentFormField = inject(KbqFormField, { host: true, optional: true })!; + ngControl = inject(NgControl, { optional: true, self: true })!; + private localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; protected readonly isBrowser = inject(Platform).isBrowser; - private readonly defaultOptions = inject(KBQ_TREE_SELECT_OPTIONS, { optional: true }); - + private readonly defaultOptions = inject(KBQ_TREE_SELECT_OPTIONS, { optional: true })!; /** Whether the component is in an error state. */ errorState: boolean = false; /** @@ -635,20 +642,10 @@ export class KbqTreeSelect private readonly destroyRef = inject(DestroyRef); private readonly window = inject(KBQ_WINDOW); - constructor( - public elementRef: ElementRef, - readonly changeDetectorRef: ChangeDetectorRef, - private readonly ngZone: NgZone, - private readonly renderer: Renderer2, - public defaultErrorStateMatcher: ErrorStateMatcher, - @Inject(KBQ_SELECT_SCROLL_STRATEGY) private readonly scrollStrategyFactory, - @Optional() private readonly dir: Directionality, - @Optional() public parentForm: NgForm, - @Optional() public parentFormGroup: FormGroupDirective, - @Host() @Optional() private readonly parentFormField: KbqFormField, - @Optional() @Self() public ngControl: NgControl, - @Optional() @Inject(KBQ_LOCALE_SERVICE) private localeService?: KbqLocaleService - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { super(); this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams); diff --git a/packages/components/tree/node.ts b/packages/components/tree/node.ts index 99a7217ff..77aa270eb 100644 --- a/packages/components/tree/node.ts +++ b/packages/components/tree/node.ts @@ -1,4 +1,4 @@ -import { Directive, TemplateRef, input } from '@angular/core'; +import { Directive, TemplateRef, inject, input } from '@angular/core'; /** Context provided to the tree node component. */ export class KbqTreeNodeOutletContext { @@ -28,6 +28,8 @@ export class KbqTreeNodeOutletContext { inputs: ['when: kbqTreeNodeDefWhen'] }) export class KbqTreeNodeDef { + template = inject>(TemplateRef); + readonly data = input(undefined!, { alias: 'kbqTreeNode' }); /** @@ -39,6 +41,9 @@ export class KbqTreeNodeDef { */ when: (index: number, nodeData: T) => boolean; + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + /** @docs-private */ - constructor(public template: TemplateRef) {} + constructor() {} } diff --git a/packages/components/tree/outlet.ts b/packages/components/tree/outlet.ts index b5dc8e2ad..38c0d5717 100644 --- a/packages/components/tree/outlet.ts +++ b/packages/components/tree/outlet.ts @@ -1,11 +1,14 @@ -import { ChangeDetectorRef, Directive, ViewContainerRef } from '@angular/core'; +import { ChangeDetectorRef, Directive, ViewContainerRef, inject } from '@angular/core'; @Directive({ selector: '[kbqTreeNodeOutlet]' }) export class KbqTreeNodeOutlet { - constructor( - public viewContainer: ViewContainerRef, - public changeDetectorRef: ChangeDetectorRef - ) {} + viewContainer = inject(ViewContainerRef); + changeDetectorRef = inject(ChangeDetectorRef); + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } diff --git a/packages/components/tree/padding.directive.ts b/packages/components/tree/padding.directive.ts index 848cf0448..b0c0f199e 100644 --- a/packages/components/tree/padding.directive.ts +++ b/packages/components/tree/padding.directive.ts @@ -1,6 +1,6 @@ import { Directionality } from '@angular/cdk/bidi'; import { coerceNumberProperty } from '@angular/cdk/coercion'; -import { AfterViewInit, Directive, ElementRef, Input, Optional, Renderer2 } from '@angular/core'; +import { AfterViewInit, Directive, ElementRef, Input, Renderer2, inject } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { KbqTreeBase, KbqTreeNode } from './tree-base'; import { KbqTreeOption } from './tree-option.component'; @@ -13,6 +13,12 @@ const cssUnitPattern = /([A-Za-z%]+)$/; exportAs: 'kbqTreeNodePadding' }) export class KbqTreeNodePadding implements AfterViewInit { + protected treeNode = inject>(KbqTreeNode); + protected tree = inject>(KbqTreeBase); + private renderer = inject(Renderer2); + private element = inject>(ElementRef); + private option = inject(KbqTreeOption); + private dir = inject(Directionality, { optional: true })!; get level(): number { return this._level; } @@ -52,14 +58,10 @@ export class KbqTreeNodePadding implements AfterViewInit { withIcon: boolean; iconWidth: number = 24; - constructor( - protected treeNode: KbqTreeNode, - protected tree: KbqTreeBase, - private renderer: Renderer2, - private element: ElementRef, - private option: KbqTreeOption, - @Optional() private dir: Directionality - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.dir?.change?.pipe(takeUntilDestroyed()).subscribe(() => this.setPadding()); } diff --git a/packages/components/tree/toggle.ts b/packages/components/tree/toggle.ts index d90bfe4a2..4285060f2 100644 --- a/packages/components/tree/toggle.ts +++ b/packages/components/tree/toggle.ts @@ -4,6 +4,7 @@ import { ChangeDetectionStrategy, Component, Directive, + inject, Input, input, ViewEncapsulation @@ -14,6 +15,9 @@ import { KbqTreeBase, KbqTreeNode } from './tree-base'; /** @docs-private */ @Directive() export class KbqTreeNodeToggleBaseDirective { + private tree = inject>(KbqTreeBase); + private treeNode = inject>(KbqTreeNode); + readonly node = input(undefined!); // TODO: Skipped for migration because: @@ -48,10 +52,10 @@ export class KbqTreeNodeToggleBaseDirective { return this.tree.treeControl.isExpanded(this.node()); } - constructor( - private tree: KbqTreeBase, - private treeNode: KbqTreeNode - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.tree.treeControl.filterValue.subscribe((value) => (this.disabled = !!value?.length)); } diff --git a/packages/components/tree/tree-base.ts b/packages/components/tree/tree-base.ts index ab9478cbb..5f8031bfe 100644 --- a/packages/components/tree/tree-base.ts +++ b/packages/components/tree/tree-base.ts @@ -6,7 +6,6 @@ import { DestroyRef, Directive, ElementRef, - Inject, Input, IterableChangeRecord, IterableDiffer, @@ -17,7 +16,6 @@ import { TrackByFunction, ViewChild, ViewContainerRef, - forwardRef, inject, input } from '@angular/core'; @@ -36,6 +34,9 @@ import { @Directive() export class KbqTreeBase implements AfterContentChecked, CollectionViewer, OnDestroy, OnInit { + protected differs = inject(IterableDiffers); + protected changeDetectorRef = inject(ChangeDetectorRef); + // TODO: Skipped for migration because: // Subclass KbqTreeSelection overrides this input with a narrower type // (FlatTreeControl) via `@Input() declare`, which is incompatible @@ -98,10 +99,10 @@ export class KbqTreeBase implements AfterContentChecked, CollectionViewer, On protected readonly destroyRef = inject(DestroyRef); - constructor( - protected differs: IterableDiffers, - protected changeDetectorRef: ChangeDetectorRef - ) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngOnInit() { this.dataDiffer = this.differs.find([]).create(this.trackBy()); @@ -282,6 +283,9 @@ export class KbqTreeBase implements AfterContentChecked, CollectionViewer, On exportAs: 'kbqTreeNode' }) export class KbqTreeNode implements IFocusableOption, OnDestroy { + protected elementRef = inject>(ElementRef); + tree = inject>(KbqTreeBase); + /** * The most recently created `KbqTreeNode`. We save it in static variable so we can retrieve it * in `KbqTree` and set the data to it. @@ -310,10 +314,10 @@ export class KbqTreeNode implements IFocusableOption, OnDestroy { return treeControl.getLevel ? treeControl.getLevel(this._data) : 0; } - constructor( - protected elementRef: ElementRef, - @Inject(forwardRef(() => KbqTreeBase)) public tree: KbqTreeBase - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { KbqTreeNode.mostRecentTreeNode = this; } diff --git a/packages/components/tree/tree-option.component.ts b/packages/components/tree/tree-option.component.ts index 95110929a..b0c824d14 100644 --- a/packages/components/tree/tree-option.component.ts +++ b/packages/components/tree/tree-option.component.ts @@ -10,7 +10,7 @@ import { contentChild, ElementRef, EventEmitter, - Inject, + inject, InjectionToken, Input, input, @@ -97,6 +97,10 @@ let uniqueIdCounter: number = 0; exportAs: 'kbqTreeOption' }) export class KbqTreeOption extends KbqTreeNode implements AfterContentInit, KbqTitleTextRef { + private changeDetectorRef = inject(ChangeDetectorRef); + private ngZone = inject(NgZone); + tree: any; + readonly onFocus = new Subject(); readonly onBlur = new Subject(); @@ -208,13 +212,16 @@ export class KbqTreeOption extends KbqTreeNode implements AfterCo checkboxState: KbqPseudoCheckboxState; - constructor( - elementRef: ElementRef, - private changeDetectorRef: ChangeDetectorRef, - private ngZone: NgZone, - @Inject(KBQ_TREE_OPTION_PARENT_COMPONENT) public tree: any - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const elementRef = inject>(ElementRef); + const tree = inject(KBQ_TREE_OPTION_PARENT_COMPONENT); + super(elementRef, tree); + + this.tree = tree; } ngAfterContentInit(): void { diff --git a/packages/components/tree/tree-selection.component.ts b/packages/components/tree/tree-selection.component.ts index bcbd91298..3c1affd8a 100644 --- a/packages/components/tree/tree-selection.component.ts +++ b/packages/components/tree/tree-selection.component.ts @@ -5,7 +5,6 @@ import { SelectionModel } from '@angular/cdk/collections'; import { AfterContentInit, AfterViewInit, - Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, @@ -13,12 +12,12 @@ import { ElementRef, EventEmitter, forwardRef, + HostAttributeToken, inject, Input, IterableDiffer, IterableDiffers, OnDestroy, - Optional, Output, output, QueryList, @@ -135,6 +134,9 @@ export class KbqTreeSelection extends KbqTreeBase implements ControlValueAccessor, AfterContentInit, AfterViewInit, OnDestroy { + private elementRef = inject>(ElementRef); + private scheduler = inject(AsyncScheduler); + private clipboard = inject(Clipboard, { optional: true })!; protected readonly focusMonitor = inject(FocusMonitor); /** Indicates whether this component is placed inside a KbqFormField component. */ @@ -258,14 +260,14 @@ export class KbqTreeSelection private optionBlurSubscription: Subscription | null; - constructor( - private elementRef: ElementRef, - private scheduler: AsyncScheduler, - differs: IterableDiffers, - changeDetectorRef: ChangeDetectorRef, - @Attribute('multiple') multiple: MultipleMode, - @Optional() private clipboard: Clipboard - ) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { + const differs = inject(IterableDiffers); + const changeDetectorRef = inject(ChangeDetectorRef); + const multiple = inject(new HostAttributeToken('multiple'), { optional: true }); + super(differs, changeDetectorRef); if (multiple === MultipleMode.CHECKBOX || multiple === MultipleMode.KEYBOARD) { diff --git a/packages/docs-examples/components/accordion/accordion-in-panel/accordion-in-panel-example.ts b/packages/docs-examples/components/accordion/accordion-in-panel/accordion-in-panel-example.ts index 636625c89..8a7446e47 100644 --- a/packages/docs-examples/components/accordion/accordion-in-panel/accordion-in-panel-example.ts +++ b/packages/docs-examples/components/accordion/accordion-in-panel/accordion-in-panel-example.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, inject } from '@angular/core'; import { KbqAccordionModule } from '@koobiq/components/accordion'; import { KbqButtonModule } from '@koobiq/components/button'; import { @@ -18,12 +18,17 @@ import { changeDetection: ChangeDetectionStrategy.OnPush }) export class AccordionInPanelExample { + private sidepanelService = inject(KbqSidepanelService); + position: KbqSidepanelPosition = KbqSidepanelPosition.Right; size: KbqSidepanelSize = KbqSidepanelSize.Medium; @ViewChild('template', { static: false }) template: TemplateRef; - constructor(private sidepanelService: KbqSidepanelService) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} openPanel() { this.sidepanelService.open(this.template, { diff --git a/packages/docs-examples/components/checkbox/checkbox-indeterminate/checkbox-indeterminate-example.ts b/packages/docs-examples/components/checkbox/checkbox-indeterminate/checkbox-indeterminate-example.ts index ed6931639..9ff776c02 100644 --- a/packages/docs-examples/components/checkbox/checkbox-indeterminate/checkbox-indeterminate-example.ts +++ b/packages/docs-examples/components/checkbox/checkbox-indeterminate/checkbox-indeterminate-example.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject } from '@angular/core'; import { KbqCheckboxModule } from '@koobiq/components/checkbox'; interface ICheckbox { @@ -31,6 +31,8 @@ interface ICheckbox { changeDetection: ChangeDetectionStrategy.OnPush }) export class CheckboxIndeterminateExample { + private ref = inject(ChangeDetectorRef); + parentIndeterminate = true; parentChecked = true; @@ -40,7 +42,10 @@ export class CheckboxIndeterminateExample { { name: 'Grapes', checked: false } ]; - constructor(private ref: ChangeDetectorRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} updateCheckboxes(index: number) { this.toggleFruitChecked(index); diff --git a/packages/docs-examples/components/datepicker/datepicker-inactive/datepicker-inactive-example.ts b/packages/docs-examples/components/datepicker/datepicker-inactive/datepicker-inactive-example.ts index 5167a7f66..5fe0c55bb 100644 --- a/packages/docs-examples/components/datepicker/datepicker-inactive/datepicker-inactive-example.ts +++ b/packages/docs-examples/components/datepicker/datepicker-inactive/datepicker-inactive-example.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { LuxonDateModule } from '@koobiq/angular-luxon-adapter/adapter'; import { DateAdapter, KbqFormsModule } from '@koobiq/components/core'; @@ -46,9 +46,14 @@ import { DateTime } from 'luxon'; changeDetection: ChangeDetectionStrategy.OnPush }) export class DatepickerInactiveExample { + private adapter = inject>(DateAdapter); + selectedDate: DateTime; - constructor(private adapter: DateAdapter) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.selectedDate = this.adapter.createDate(1989, 11, 13); } } diff --git a/packages/docs-examples/components/datepicker/datepicker-minimax/datepicker-minimax-example.ts b/packages/docs-examples/components/datepicker/datepicker-minimax/datepicker-minimax-example.ts index 92eaa22cf..1efdb2449 100644 --- a/packages/docs-examples/components/datepicker/datepicker-minimax/datepicker-minimax-example.ts +++ b/packages/docs-examples/components/datepicker/datepicker-minimax/datepicker-minimax-example.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { LuxonDateModule } from '@koobiq/angular-luxon-adapter/adapter'; import { DateAdapter, KbqFormsModule } from '@koobiq/components/core'; @@ -49,8 +49,13 @@ import { DateTime } from 'luxon'; changeDetection: ChangeDetectionStrategy.OnPush }) export class DatepickerMinimaxExample { + private adapter = inject>(DateAdapter); + readonly minDate = this.adapter.createDate(2023, 11, 14); readonly maxDate = this.adapter.createDate(2024, 7, 25); - constructor(private adapter: DateAdapter) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } diff --git a/packages/docs-examples/components/datepicker/datepicker-range/datepicker-range-example.ts b/packages/docs-examples/components/datepicker/datepicker-range/datepicker-range-example.ts index c745e7c15..3f6abf57c 100644 --- a/packages/docs-examples/components/datepicker/datepicker-range/datepicker-range-example.ts +++ b/packages/docs-examples/components/datepicker/datepicker-range/datepicker-range-example.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { LuxonDateModule } from '@koobiq/angular-luxon-adapter/adapter'; import { DateAdapter, KbqFormsModule } from '@koobiq/components/core'; import { KbqDatepickerModule } from '@koobiq/components/datepicker'; @@ -43,8 +43,13 @@ import { DateTime } from 'luxon'; changeDetection: ChangeDetectionStrategy.OnPush }) export class DatepickerRangeExample { + private adapter = inject>(DateAdapter); + readonly minDate = this.adapter.createDate(2023, 11, 14); readonly maxDate = this.adapter.createDate(2024, 7, 25); - constructor(private adapter: DateAdapter) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} } diff --git a/packages/docs-examples/components/dropdown/dropdown-recursive-template/dropdown-recursive-template-example.ts b/packages/docs-examples/components/dropdown/dropdown-recursive-template/dropdown-recursive-template-example.ts index c076c7d53..d08df3e62 100644 --- a/packages/docs-examples/components/dropdown/dropdown-recursive-template/dropdown-recursive-template-example.ts +++ b/packages/docs-examples/components/dropdown/dropdown-recursive-template/dropdown-recursive-template-example.ts @@ -6,6 +6,7 @@ import { OnInit, TemplateRef, ViewContainerRef, + inject, input } from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; @@ -21,10 +22,15 @@ type DropdownItem = { selector: '[exampleDropdownOutlet]' }) export class ExampleDropdownPortal implements OnInit { + private viewContainerRef = inject(ViewContainerRef); + readonly context = input({}, { alias: 'exampleDropdownOutletContext' }); readonly template = input>(undefined!, { alias: 'exampleDropdownOutlet' }); - constructor(private viewContainerRef: ViewContainerRef) {} + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() {} ngOnInit() { this.viewContainerRef.createEmbeddedView(this.template(), this.context(), { diff --git a/packages/docs-examples/components/sidepanel/sidepanel-normal-mode/sidepanel-normal-mode-example.ts b/packages/docs-examples/components/sidepanel/sidepanel-normal-mode/sidepanel-normal-mode-example.ts index a4bd3d826..a4ffaec63 100644 --- a/packages/docs-examples/components/sidepanel/sidepanel-normal-mode/sidepanel-normal-mode-example.ts +++ b/packages/docs-examples/components/sidepanel/sidepanel-normal-mode/sidepanel-normal-mode-example.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, inject } from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; import { KbqSelectModule } from '@koobiq/components/select'; import { KbqSidepanelModule, KbqSidepanelPosition, KbqSidepanelService } from '@koobiq/components/sidepanel'; @@ -14,6 +14,8 @@ import { take } from 'rxjs/operators'; changeDetection: ChangeDetectionStrategy.OnPush }) export class SidepanelNormalModeExample { + private sidepanelService = inject(KbqSidepanelService); + position = KbqSidepanelPosition.Right; isOpened = false; @@ -22,7 +24,10 @@ export class SidepanelNormalModeExample { arrayLength = 40; array = new Array(this.arrayLength); - constructor(private sidepanelService: KbqSidepanelService) {} + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + constructor() {} toggleSidepanel() { if (!this.isOpened) { diff --git a/packages/docs-examples/components/sidepanel/sidepanel-overview/sidepanel-overview-example.ts b/packages/docs-examples/components/sidepanel/sidepanel-overview/sidepanel-overview-example.ts index 7a512dac6..2eea94500 100644 --- a/packages/docs-examples/components/sidepanel/sidepanel-overview/sidepanel-overview-example.ts +++ b/packages/docs-examples/components/sidepanel/sidepanel-overview/sidepanel-overview-example.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, inject } from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; import { KbqSelectModule } from '@koobiq/components/select'; import { KbqSidepanelModule, KbqSidepanelPosition, KbqSidepanelService } from '@koobiq/components/sidepanel'; @@ -13,13 +13,18 @@ import { KbqSidepanelModule, KbqSidepanelPosition, KbqSidepanelService } from '@ changeDetection: ChangeDetectionStrategy.OnPush }) export class SidepanelOverviewExample { + private sidepanelService = inject(KbqSidepanelService); + position = KbqSidepanelPosition.Right; @ViewChild(TemplateRef, { static: false }) template: TemplateRef; arrayLength = 40; array = new Array(this.arrayLength); - constructor(private sidepanelService: KbqSidepanelService) {} + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + constructor() {} openSidepanel() { this.sidepanelService.open(this.template, { diff --git a/packages/docs-examples/components/sidepanel/sidepanel-sizes/sidepanel-sizes-example.ts b/packages/docs-examples/components/sidepanel/sidepanel-sizes/sidepanel-sizes-example.ts index f692cba11..f1b6fc3c3 100644 --- a/packages/docs-examples/components/sidepanel/sidepanel-sizes/sidepanel-sizes-example.ts +++ b/packages/docs-examples/components/sidepanel/sidepanel-sizes/sidepanel-sizes-example.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, inject } from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; import { KbqSidepanelModule, @@ -20,13 +20,18 @@ import { changeDetection: ChangeDetectionStrategy.OnPush }) export class SidepanelSizesExample { + private sidepanelService = inject(KbqSidepanelService); + size = KbqSidepanelPosition.Right; @ViewChild(TemplateRef, { static: false }) template: TemplateRef; arrayLength = 40; array = new Array(this.arrayLength); - constructor(private sidepanelService: KbqSidepanelService) {} + + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + constructor() {} showSmall() { this.sidepanelService.open(this.template, { diff --git a/packages/docs-examples/components/timepicker/timepicker-overview/timepicker-overview-example.ts b/packages/docs-examples/components/timepicker/timepicker-overview/timepicker-overview-example.ts index 7e9380d32..b7832577f 100644 --- a/packages/docs-examples/components/timepicker/timepicker-overview/timepicker-overview-example.ts +++ b/packages/docs-examples/components/timepicker/timepicker-overview/timepicker-overview-example.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { LuxonDateModule } from '@koobiq/angular-luxon-adapter/adapter'; import { DateAdapter } from '@koobiq/components/core'; @@ -24,11 +24,16 @@ import { DateTime } from 'luxon'; changeDetection: ChangeDetectionStrategy.OnPush }) export class TimepickerOverviewExample { + private adapter = inject>(DateAdapter); + timeFormats = TimeFormats; time: DateTime; - constructor(private adapter: DateAdapter) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.time = this.adapter.today().startOf('hour'); } } diff --git a/packages/docs-examples/components/timepicker/timepicker-variations/timepicker-variations-example.ts b/packages/docs-examples/components/timepicker/timepicker-variations/timepicker-variations-example.ts index f8f1c52a2..0543d3d61 100644 --- a/packages/docs-examples/components/timepicker/timepicker-variations/timepicker-variations-example.ts +++ b/packages/docs-examples/components/timepicker/timepicker-variations/timepicker-variations-example.ts @@ -1,5 +1,5 @@ import { LowerCasePipe } from '@angular/common'; -import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { LuxonDateModule } from '@koobiq/angular-luxon-adapter/adapter'; import { DateAdapter } from '@koobiq/components/core'; @@ -28,12 +28,17 @@ import { DateTime } from 'luxon'; changeDetection: ChangeDetectionStrategy.OnPush }) export class TimepickerVariationsExample { + private adapter = inject>(DateAdapter); + value: DateTime; timeFormat = TimeFormats.HHmm; protected readonly TimeFormats = TimeFormats; - constructor(private adapter: DateAdapter) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.value = this.adapter.today(); } } diff --git a/packages/docs-examples/components/tree-select/tree-select-lazyload/tree-select-lazyload-example.ts b/packages/docs-examples/components/tree-select/tree-select-lazyload/tree-select-lazyload-example.ts index e16ffdadd..b1f293b4b 100644 --- a/packages/docs-examples/components/tree-select/tree-select-lazyload/tree-select-lazyload-example.ts +++ b/packages/docs-examples/components/tree-select/tree-select-lazyload/tree-select-lazyload-example.ts @@ -1,5 +1,5 @@ import { SelectionChange } from '@angular/cdk/collections'; -import { ChangeDetectionStrategy, Component, Injectable } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Injectable, inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { KbqIconModule } from '@koobiq/components/icon'; import { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner'; @@ -202,6 +202,8 @@ export class LazyLoadDataSource extends KbqTreeFlatDataSource { changeDetection: ChangeDetectionStrategy.OnPush }) export class TreeSelectLazyloadExample { + private dataService = inject(LazyLoadDataService); + selected = ''; treeControl: FlatTreeControl; treeFlattener: KbqTreeFlattener; @@ -210,7 +212,10 @@ export class TreeSelectLazyloadExample { nodeMap = new Map(); - constructor(private dataService: LazyLoadDataService) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren); this.treeControl = new FlatTreeControl( diff --git a/packages/docs-examples/components/tree/tree-lazyload/tree-lazyload-example.ts b/packages/docs-examples/components/tree/tree-lazyload/tree-lazyload-example.ts index 5b4a3963a..c25447df4 100644 --- a/packages/docs-examples/components/tree/tree-lazyload/tree-lazyload-example.ts +++ b/packages/docs-examples/components/tree/tree-lazyload/tree-lazyload-example.ts @@ -1,5 +1,5 @@ import { SelectionChange } from '@angular/cdk/collections'; -import { ChangeDetectionStrategy, Component, Injectable } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Injectable, inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner'; import { FlatTreeControl, KbqTreeFlatDataSource, KbqTreeFlattener, KbqTreeModule } from '@koobiq/components/tree'; @@ -191,6 +191,8 @@ class LazyLoadDataSource extends KbqTreeFlatDataSource { changeDetection: ChangeDetectionStrategy.OnPush }) export class TreeLazyloadExample { + private dataService = inject(LazyLoadDataService); + treeControl: FlatTreeControl; treeFlattener: KbqTreeFlattener; @@ -200,7 +202,10 @@ export class TreeLazyloadExample { nodeMap = new Map(); - constructor(private dataService: LazyLoadDataService) { + /** Inserted by Angular inject() migration for backwards compatibility */ + constructor(...args: unknown[]); + + constructor() { this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren); this.treeControl = new FlatTreeControl( diff --git a/tools/public_api_guard/components/autocomplete.api.md b/tools/public_api_guard/components/autocomplete.api.md index 46994fa50..cb75ab73a 100644 --- a/tools/public_api_guard/components/autocomplete.api.md +++ b/tools/public_api_guard/components/autocomplete.api.md @@ -7,20 +7,16 @@ import { ActiveDescendantKeyManager } from '@koobiq/components/core'; import { AfterContentInit } from '@angular/core'; import { AfterViewInit } from '@angular/core'; -import { ChangeDetectorRef } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; -import { Directionality } from '@angular/cdk/bidi'; import { ElementRef } from '@angular/core'; import * as i0 from '@angular/core'; import * as i1 from '@koobiq/components/core'; import * as i2 from '@angular/cdk/overlay'; import { InjectionToken } from '@angular/core'; -import { KbqFormField } from '@koobiq/components/form-field'; import { KbqOptgroup } from '@koobiq/components/core'; import { KbqOption } from '@koobiq/components/core'; import { KbqOptionSelectionChange } from '@koobiq/components/core'; import { KeyboardNavigationHandler } from '@koobiq/components/core'; -import { NgZone } from '@angular/core'; import { Observable } from 'rxjs'; import { OnDestroy } from '@angular/core'; import { Overlay } from '@angular/cdk/overlay'; @@ -28,8 +24,6 @@ import { Provider } from '@angular/core'; import { QueryList } from '@angular/core'; import { ScrollStrategy } from '@angular/cdk/overlay'; import { TemplateRef } from '@angular/core'; -import { ViewContainerRef } from '@angular/core'; -import { ViewportRuler } from '@angular/cdk/scrolling'; // @public export const AUTOCOMPLETE_PANEL_HEIGHT = 256; @@ -61,7 +55,7 @@ export const KBQ_AUTOCOMPLETE_VALUE_ACCESSOR: Provider; // @public (undocumented) export class KbqAutocomplete implements AfterContentInit { - constructor(changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef, defaults: KbqAutocompleteDefaultOptions, parentFormField: KbqFormField); + constructor(...args: unknown[]); get autoActiveFirstOption(): boolean; set autoActiveFirstOption(value: boolean); get classList(): string; @@ -106,7 +100,7 @@ export class KbqAutocomplete implements AfterContentInit { // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public @@ -134,7 +128,7 @@ export class KbqAutocompleteModule { // @public export class KbqAutocompleteOrigin { - constructor(elementRef: ElementRef); + constructor(...args: unknown[]); // (undocumented) elementRef: ElementRef; // (undocumented) @@ -154,7 +148,7 @@ export class KbqAutocompleteSelectedEvent { // @public (undocumented) export class KbqAutocompleteTrigger implements AfterViewInit, ControlValueAccessor, OnDestroy, KeyboardNavigationHandler { - constructor(elementRef: ElementRef, viewContainerRef: ViewContainerRef, changeDetectorRef: ChangeDetectorRef, overlay: Overlay, zone: NgZone, scrollStrategy: any, dir: Directionality, formField: KbqFormField, viewportRuler?: ViewportRuler | undefined); + constructor(...args: unknown[]); get activeOption(): KbqOption | null; readonly autocomplete: i0.InputSignal; readonly autocompleteAttribute: i0.InputSignal; @@ -200,7 +194,7 @@ export class KbqAutocompleteTrigger implements AfterViewInit, ControlValueAccess // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // (No @packageDocumentation comment for this package) diff --git a/tools/public_api_guard/components/badge.api.md b/tools/public_api_guard/components/badge.api.md index 57c07aa46..ee4b52a55 100644 --- a/tools/public_api_guard/components/badge.api.md +++ b/tools/public_api_guard/components/badge.api.md @@ -5,13 +5,10 @@ ```ts import { AfterContentInit } from '@angular/core'; -import { ChangeDetectorRef } from '@angular/core'; -import { ElementRef } from '@angular/core'; import * as i0 from '@angular/core'; import * as i1 from '@angular/cdk/a11y'; import * as i2 from '@angular/cdk/platform'; import { KbqIconItem } from '@koobiq/components/icon'; -import { Renderer2 } from '@angular/core'; // @public (undocumented) export const badgeLeftIconClassName = "kbq-badge-icon_left"; @@ -72,7 +69,7 @@ export enum KbqBadgeColors { // @public (undocumented) export class KbqBadgeCssStyler implements AfterContentInit { - constructor(elementRef: ElementRef, renderer: Renderer2, cdr: ChangeDetectorRef); + constructor(...args: unknown[]); // (undocumented) readonly icons: i0.Signal; // (undocumented) @@ -86,7 +83,7 @@ export class KbqBadgeCssStyler implements AfterContentInit { // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) diff --git a/tools/public_api_guard/components/button-toggle.api.md b/tools/public_api_guard/components/button-toggle.api.md index ae647e81e..35bfdeaaa 100644 --- a/tools/public_api_guard/components/button-toggle.api.md +++ b/tools/public_api_guard/components/button-toggle.api.md @@ -7,10 +7,7 @@ import { AfterContentInit } from '@angular/core'; import { AfterViewInit } from '@angular/core'; import * as _angular_core from '@angular/core'; -import { ChangeDetectorRef } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; -import { ElementRef } from '@angular/core'; -import { FocusMonitor } from '@angular/cdk/a11y'; import * as i1 from '@koobiq/components/button'; import * as i2 from '@koobiq/components/title'; import { KbqButton } from '@koobiq/components/button'; @@ -23,7 +20,7 @@ export const KBQ_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR: any; // @public export class KbqButtonToggle implements OnInit, AfterContentInit, AfterViewInit, OnDestroy { - constructor(buttonToggleGroup: KbqButtonToggleGroup, changeDetectorRef: ChangeDetectorRef, focusMonitor: FocusMonitor, element: ElementRef); + constructor(...args: unknown[]); // (undocumented) buttonToggleGroup: KbqButtonToggleGroup; readonly change: _angular_core.OutputEmitterRef; @@ -56,7 +53,7 @@ export class KbqButtonToggle implements OnInit, AfterContentInit, AfterViewInit, // (undocumented) static ɵcmp: _angular_core.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: _angular_core.ɵɵFactoryDeclaration; + static ɵfac: _angular_core.ɵɵFactoryDeclaration; } // @public @@ -70,7 +67,7 @@ export class KbqButtonToggleChange { // @public export class KbqButtonToggleGroup implements ControlValueAccessor, OnInit, AfterContentInit { - constructor(_changeDetector: ChangeDetectorRef); + constructor(...args: unknown[]); readonly buttonToggles: _angular_core.Signal; readonly change: _angular_core.OutputEmitterRef; controlValueAccessorChangeFn: (value: any) => void; diff --git a/tools/public_api_guard/components/button.api.md b/tools/public_api_guard/components/button.api.md index 0cd7df8d0..b81441b84 100644 --- a/tools/public_api_guard/components/button.api.md +++ b/tools/public_api_guard/components/button.api.md @@ -6,9 +6,7 @@ import { AfterContentInit } from '@angular/core'; import { AfterViewInit } from '@angular/core'; -import { ChangeDetectorRef } from '@angular/core'; import { ElementRef } from '@angular/core'; -import { FocusMonitor } from '@angular/cdk/a11y'; import * as i0 from '@angular/core'; import * as i1 from '@angular/cdk/a11y'; import * as i2 from '@angular/cdk/platform'; @@ -19,7 +17,6 @@ import { KbqDropdownTrigger } from '@koobiq/components/dropdown'; import { KbqOrientation } from '@koobiq/components/core'; import { KbqTitleTextRef } from '@koobiq/components/core'; import { OnDestroy } from '@angular/core'; -import { Renderer2 } from '@angular/core'; import { ThemePalette } from '@koobiq/components/core'; // @public (undocumented) @@ -30,7 +27,7 @@ export const buttonRightIconClassName = "kbq-button-icon_right"; // @public (undocumented) export class KbqButton extends KbqColorDirective implements OnDestroy, AfterViewInit, KbqTitleTextRef { - constructor(focusMonitor: FocusMonitor, styler: KbqButtonCssStyler); + constructor(...args: unknown[]); get disabled(): boolean; set disabled(value: boolean); readonly disabledSignal: i0.WritableSignal; @@ -74,7 +71,7 @@ export class KbqButton extends KbqColorDirective implements OnDestroy, AfterView // @public (undocumented) export class KbqButtonCssStyler implements AfterContentInit { - constructor(elementRef: ElementRef, renderer: Renderer2, cdr: ChangeDetectorRef); + constructor(...args: unknown[]); // (undocumented) readonly icons: i0.Signal; // (undocumented) @@ -88,7 +85,7 @@ export class KbqButtonCssStyler implements AfterContentInit { // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public diff --git a/tools/public_api_guard/components/checkbox.api.md b/tools/public_api_guard/components/checkbox.api.md index 81cdfeb43..fe0e63506 100644 --- a/tools/public_api_guard/components/checkbox.api.md +++ b/tools/public_api_guard/components/checkbox.api.md @@ -6,11 +6,9 @@ import { AfterViewInit } from '@angular/core'; import * as _angular_core from '@angular/core'; -import { ChangeDetectorRef } from '@angular/core'; import { CheckboxRequiredValidator } from '@angular/forms'; import { ControlValueAccessor } from '@angular/forms'; import { ElementRef } from '@angular/core'; -import { FocusMonitor } from '@angular/cdk/a11y'; import { InjectionToken } from '@angular/core'; import { KbqCheckedState } from '@koobiq/components/core'; import { KbqColorDirective } from '@koobiq/components/core'; @@ -28,7 +26,7 @@ export const KBQ_CHECKBOX_REQUIRED_VALIDATOR: Provider; // @public export class KbqCheckbox extends KbqColorDirective implements ControlValueAccessor, AfterViewInit, OnDestroy { - constructor(changeDetectorRef: ChangeDetectorRef, focusMonitor: FocusMonitor); + constructor(...args: unknown[]); // (undocumented) readonly big: _angular_core.InputSignal; readonly change: _angular_core.OutputEmitterRef; diff --git a/tools/public_api_guard/components/core.api.md b/tools/public_api_guard/components/core.api.md index e06d90fca..52060591c 100644 --- a/tools/public_api_guard/components/core.api.md +++ b/tools/public_api_guard/components/core.api.md @@ -280,11 +280,11 @@ export abstract class DateAdapter extends DateAdapter_2 { // @public (undocumented) export class DateFormatter extends DateFormatter_2 { - constructor(adapter: DateAdapter_2, locale: string); + constructor(...args: unknown[]); // (undocumented) readonly adapter: DateAdapter_2; // (undocumented) - protected localeService: KbqLocaleService | null; + protected localeService: KbqLocaleService; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration, never>; // (undocumented) @@ -2373,13 +2373,13 @@ export type KbqDateFormats = DateFormats; // @public (undocumented) export class KbqDecimalPipe implements KbqNumericPipe, PipeTransform { - constructor(id: string, localeService: KbqLocaleService, options: ParsedDigitsInfo); + constructor(...args: unknown[]); // (undocumented) isSpecialFormatForRULocale(locale: string, value: number, grouping?: boolean): boolean; // (undocumented) transform(value: any, digitsInfo?: string, locale?: string): string | null; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) static ɵpipe: i0.ɵɵPipeDeclaration; // (undocumented) @@ -2461,7 +2461,7 @@ export class KbqFormattersModule { // @public (undocumented) export class KbqFormElement implements AfterContentInit { - constructor(element: ElementRef); + constructor(...args: unknown[]); // (undocumented) readonly elements: i0.Signal; // (undocumented) @@ -2553,7 +2553,7 @@ export class KbqLineSetter { // @public (undocumented) export class KbqLocaleService { - constructor(id: string, localeData: any); + constructor(...args: unknown[]); // (undocumented) addLocale(id: string, localeData: any): void; // (undocumented) @@ -2569,7 +2569,7 @@ export class KbqLocaleService { // (undocumented) setLocale(id: string): void; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) static ɵprov: i0.ɵɵInjectableDeclaration; } @@ -2669,7 +2669,7 @@ export class KbqOptgroup { // @public export class KbqOption extends KbqOptionBase implements AfterViewChecked, OnDestroy, KbqTitleTextRef { - constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, parent: KbqOptionParentComponent, group: KbqOptgroup); + constructor(...args: unknown[]); get active(): boolean; // (undocumented) deselect(emitEvent?: boolean): void; @@ -2722,7 +2722,7 @@ export class KbqOption extends KbqOptionBase implements AfterViewChecked, OnDest // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) @@ -3225,7 +3225,7 @@ export class KbqRelativeShortDateTimePipe extends BaseLocaleAwareFormatterPip // @public (undocumented) export class KbqRoundDecimalPipe implements PipeTransform { - constructor(id: string, localeService: KbqLocaleService); + constructor(...args: unknown[]); // Warning: (ae-forgotten-export) The symbol "RoundDecimalOptions" needs to be exported by the entry point index.d.ts // // (undocumented) @@ -3233,7 +3233,7 @@ export class KbqRoundDecimalPipe implements PipeTransform { // (undocumented) transform(value: any, locale?: string): any; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) static ɵpipe: i0.ɵɵPipeDeclaration; // (undocumented) @@ -3269,7 +3269,7 @@ export function kbqSelectScrollStrategyProviderFactory(overlay: Overlay): () => // @public (undocumented) export class KbqSelectSearch implements AfterContentInit, OnDestroy { - constructor(formField: KbqFormFieldRef); + constructor(...args: unknown[]); // (undocumented) readonly changes: EventEmitter; // (undocumented) @@ -3297,7 +3297,7 @@ export class KbqSelectSearch implements AfterContentInit, OnDestroy { // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) @@ -3332,11 +3332,11 @@ export type KbqStickToWindowPlacementValues = KbqEnumValues; + static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) static ɵpipe: i0.ɵɵPipeDeclaration; // (undocumented) diff --git a/tools/public_api_guard/components/datepicker.api.md b/tools/public_api_guard/components/datepicker.api.md index 855175a5c..d26e019b1 100644 --- a/tools/public_api_guard/components/datepicker.api.md +++ b/tools/public_api_guard/components/datepicker.api.md @@ -9,10 +9,8 @@ import { AfterContentInit } from '@angular/core'; import { AfterViewInit } from '@angular/core'; import * as _angular_core from '@angular/core'; import { AnimationTriggerMetadata } from '@angular/animations'; -import { ChangeDetectorRef } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; import { DateAdapter } from '@koobiq/components/core'; -import { Directionality } from '@angular/cdk/bidi'; import { DoCheck } from '@angular/core'; import { ElementRef } from '@angular/core'; import { ErrorStateMatcher } from '@koobiq/components/core'; @@ -26,23 +24,19 @@ import * as i5 from '@koobiq/components/select'; import * as i6 from '@koobiq/components/icon'; import * as i8 from '@angular/common'; import { InjectionToken } from '@angular/core'; -import { KbqDateFormats } from '@koobiq/components/core'; import { KbqFormField } from '@koobiq/components/form-field'; import { KbqFormFieldControl } from '@koobiq/components/form-field'; import { KbqTooltipTrigger } from '@koobiq/components/tooltip'; import * as _koobiq_components_core from '@koobiq/components/core'; -import { NgZone } from '@angular/core'; import { OnChanges } from '@angular/core'; import { OnDestroy } from '@angular/core'; import { Overlay } from '@angular/cdk/overlay'; import { OverlayRef } from '@angular/cdk/overlay'; -import { Renderer2 } from '@angular/core'; import { ScrollStrategy } from '@angular/cdk/overlay'; import { SimpleChanges } from '@angular/core'; import { Subject } from 'rxjs'; import { ValidationErrors } from '@angular/forms'; import { Validator } from '@angular/forms'; -import { ViewContainerRef } from '@angular/core'; // @public export const KBQ_DATEPICKER_CONFIGURATION: InjectionToken; @@ -74,7 +68,7 @@ export const KBQ_DATEPICKER_VALUE_ACCESSOR: any; // @public export class KbqCalendar implements AfterContentInit, OnDestroy, OnChanges { - constructor(intl: KbqDatepickerIntl, adapter: DateAdapter, changeDetectorRef: ChangeDetectorRef); + constructor(...args: unknown[]); get activeDate(): D; set activeDate(value: D | null); readonly dateClass: _angular_core.InputSignal<(date: D) => KbqCalendarCellCssClasses>; @@ -108,7 +102,7 @@ export class KbqCalendar implements AfterContentInit, OnDestroy, OnChanges { // (undocumented) static ɵcmp: _angular_core.ɵɵComponentDeclaration, "kbq-calendar", ["kbqCalendar"], { "startAt": { "alias": "startAt"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "dateFilter": { "alias": "dateFilter"; "required": false; "isSignal": true; }; "dateClass": { "alias": "dateClass"; "required": false; "isSignal": true; }; }, { "selectedChange": "selectedChange"; "yearSelected": "yearSelected"; "monthSelected": "monthSelected"; "userSelection": "userSelection"; }, never, never, true, never>; // (undocumented) - static ɵfac: _angular_core.ɵɵFactoryDeclaration, [null, { optional: true; }, null]>; + static ɵfac: _angular_core.ɵɵFactoryDeclaration, never>; } // @public @@ -156,7 +150,7 @@ export type KbqCalendarCellCssClasses = string | string[] | Set | { // @public export class KbqCalendarHeader implements AfterContentInit { - constructor(adapter: DateAdapter); + constructor(...args: unknown[]); // (undocumented) get activeDate(): D; set activeDate(value: D); @@ -201,7 +195,7 @@ export class KbqCalendarHeader implements AfterContentInit { // @public export class KbqDatepicker implements OnDestroy { - constructor(overlay: Overlay, ngZone: NgZone, viewContainerRef: ViewContainerRef, scrollStrategy: any, dateAdapter: DateAdapter, dir: Directionality); + constructor(...args: unknown[]); // (undocumented) readonly backdropClass: _angular_core.InputSignal; close(restoreFocus?: boolean): void; @@ -249,7 +243,7 @@ export class KbqDatepicker implements OnDestroy { // (undocumented) static ɵcmp: _angular_core.ɵɵComponentDeclaration, "kbq-datepicker", ["kbqDatepicker"], { "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "startAt": { "alias": "startAt"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "opened": { "alias": "opened"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "dateClass": { "alias": "dateClass"; "required": false; "isSignal": true; }; "backdropClass": { "alias": "backdropClass"; "required": false; "isSignal": true; }; }, { "yearSelected": "yearSelected"; "monthSelected": "monthSelected"; "openedStream": "opened"; "closedStream": "closed"; }, never, never, true, never>; // (undocumented) - static ɵfac: _angular_core.ɵɵFactoryDeclaration, [null, null, null, null, { optional: true; }, { optional: true; }]>; + static ɵfac: _angular_core.ɵɵFactoryDeclaration, never>; } // @public @@ -260,7 +254,7 @@ export const kbqDatepickerAnimations: { // @public export class KbqDatepickerContent implements OnDestroy, AfterViewInit { - constructor(changeDetectorRef: ChangeDetectorRef); + constructor(...args: unknown[]); readonly animationDone: Subject; animationState: 'enter' | 'void'; readonly calendar: _angular_core.Signal>; @@ -279,7 +273,7 @@ export class KbqDatepickerContent implements OnDestroy, AfterViewInit { // @public export class KbqDatepickerInput implements KbqFormFieldControl, ControlValueAccessor, Validator, OnDestroy, DoCheck, AfterContentInit { - constructor(elementRef: ElementRef, renderer: Renderer2, adapter: DateAdapter, dateFormats: KbqDateFormats); + constructor(...args: unknown[]); // (undocumented) readonly adapter: DateAdapter; // (undocumented) @@ -308,14 +302,14 @@ export class KbqDatepickerInput implements KbqFormFieldControl, ControlVal set errorState(value: boolean); get errorStateMatcher(): ErrorStateMatcher; set errorStateMatcher(value: ErrorStateMatcher); - protected readonly externalConfiguration: unknown; + protected readonly externalConfiguration: {}; // (undocumented) focus(): void; // (undocumented) focusChanged(isFocused: boolean): void; // (undocumented) focused: boolean; - protected readonly formField: KbqFormField | null; + protected readonly formField: KbqFormField; getOrigin(): ElementRef; // (undocumented) get id(): string; @@ -329,7 +323,8 @@ export class KbqDatepickerInput implements KbqFormFieldControl, ControlVal set kbqDatepickerFilter(value: (date: D | null) => boolean); // (undocumented) set kbqValidationTooltip(tooltip: KbqTooltipTrigger); - protected readonly localeService: _koobiq_components_core.KbqLocaleService | null; + // (undocumented) + protected readonly localeService: _koobiq_components_core.KbqLocaleService; get max(): D | null; set max(value: D | null); get min(): D | null; @@ -386,7 +381,7 @@ export class KbqDatepickerInput implements KbqFormFieldControl, ControlVal // (undocumented) static ɵdir: _angular_core.ɵɵDirectiveDeclaration, "input[kbqDatepicker], input[kbqCalendar]", ["kbqDatepickerInput"], { "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "kbqDatepicker": { "alias": "kbqDatepicker"; "required": false; }; "kbqCalendar": { "alias": "kbqCalendar"; "required": false; }; "kbqDatepickerFilter": { "alias": "kbqDatepickerFilter"; "required": false; }; "value": { "alias": "value"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "id": { "alias": "id"; "required": false; }; "kbqValidationTooltip": { "alias": "kbqValidationTooltip"; "required": false; }; }, { "incorrectInput": "incorrectInput"; "dateChange": "dateChange"; "dateInput": "dateInput"; }, never, never, true, never>; // (undocumented) - static ɵfac: _angular_core.ɵɵFactoryDeclaration, [null, null, { optional: true; }, { optional: true; }]>; + static ɵfac: _angular_core.ɵɵFactoryDeclaration, never>; } // @public @@ -456,7 +451,7 @@ export class KbqDatepickerToggleIconComponent implements AfterContentInit, On // @public export class KbqMonthView implements AfterContentInit { - constructor(changeDetectorRef: ChangeDetectorRef, adapter: DateAdapter); + constructor(...args: unknown[]); get activeDate(): D; set activeDate(value: D); readonly activeDateChange: _angular_core.OutputEmitterRef; @@ -486,7 +481,7 @@ export class KbqMonthView implements AfterContentInit { // (undocumented) static ɵcmp: _angular_core.ɵɵComponentDeclaration, "kbq-month-view", ["kbqMonthView"], { "activeDate": { "alias": "activeDate"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "dateFilter": { "alias": "dateFilter"; "required": false; "isSignal": true; }; "dateClass": { "alias": "dateClass"; "required": false; "isSignal": true; }; }, { "selectedChange": "selectedChange"; "userSelection": "userSelection"; "activeDateChange": "activeDateChange"; }, never, never, true, never>; // (undocumented) - static ɵfac: _angular_core.ɵɵFactoryDeclaration, [null, { optional: true; }]>; + static ɵfac: _angular_core.ɵɵFactoryDeclaration, never>; } // @public (undocumented) diff --git a/tools/public_api_guard/components/dropdown.api.md b/tools/public_api_guard/components/dropdown.api.md index 444f48480..7de4975f8 100644 --- a/tools/public_api_guard/components/dropdown.api.md +++ b/tools/public_api_guard/components/dropdown.api.md @@ -8,24 +8,18 @@ import { AfterContentInit } from '@angular/core'; import { AfterViewInit } from '@angular/core'; import { AnimationEvent as AnimationEvent_2 } from '@angular/animations'; import { AnimationTriggerMetadata } from '@angular/animations'; -import { ApplicationRef } from '@angular/core'; -import { ChangeDetectorRef } from '@angular/core'; import { Direction } from '@angular/cdk/bidi'; -import { Directionality } from '@angular/cdk/bidi'; import { ElementRef } from '@angular/core'; import { EventEmitter } from '@angular/core'; -import { FocusMonitor } from '@angular/cdk/a11y'; import { FocusOrigin } from '@angular/cdk/a11y'; import * as i0 from '@angular/core'; import * as i1 from '@angular/cdk/overlay'; import * as i2 from '@koobiq/components/icon'; import { IFocusableOption } from '@koobiq/components/core'; import { InjectionToken } from '@angular/core'; -import { Injector } from '@angular/core'; import { KbqComponentColors } from '@koobiq/components/core'; import { KbqIcon } from '@koobiq/components/icon'; import { KbqTitleTextRef } from '@koobiq/components/core'; -import { NgZone } from '@angular/core'; import { Observable } from 'rxjs'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; @@ -34,7 +28,6 @@ import { QueryList } from '@angular/core'; import { ScrollStrategy } from '@angular/cdk/overlay'; import { Subject } from 'rxjs'; import { TemplateRef } from '@angular/core'; -import { ViewContainerRef } from '@angular/core'; // @public export type DropdownCloseReason = void | 'click' | 'keydown' | 'tab'; @@ -75,7 +68,7 @@ export const KBQ_DROPDOWN_SCROLL_STRATEGY_FACTORY_PROVIDER: { // @public (undocumented) export class KbqDropdown implements AfterContentInit, KbqDropdownPanel, OnInit, OnDestroy { - constructor(elementRef: ElementRef, ngZone: NgZone, defaultOptions: KbqDropdownDefaultOptions); + constructor(...args: unknown[]); animationDone: Subject; backdropClass: string; classList: { @@ -136,7 +129,7 @@ export const kbqDropdownAnimations: { // @public export class KbqDropdownContent implements OnDestroy { - constructor(template: TemplateRef, appRef: ApplicationRef, injector: Injector, viewContainerRef: ViewContainerRef); + constructor(...args: unknown[]); attach(context?: any): void; attached: Subject; detach(): void; @@ -162,7 +155,7 @@ export interface KbqDropdownDefaultOptions { // @public export class KbqDropdownItem implements KbqTitleTextRef, IFocusableOption, AfterViewInit, OnDestroy { - constructor(elementRef: ElementRef, focusMonitor: FocusMonitor, parentDropdownPanel?: KbqDropdownPanel | undefined); + constructor(...args: unknown[]); checkDisabled(event: Event): void; protected readonly componentColors: typeof KbqComponentColors; // (undocumented) @@ -196,7 +189,7 @@ export class KbqDropdownItem implements KbqTitleTextRef, IFocusableOption, After // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) @@ -261,7 +254,7 @@ export class KbqDropdownStaticContent { // @public export class KbqDropdownTrigger implements AfterContentInit, OnDestroy { - constructor(overlay: Overlay, elementRef: ElementRef, viewContainerRef: ViewContainerRef, scrollStrategy: any, parent: KbqDropdown, dropdownItemInstance: KbqDropdownItem, _dir: Directionality, changeDetectorRef: ChangeDetectorRef, focusMonitor?: FocusMonitor | undefined); + constructor(...args: unknown[]); close(): void; data: any; demoteOverlay: boolean; @@ -302,7 +295,7 @@ export class KbqDropdownTrigger implements AfterContentInit, OnDestroy { // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) diff --git a/tools/public_api_guard/components/empty-state.api.md b/tools/public_api_guard/components/empty-state.api.md index e0d739f9e..c075bbf6a 100644 --- a/tools/public_api_guard/components/empty-state.api.md +++ b/tools/public_api_guard/components/empty-state.api.md @@ -9,7 +9,6 @@ import * as i0 from '@angular/core'; import * as i1 from '@angular/cdk/a11y'; import * as i2 from '@angular/cdk/platform'; import { KbqDefaultSizes } from '@koobiq/components/core'; -import { KbqIconItem } from '@koobiq/components/icon'; // @public (undocumented) export class KbqEmptyState implements AfterContentInit { @@ -40,13 +39,13 @@ export class KbqEmptyStateActions { // @public (undocumented) export class KbqEmptyStateIcon { - constructor(icon: KbqIconItem); + constructor(...args: unknown[]); // (undocumented) setErrorColor(): void; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) diff --git a/tools/public_api_guard/components/form-field.api.md b/tools/public_api_guard/components/form-field.api.md index 8e306b12c..61cd418b4 100644 --- a/tools/public_api_guard/components/form-field.api.md +++ b/tools/public_api_guard/components/form-field.api.md @@ -96,6 +96,7 @@ export class KbqFormField extends KbqColorDirective implements AfterContentInit, readonly contentClass: i0.InputSignal | undefined>; readonly control: i0.Signal>; get disabled(): boolean; + // (undocumented) readonly elementRef: ElementRef; focus(options?: FocusOptions): void; get focusOrigin(): FocusOrigin; @@ -217,7 +218,7 @@ export class KbqLegend { // @public (undocumented) export class KbqPasswordHint extends KbqHint implements AfterContentInit { - constructor(changeDetectorRef: ChangeDetectorRef, formField: any); + constructor(...args: unknown[]); // (undocumented) checked: boolean; // (undocumented) @@ -246,7 +247,7 @@ export class KbqPasswordHint extends KbqHint implements AfterContentInit { // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public @@ -326,13 +327,13 @@ export class KbqSuffix { // @public export class KbqTrim { - constructor(noTrim: boolean, ngControl: NgControl); + constructor(...args: unknown[]); // (undocumented) trim(value: any): any; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) diff --git a/tools/public_api_guard/components/input.api.md b/tools/public_api_guard/components/input.api.md index 5a08bfdb0..0d95e19d5 100644 --- a/tools/public_api_guard/components/input.api.md +++ b/tools/public_api_guard/components/input.api.md @@ -19,14 +19,12 @@ import * as i3 from '@koobiq/components/icon'; import * as i8 from '@koobiq/components/form-field'; import { InjectionToken } from '@angular/core'; import { KbqFormFieldControl } from '@koobiq/components/form-field'; -import { KbqLocaleService } from '@koobiq/components/core'; import { KbqNumberInputLocaleConfig } from '@koobiq/components/core'; import { NgControl } from '@angular/forms'; import { NgForm } from '@angular/forms'; import { OnChanges } from '@angular/core'; import { OnDestroy } from '@angular/core'; import { Provider } from '@angular/core'; -import { Renderer2 } from '@angular/core'; import { SimpleChanges } from '@angular/core'; import { Subject } from 'rxjs'; import { ValidationErrors } from '@angular/forms'; @@ -68,7 +66,7 @@ export const KBQ_NUMBER_INPUT_VALUE_ACCESSOR: any; // @public (undocumented) export class KbqInput implements KbqFormFieldControl, OnChanges, OnDestroy, DoCheck, OnChanges, CanUpdateErrorState { - constructor(elementRef: ElementRef, ngControl: NgControl, numberInput: KbqNumberInput, parentForm: NgForm, parentFormGroup: FormGroupDirective, defaultErrorStateMatcher: ErrorStateMatcher, inputValueAccessor: any); + constructor(...args: unknown[]); controlType: string; // (undocumented) defaultErrorStateMatcher: ErrorStateMatcher; @@ -124,7 +122,7 @@ export class KbqInput implements KbqFormFieldControl, OnChanges, OnDestroy, // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) @@ -147,7 +145,7 @@ export class KbqInputMono { // @public (undocumented) export class KbqInputPassword implements KbqFormFieldControl, OnChanges, OnDestroy, DoCheck, OnChanges, CanUpdateErrorState { - constructor(elementRef: ElementRef, ngControl: NgControl, parentForm: NgForm, parentFormGroup: FormGroupDirective, defaultErrorStateMatcher: ErrorStateMatcher, inputValueAccessor: any); + constructor(...args: unknown[]); // (undocumented) readonly checkRule: Subject; // (undocumented) @@ -205,12 +203,12 @@ export class KbqInputPassword implements KbqFormFieldControl, OnChanges, On // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) export class KbqNumberInput implements KbqFormFieldControl, ControlValueAccessor, OnDestroy { - constructor(elementRef: ElementRef, renderer: Renderer2, step: string, bigStep: string, min: string, max: string, localeService?: KbqLocaleService | undefined); + constructor(...args: unknown[]); // (undocumented) bigStep: number; // (undocumented) @@ -288,7 +286,7 @@ export class KbqNumberInput implements KbqFormFieldControl, ControlValueAcc // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) diff --git a/tools/public_api_guard/components/link.api.md b/tools/public_api_guard/components/link.api.md index d38fdfeb1..53ff10019 100644 --- a/tools/public_api_guard/components/link.api.md +++ b/tools/public_api_guard/components/link.api.md @@ -9,7 +9,6 @@ import { AfterViewInit } from '@angular/core'; import * as _angular_core from '@angular/core'; import { DestroyRef } from '@angular/core'; import { ElementRef } from '@angular/core'; -import { FocusMonitor } from '@angular/cdk/a11y'; import * as i1 from '@angular/cdk/a11y'; import { KbqIcon } from '@koobiq/components/icon'; import { OnDestroy } from '@angular/core'; @@ -21,7 +20,7 @@ export const baseURLRegex: RegExp; // @public (undocumented) export class KbqLink implements AfterContentInit, AfterViewInit, OnDestroy { - constructor(elementRef: ElementRef, focusMonitor: FocusMonitor); + constructor(...args: unknown[]); // (undocumented) readonly big: _angular_core.InputSignalWithTransform; // (undocumented) diff --git a/tools/public_api_guard/components/list.api.md b/tools/public_api_guard/components/list.api.md index 636840757..70fbef111 100644 --- a/tools/public_api_guard/components/list.api.md +++ b/tools/public_api_guard/components/list.api.md @@ -6,8 +6,6 @@ import { AfterContentInit } from '@angular/core'; import { AfterViewInit } from '@angular/core'; -import { ChangeDetectorRef } from '@angular/core'; -import { Clipboard as Clipboard_2 } from '@angular/cdk/clipboard'; import { ControlValueAccessor } from '@angular/forms'; import { ElementRef } from '@angular/core'; import { EventEmitter } from '@angular/core'; @@ -26,7 +24,6 @@ import { KbqPseudoCheckbox } from '@koobiq/components/core'; import { KbqTitleTextRef } from '@koobiq/components/core'; import { KbqTooltipTrigger } from '@koobiq/components/tooltip'; import { MultipleMode } from '@koobiq/components/core'; -import { NgZone } from '@angular/core'; import { Observable } from 'rxjs'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; @@ -58,7 +55,7 @@ export class KbqListCopyEvent { // @public (undocumented) export class KbqListItem implements AfterContentInit { - constructor(elementRef: ElementRef); + constructor(...args: unknown[]); // (undocumented) getHostElement(): HTMLElement; // (undocumented) @@ -87,7 +84,7 @@ export class KbqListModule { // @public export class KbqListOption implements OnDestroy, OnInit, IFocusableOption, KbqTitleTextRef { - constructor(elementRef: ElementRef, changeDetector: ChangeDetectorRef, ngZone: NgZone, listSelection: KbqListSelection, group: KbqOptgroup); + constructor(...args: unknown[]); // (undocumented) readonly actionButton: i0.Signal; // (undocumented) @@ -156,7 +153,7 @@ export class KbqListOption implements OnDestroy, OnInit, IFocusableOption, KbqTi // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) @@ -178,7 +175,7 @@ export class KbqListSelectAllEvent { // @public (undocumented) export class KbqListSelection implements AfterContentInit, AfterViewInit, OnDestroy, ControlValueAccessor { - constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, multiple: MultipleMode, clipboard: Clipboard_2); + constructor(...args: unknown[]); // (undocumented) get autoSelect(): boolean; set autoSelect(value: boolean); @@ -275,7 +272,7 @@ export class KbqListSelection implements AfterContentInit, AfterViewInit, OnDest // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) diff --git a/tools/public_api_guard/components/loader-overlay.api.md b/tools/public_api_guard/components/loader-overlay.api.md index 081917d0b..96e7cfe9e 100644 --- a/tools/public_api_guard/components/loader-overlay.api.md +++ b/tools/public_api_guard/components/loader-overlay.api.md @@ -4,7 +4,6 @@ ```ts -import { ElementRef } from '@angular/core'; import * as i0 from '@angular/core'; import * as i1 from '@angular/cdk/a11y'; import * as i2 from '@angular/cdk/platform'; @@ -12,11 +11,10 @@ import * as i3 from '@koobiq/components/progress-spinner'; import { KbqDefaultSizes } from '@koobiq/components/core'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; -import { Renderer2 } from '@angular/core'; // @public (undocumented) export class KbqLoaderOverlay implements OnInit, OnDestroy { - constructor(elementRef: ElementRef, renderer: Renderer2); + constructor(...args: unknown[]); // (undocumented) caption: string; readonly card: i0.InputSignalWithTransform; diff --git a/tools/public_api_guard/components/markdown.api.md b/tools/public_api_guard/components/markdown.api.md index 2e78d0aac..51a4f5288 100644 --- a/tools/public_api_guard/components/markdown.api.md +++ b/tools/public_api_guard/components/markdown.api.md @@ -4,7 +4,6 @@ ```ts -import { DomSanitizer } from '@angular/platform-browser'; import * as i0 from '@angular/core'; import { InjectionToken } from '@angular/core'; import { MarkedOptions } from 'marked'; @@ -20,7 +19,7 @@ export const KBQ_MARKDOWN_MARKED_OPTIONS: InjectionToken; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public diff --git a/tools/public_api_guard/components/modal.api.md b/tools/public_api_guard/components/modal.api.md index 2cee1da12..0e1d43afc 100644 --- a/tools/public_api_guard/components/modal.api.md +++ b/tools/public_api_guard/components/modal.api.md @@ -5,12 +5,9 @@ ```ts import { AfterViewInit } from '@angular/core'; -import { ChangeDetectorRef } from '@angular/core'; -import { ComponentFactoryResolver } from '@angular/core'; import { ComponentRef } from '@angular/core'; import { ElementRef } from '@angular/core'; import { EventEmitter } from '@angular/core'; -import { FocusMonitor } from '@angular/cdk/a11y'; import * as i0 from '@angular/core'; import * as i1 from '@angular/cdk/overlay'; import * as i2 from '@angular/cdk/a11y'; @@ -28,9 +25,7 @@ import { OnInit } from '@angular/core'; import { Overlay } from '@angular/cdk/overlay'; import { OverlayRef } from '@angular/cdk/overlay'; import { PipeTransform } from '@angular/core'; -import { Renderer2 } from '@angular/core'; import { SimpleChanges } from '@angular/core'; -import { Subject } from 'rxjs'; import { TemplateRef } from '@angular/core'; import { Type } from '@angular/core'; import { ViewContainerRef } from '@angular/core'; @@ -88,8 +83,7 @@ export class KbqModalBody { // @public (undocumented) export class KbqModalComponent extends KbqModalRef implements OnInit, OnChanges, AfterViewInit, OnDestroy, ModalOptions { - // Warning: (ae-forgotten-export) The symbol "KbqModalControlService" needs to be exported by the entry point index.d.ts - constructor(overlay: Overlay, renderer: Renderer2, cfr: ComponentFactoryResolver, elementRef: ElementRef, viewContainer: ViewContainerRef, modalControl: KbqModalControlService, changeDetector: ChangeDetectorRef, focusMonitor: FocusMonitor); + constructor(...args: unknown[]); // (undocumented) get afterClose(): Observable; // (undocumented) @@ -306,7 +300,7 @@ export abstract class KbqModalRef { // @public (undocumented) export class KbqModalService { - constructor(overlay: Overlay, modalControl: KbqModalControlService, injector: Injector); + constructor(...args: unknown[]); // (undocumented) get afterAllClose(): Observable; // (undocumented) @@ -331,9 +325,9 @@ export class KbqModalService { // @public (undocumented) export class KbqModalTitle { - constructor(modal: KbqModalComponent); + constructor(...args: unknown[]); // (undocumented) - protected modal: KbqModalComponent; + protected modal: KbqModalComponent; // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) diff --git a/tools/public_api_guard/components/navbar.api.md b/tools/public_api_guard/components/navbar.api.md index dab5e95b6..0949a48a8 100644 --- a/tools/public_api_guard/components/navbar.api.md +++ b/tools/public_api_guard/components/navbar.api.md @@ -20,12 +20,10 @@ import { IFocusableOption } from '@koobiq/components/core'; import { InjectionToken } from '@angular/core'; import { KbqButton } from '@koobiq/components/button'; import { KbqButtonCssStyler } from '@koobiq/components/button'; -import { KbqDropdownTrigger } from '@koobiq/components/dropdown'; import { KbqFormField } from '@koobiq/components/form-field'; import { KbqIcon } from '@koobiq/components/icon'; import { KbqTooltipTrigger } from '@koobiq/components/tooltip'; import * as _koobiq_components_core from '@koobiq/components/core'; -import { NgZone } from '@angular/core'; import { Observable } from 'rxjs'; import { OnDestroy } from '@angular/core'; import { QueryList } from '@angular/core'; @@ -44,7 +42,7 @@ export const KBQ_VERTICAL_NAVBAR_DEFAULT_CONFIGURATION: { // @public (undocumented) export class KbqFocusableComponent implements AfterContentInit, AfterViewInit, OnDestroy { - constructor(changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef, focusMonitor: FocusMonitor); + constructor(...args: unknown[]); // (undocumented) blur(): void; // (undocumented) @@ -84,7 +82,7 @@ export class KbqFocusableComponent implements AfterContentInit, AfterViewInit, O // @public (undocumented) export class KbqNavbar extends KbqFocusableComponent implements AfterViewInit, AfterContentInit, OnDestroy { - constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, focusMonitor: FocusMonitor); + constructor(...args: unknown[]); // (undocumented) protected readonly changeDetectorRef: ChangeDetectorRef; // (undocumented) @@ -170,7 +168,7 @@ export class KbqNavbarDivider { // @public (undocumented) export class KbqNavbarFocusableItem implements AfterContentInit, AfterViewInit, OnDestroy, IFocusableOption { - constructor(elementRef: ElementRef, changeDetector: ChangeDetectorRef, focusMonitor: FocusMonitor, ngZone: NgZone); + constructor(...args: unknown[]); // (undocumented) blur(): void; // (undocumented) @@ -224,7 +222,7 @@ export interface KbqNavbarFocusableItemEvent { // @public (undocumented) export class KbqNavbarItem extends KbqTooltipTrigger implements AfterContentInit { - constructor(rectangleElement: KbqNavbarRectangleElement, navbarFocusableItem: KbqNavbarFocusableItem, changeDetectorRef: ChangeDetectorRef, dropdownTrigger: KbqDropdownTrigger, bento: KbqNavbarBento); + constructor(...args: unknown[]); // (undocumented) get collapsable(): boolean; set collapsable(value: boolean); @@ -274,7 +272,7 @@ export class KbqNavbarItem extends KbqTooltipTrigger implements AfterContentInit // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) @@ -368,7 +366,7 @@ export class KbqNavbarToggle implements OnDestroy { // @public (undocumented) export class KbqVerticalNavbar extends KbqFocusableComponent implements AfterContentInit { - constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, focusMonitor: FocusMonitor); + constructor(...args: unknown[]); // (undocumented) readonly animationDone: Subject; // (undocumented) @@ -381,10 +379,10 @@ export class KbqVerticalNavbar extends KbqFocusableComponent implements AfterCon get expanded(): boolean; set expanded(value: boolean); // (undocumented) - readonly externalConfiguration: unknown; + readonly externalConfiguration: {}; // (undocumented) readonly items: i0.Signal; - protected readonly localeService: _koobiq_components_core.KbqLocaleService | null; + protected readonly localeService: _koobiq_components_core.KbqLocaleService; // (undocumented) ngAfterContentInit(): void; // (undocumented) diff --git a/tools/public_api_guard/components/popover.api.md b/tools/public_api_guard/components/popover.api.md index be9cd3f7c..2b1b9c00e 100644 --- a/tools/public_api_guard/components/popover.api.md +++ b/tools/public_api_guard/components/popover.api.md @@ -122,7 +122,7 @@ export class KbqPopoverConfirmComponent extends KbqPopoverComponent { // @public (undocumented) export class KbqPopoverConfirmTrigger extends KbqPopoverTrigger { - constructor(confirmText: string, confirmButtonText: string); + constructor(...args: unknown[]); // (undocumented) readonly confirm: i0.OutputEmitterRef; // (undocumented) @@ -140,7 +140,7 @@ export class KbqPopoverConfirmTrigger extends KbqPopoverTrigger { // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) diff --git a/tools/public_api_guard/components/radio.api.md b/tools/public_api_guard/components/radio.api.md index 2f8752385..84ce177bd 100644 --- a/tools/public_api_guard/components/radio.api.md +++ b/tools/public_api_guard/components/radio.api.md @@ -6,24 +6,21 @@ import { AfterContentInit } from '@angular/core'; import { AfterViewInit } from '@angular/core'; -import { ChangeDetectorRef } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; import { ElementRef } from '@angular/core'; -import { FocusMonitor } from '@angular/cdk/a11y'; import * as i0 from '@angular/core'; import * as i1 from '@angular/cdk/a11y'; import { KbqColorDirective } from '@koobiq/components/core'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; import { QueryList } from '@angular/core'; -import { UniqueSelectionDispatcher } from '@angular/cdk/collections'; // @public export const KBQ_RADIO_GROUP_CONTROL_VALUE_ACCESSOR: any; // @public (undocumented) export class KbqRadioButton extends KbqColorDirective implements OnInit, AfterViewInit, OnDestroy { - constructor(radioGroup: KbqRadioGroup, changeDetector: ChangeDetectorRef, focusMonitor: FocusMonitor, radioDispatcher: UniqueSelectionDispatcher); + constructor(...args: unknown[]); readonly change: i0.OutputEmitterRef; get checked(): boolean; set checked(value: boolean); @@ -68,7 +65,7 @@ export class KbqRadioButton extends KbqColorDirective implements OnInit, AfterVi // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public @@ -82,7 +79,7 @@ export class KbqRadioChange { // @public (undocumented) export class KbqRadioGroup implements AfterContentInit, ControlValueAccessor { - constructor(changeDetector: ChangeDetectorRef); + constructor(...args: unknown[]); // (undocumented) readonly big: i0.InputSignal; readonly change: i0.OutputEmitterRef; diff --git a/tools/public_api_guard/components/scrollbar.api.md b/tools/public_api_guard/components/scrollbar.api.md index e711a13ba..d2b4aa702 100644 --- a/tools/public_api_guard/components/scrollbar.api.md +++ b/tools/public_api_guard/components/scrollbar.api.md @@ -13,7 +13,6 @@ import * as i0 from '@angular/core'; import * as i1 from '@angular/cdk/overlay'; import { InitializationTarget } from 'overlayscrollbars'; import { InjectionToken } from '@angular/core'; -import { NgZone } from '@angular/core'; import { OnDestroy } from '@angular/core'; import { OverlayScrollbars } from 'overlayscrollbars'; import * as overlayscrollbars from 'overlayscrollbars'; @@ -54,7 +53,7 @@ export const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER: Provider; // @public export class KbqScrollbar implements AfterViewInit, OnDestroy { - constructor(ngZone: NgZone, targetElement: ElementRef); + constructor(...args: unknown[]); readonly contentElement: i0.Signal>; readonly defer: i0.InputSignal; // (undocumented) @@ -112,7 +111,7 @@ export class KbqScrollbar implements AfterViewInit, OnDestroy { // @public export class KbqScrollbarDirective implements OnDestroy { - constructor(ngZone: NgZone, scrollbarConfig?: KbqScrollbarOptions | undefined); + constructor(...args: unknown[]); readonly defer: i0.InputSignal; set events(value: KbqScrollbarEvents); // (undocumented) diff --git a/tools/public_api_guard/components/select.api.md b/tools/public_api_guard/components/select.api.md index 22f382598..15e219c93 100644 --- a/tools/public_api_guard/components/select.api.md +++ b/tools/public_api_guard/components/select.api.md @@ -7,17 +7,16 @@ import { ActiveDescendantKeyManager } from '@koobiq/components/core'; import { AfterContentInit } from '@angular/core'; import { AfterViewInit } from '@angular/core'; +import * as _angular_cdk_overlay_module_d from '@angular/cdk/overlay-module.d'; import * as _angular_core from '@angular/core'; import { CanUpdateErrorState } from '@koobiq/components/core'; import { CdkConnectedOverlay } from '@angular/cdk/overlay'; import { CdkOverlayOrigin } from '@angular/cdk/overlay'; import { CdkVirtualForOf } from '@angular/cdk/scrolling'; import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { ChangeDetectorRef } from '@angular/core'; import { ConnectedPosition } from '@angular/cdk/overlay'; import { ControlValueAccessor } from '@angular/forms'; import { DestroyRef } from '@angular/core'; -import { Directionality } from '@angular/cdk/bidi'; import { DoCheck } from '@angular/core'; import { ElementRef } from '@angular/core'; import { ErrorStateMatcher } from '@koobiq/components/core'; @@ -35,7 +34,6 @@ import { InjectionToken } from '@angular/core'; import { KbqAbstractSelect } from '@koobiq/components/core'; import { KbqCleaner } from '@koobiq/components/form-field'; import { KbqComponentColors } from '@koobiq/components/core'; -import { KbqFormField } from '@koobiq/components/form-field'; import { KbqFormFieldControl } from '@koobiq/components/form-field'; import { KbqLocaleService } from '@koobiq/components/core'; import { KbqOptgroup } from '@koobiq/components/core'; @@ -51,14 +49,11 @@ import { KbqTooltipTrigger } from '@koobiq/components/tooltip'; import { KbqVirtualOption } from '@koobiq/components/core'; import { NgControl } from '@angular/forms'; import { NgForm } from '@angular/forms'; -import { NgZone } from '@angular/core'; import { Observable } from 'rxjs'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; -import { OverlayContainer } from '@angular/cdk/overlay'; import { Provider } from '@angular/core'; import { QueryList } from '@angular/core'; -import { Renderer2 } from '@angular/core'; import { SelectionModel } from '@angular/cdk/collections'; import { Subject } from 'rxjs'; import { TemplateRef } from '@angular/core'; @@ -96,7 +91,7 @@ export class KbqOptionTooltip extends KbqTooltipTrigger implements AfterViewInit // @public (undocumented) export class KbqSelect extends KbqAbstractSelect implements AfterContentInit, OnDestroy, OnInit, DoCheck, ControlValueAccessor, KbqFormFieldControl, CanUpdateErrorState { - constructor(_changeDetectorRef: ChangeDetectorRef, _ngZone: NgZone, _renderer: Renderer2, defaultErrorStateMatcher: ErrorStateMatcher, elementRef: ElementRef, overlayContainer: OverlayContainer, _dir: Directionality, parentForm: NgForm, parentFormGroup: FormGroupDirective, parentFormField: KbqFormField, ngControl: NgControl, scrollStrategyFactory: any, localeService?: KbqLocaleService | undefined); + constructor(...args: unknown[]); readonly backdropClass: _angular_core.InputSignal; readonly beforeOpened: _angular_core.OutputEmitterRef; calculateHiddenItems: () => void; @@ -120,7 +115,7 @@ export class KbqSelect extends KbqAbstractSelect implements AfterContentInit, On panelWidth: KbqSelectPanelWidth; panelMinWidth: Exclude; searchMinOptionsThreshold: "auto" | number; - }> | null; + }>; protected readonly destroyRef: DestroyRef; get disabled(): boolean; set disabled(value: boolean); @@ -217,7 +212,7 @@ export class KbqSelect extends KbqAbstractSelect implements AfterContentInit, On resetSearch(): void; readonly scrolledToBottom: _angular_core.OutputEmitterRef; readonly scrolledToBottomOffset: _angular_core.InputSignalWithTransform; - scrollStrategy: any; + scrollStrategy: _angular_cdk_overlay_module_d.ScrollStrategy; readonly search: _angular_core.Signal; readonly searchEmpty: _angular_core.Signal; set searchMinOptionsThreshold(value: 'auto' | number | undefined); @@ -256,7 +251,7 @@ export class KbqSelect extends KbqAbstractSelect implements AfterContentInit, On // (undocumented) static ɵcmp: _angular_core.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: _angular_core.ɵɵFactoryDeclaration; + static ɵfac: _angular_core.ɵɵFactoryDeclaration; } // @public diff --git a/tools/public_api_guard/components/sidebar.api.md b/tools/public_api_guard/components/sidebar.api.md index 86d643212..bd67392b1 100644 --- a/tools/public_api_guard/components/sidebar.api.md +++ b/tools/public_api_guard/components/sidebar.api.md @@ -5,14 +5,12 @@ ```ts import { AfterContentInit } from '@angular/core'; -import { ElementRef } from '@angular/core'; import * as i0 from '@angular/core'; -import { NgZone } from '@angular/core'; import { OnDestroy } from '@angular/core'; // @public (undocumented) export class KbqSidebar implements OnDestroy, AfterContentInit { - constructor(ngZone: NgZone, elementRef: ElementRef); + constructor(...args: unknown[]); // Warning: (ae-forgotten-export) The symbol "KbqSidebarAnimationState" needs to be exported by the entry point index.d.ts get animationState(): KbqSidebarAnimationState; readonly closedContent: i0.Signal; diff --git a/tools/public_api_guard/components/sidepanel.api.md b/tools/public_api_guard/components/sidepanel.api.md index fc1c02fea..8b598cca1 100644 --- a/tools/public_api_guard/components/sidepanel.api.md +++ b/tools/public_api_guard/components/sidepanel.api.md @@ -7,11 +7,9 @@ import { AnimationEvent as AnimationEvent_2 } from '@angular/animations'; import { BasePortalOutlet } from '@angular/cdk/portal'; import { CdkPortalOutlet } from '@angular/cdk/portal'; -import { ChangeDetectorRef } from '@angular/core'; import { ComponentPortal } from '@angular/cdk/portal'; import { ComponentRef } from '@angular/core'; import { ComponentType } from '@angular/cdk/portal'; -import { ElementRef } from '@angular/core'; import { EmbeddedViewRef } from '@angular/core'; import { EventEmitter } from '@angular/core'; import * as i0 from '@angular/core'; @@ -27,7 +25,6 @@ import { Observable } from 'rxjs'; import { OnChanges } from '@angular/core'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; -import { Overlay } from '@angular/cdk/overlay'; import { OverlayRef } from '@angular/cdk/overlay'; import { SimpleChanges } from '@angular/core'; import { Subject } from 'rxjs'; @@ -62,7 +59,7 @@ export class KbqSidepanelBody { // @public export class KbqSidepanelClose implements OnInit, OnChanges { - constructor(sidepanelRef: KbqSidepanelRef, elementRef: ElementRef, sidepanelService: KbqSidepanelService); + constructor(...args: unknown[]); // (undocumented) readonly kbqSidepanelClose: i0.InputSignal; // (undocumented) @@ -70,13 +67,13 @@ export class KbqSidepanelClose implements OnInit, OnChanges { // (undocumented) ngOnInit(): void; // (undocumented) - sidepanelRef: KbqSidepanelRef; + sidepanelRef: KbqSidepanelRef; // (undocumented) sidepanelResult: any; // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) @@ -99,7 +96,7 @@ export class KbqSidepanelConfig { // @public (undocumented) export class KbqSidepanelContainerComponent extends BasePortalOutlet implements OnDestroy { - constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, sidepanelConfig: KbqSidepanelConfig, withIndent: boolean); + constructor(...args: unknown[]); // Warning: (ae-forgotten-export) The symbol "KbqSidepanelAnimationState" needs to be exported by the entry point index.d.ts animationState: KbqSidepanelAnimationState; animationStateChanged: EventEmitter; @@ -123,7 +120,7 @@ export class KbqSidepanelContainerComponent extends BasePortalOutlet implements readonly portalOutlet: i0.Signal; setAnimationState(state: KbqSidepanelAnimationState): void; // (undocumented) - sidepanelConfig: KbqSidepanelConfig; + sidepanelConfig: KbqSidepanelConfig; get size(): string; get trapFocus(): boolean; get trapFocusAutoCapture(): boolean; @@ -202,7 +199,7 @@ export class KbqSidepanelRef { // @public (undocumented) export class KbqSidepanelService implements OnDestroy { - constructor(overlay: Overlay, injector: Injector, defaultOptions: KbqSidepanelConfig, parentSidepanelService: KbqSidepanelService); + constructor(...args: unknown[]); closeAll(): void; getSidepanelById(id: string): KbqSidepanelRef | undefined; // (undocumented) @@ -211,7 +208,7 @@ export class KbqSidepanelService implements OnDestroy { open(componentOrTemplateRef: ComponentType | TemplateRef, config?: KbqSidepanelConfig): KbqSidepanelRef; get openedSidepanels(): KbqSidepanelRef[]; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; // (undocumented) static ɵprov: i0.ɵɵInjectableDeclaration; } diff --git a/tools/public_api_guard/components/splitter.api.md b/tools/public_api_guard/components/splitter.api.md index 9ba5e7454..3d8c3c511 100644 --- a/tools/public_api_guard/components/splitter.api.md +++ b/tools/public_api_guard/components/splitter.api.md @@ -10,11 +10,9 @@ import { ChangeDetectorRef } from '@angular/core'; import { ElementRef } from '@angular/core'; import * as i0 from '@angular/core'; import * as i1 from '@koobiq/components/icon'; -import { NgZone } from '@angular/core'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; import { QueryList } from '@angular/core'; -import { Renderer2 } from '@angular/core'; // @public (undocumented) export enum Direction { @@ -26,7 +24,7 @@ export enum Direction { // @public (undocumented) export class KbqGutterDirective implements OnInit { - constructor(elementRef: ElementRef, renderer: Renderer2); + constructor(...args: unknown[]); // (undocumented) get direction(): Direction; set direction(direction: Direction); @@ -54,7 +52,7 @@ export class KbqGutterDirective implements OnInit { // @public (undocumented) export class KbqGutterGhostDirective { - constructor(elementRef: ElementRef, renderer: Renderer2); + constructor(...args: unknown[]); // (undocumented) get direction(): Direction; set direction(direction: Direction); @@ -79,7 +77,7 @@ export class KbqGutterGhostDirective { // @public (undocumented) export class KbqSplitterAreaDirective implements AfterViewInit, OnDestroy { - constructor(elementRef: ElementRef, renderer: Renderer2, splitter: KbqSplitterComponent); + constructor(...args: unknown[]); // (undocumented) disableFlex(): void; // (undocumented) @@ -108,7 +106,7 @@ export class KbqSplitterAreaDirective implements AfterViewInit, OnDestroy { // @public (undocumented) export class KbqSplitterComponent implements OnInit, AfterContentInit, OnDestroy { - constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, ngZone: NgZone, renderer: Renderer2); + constructor(...args: unknown[]); // (undocumented) addArea(area: KbqSplitterAreaDirective): void; // (undocumented) diff --git a/tools/public_api_guard/components/tabs.api.md b/tools/public_api_guard/components/tabs.api.md index ec062949c..ea0e1540c 100644 --- a/tools/public_api_guard/components/tabs.api.md +++ b/tools/public_api_guard/components/tabs.api.md @@ -12,10 +12,8 @@ import { AnimationTriggerMetadata } from '@angular/animations'; import { CdkPortal } from '@angular/cdk/portal'; import { CdkPortalOutlet } from '@angular/cdk/portal'; import { ChangeDetectorRef } from '@angular/core'; -import { ComponentFactoryResolver } from '@angular/core'; import { DestroyRef } from '@angular/core'; import { Direction } from '@angular/cdk/bidi'; -import { Directionality } from '@angular/cdk/bidi'; import { ElementRef } from '@angular/core'; import { EventEmitter } from '@angular/core'; import { FocusableOption } from '@angular/cdk/a11y'; @@ -31,12 +29,10 @@ import { OnChanges } from '@angular/core'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; import { QueryList } from '@angular/core'; -import { Renderer2 } from '@angular/core'; import { SimpleChanges } from '@angular/core'; import { Subject } from 'rxjs'; import { TemplatePortal } from '@angular/cdk/portal'; import { TemplateRef } from '@angular/core'; -import { ViewContainerRef } from '@angular/core'; // @public (undocumented) export const KBQ_TAB_LABEL: InjectionToken; @@ -70,7 +66,7 @@ export class KbqStretchTabsCssStyler { // @public (undocumented) export class KbqTab implements OnInit, OnChanges, OnDestroy { - constructor(viewContainerRef: ViewContainerRef); + constructor(...args: unknown[]); get content(): TemplatePortal | null; // (undocumented) get disabled(): boolean; @@ -117,7 +113,7 @@ export class KbqTab implements OnInit, OnChanges, OnDestroy { // @public export class KbqTabBody implements OnInit, OnDestroy { - constructor(elementRef: ElementRef, dir: Directionality, changeDetectorRef: ChangeDetectorRef); + constructor(...args: unknown[]); readonly afterLeavingCenter: EventEmitter; readonly animationDuration: i0.InputSignal; readonly beforeCentering: EventEmitter; @@ -140,7 +136,7 @@ export class KbqTabBody implements OnInit, OnDestroy { // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public @@ -148,7 +144,7 @@ export type KbqTabBodyOriginState = 'left' | 'right'; // @public export class KbqTabBodyPortal extends CdkPortalOutlet implements OnInit, OnDestroy { - constructor(componentFactoryResolver: ComponentFactoryResolver, viewContainerRef: ViewContainerRef, host: KbqTabBody); + constructor(...args: unknown[]); ngOnDestroy(): void; ngOnInit(): void; // (undocumented) @@ -168,7 +164,7 @@ export class KbqTabChangeEvent { // @public export class KbqTabContent { - constructor(template: TemplateRef); + constructor(...args: unknown[]); // (undocumented) template: TemplateRef; // (undocumented) @@ -179,7 +175,7 @@ export class KbqTabContent { // @public export class KbqTabGroup implements AfterContentInit, AfterViewInit, AfterContentChecked, OnDestroy { - constructor(changeDetectorRef: ChangeDetectorRef, defaultConfig?: KbqTabsConfig); + constructor(...args: unknown[]); // (undocumented) get activeTab(): KbqTab | null; set activeTab(value: KbqTabSelectBy | null); @@ -236,7 +232,7 @@ export class KbqTabGroup implements AfterContentInit, AfterViewInit, AfterConten // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // Warning: (ae-forgotten-export) The symbol "KbqPaginatedTabHeader" needs to be exported by the entry point index.d.ts @@ -278,7 +274,7 @@ export class KbqTabLabel extends CdkPortal { // @public export class KbqTabLabelWrapper implements AfterViewInit { - constructor(elementRef: ElementRef, renderer: Renderer2); + constructor(...args: unknown[]); // (undocumented) checkOverflow(): void; // (undocumented) diff --git a/tools/public_api_guard/components/tags.api.md b/tools/public_api_guard/components/tags.api.md index 527d30c41..690f8129b 100644 --- a/tools/public_api_guard/components/tags.api.md +++ b/tools/public_api_guard/components/tags.api.md @@ -11,7 +11,6 @@ import { CanUpdateErrorState } from '@koobiq/components/core'; import { CdkDragDrop } from '@angular/cdk/drag-drop'; import { ChangeDetectorRef } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; -import { Directionality } from '@angular/cdk/bidi'; import { DoCheck } from '@angular/core'; import { ElementRef } from '@angular/core'; import { ErrorStateMatcher } from '@koobiq/components/core'; @@ -29,7 +28,6 @@ import { KbqColorDirective } from '@koobiq/components/core'; import { KbqFormFieldControl } from '@koobiq/components/form-field'; import { KbqIcon } from '@koobiq/components/icon'; import { KbqTitleTextRef } from '@koobiq/components/core'; -import { KbqTrim } from '@koobiq/components/form-field'; import { NgControl } from '@angular/forms'; import { NgForm } from '@angular/forms'; import { Observable } from 'rxjs'; @@ -43,7 +41,7 @@ export const KBQ_TAGS_DEFAULT_OPTIONS: InjectionToken; // @public (undocumented) export class KbqTag extends KbqColorDirective implements IFocusableOption, OnDestroy, KbqTitleTextRef, AfterContentInit, AfterViewInit { - constructor(changeDetectorRef: ChangeDetectorRef); + constructor(...args: unknown[]); addClassModificatorForIcons(): void; addHostClassName(): void; readonly avatar: _angular_core.Signal; @@ -174,7 +172,7 @@ export type KbqTagFocusEvent = KbqTagEvent & { // // @public export class KbqTagInput implements KbqTagTextControl, OnChanges { - constructor(elementRef: ElementRef, defaultOptions: KbqTagsDefaultOptions, trimDirective: KbqTrim, ngControl: NgControl, autocompleteTrigger?: KbqAutocompleteTrigger | undefined); + constructor(...args: unknown[]); get addOnBlur(): boolean; set addOnBlur(value: boolean); readonly addOnPaste: _angular_core.InputSignalWithTransform; @@ -211,7 +209,7 @@ export class KbqTagInput implements KbqTagTextControl, OnChanges { // (undocumented) static ɵdir: _angular_core.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: _angular_core.ɵɵFactoryDeclaration; + static ɵfac: _angular_core.ɵɵFactoryDeclaration; } // @public @@ -222,7 +220,7 @@ export interface KbqTagInputEvent { // @public (undocumented) export class KbqTagList implements KbqFormFieldControl, ControlValueAccessor, AfterContentInit, DoCheck, OnDestroy, CanUpdateErrorState, AfterViewInit { - constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, defaultErrorStateMatcher: ErrorStateMatcher, dir: Directionality, parentForm: NgForm, parentFormGroup: FormGroupDirective, ngControl: NgControl); + constructor(...args: unknown[]); blur(): void; get canShowCleaner(): boolean; readonly change: _angular_core.OutputEmitterRef; @@ -310,7 +308,7 @@ export class KbqTagList implements KbqFormFieldControl, ControlValueAccesso // (undocumented) static ɵcmp: _angular_core.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: _angular_core.ɵɵFactoryDeclaration; + static ɵfac: _angular_core.ɵɵFactoryDeclaration; } // @public @@ -329,7 +327,7 @@ export type KbqTagListDroppedEvent = Pick, 'event' | 'previ // @public export class KbqTagRemove { - constructor(parentTag: KbqTag); + constructor(...args: unknown[]); focus(event: FocusEvent): void; handleClick(event: Event): void; // (undocumented) diff --git a/tools/public_api_guard/components/textarea.api.md b/tools/public_api_guard/components/textarea.api.md index 247abe047..c3a1a854d 100644 --- a/tools/public_api_guard/components/textarea.api.md +++ b/tools/public_api_guard/components/textarea.api.md @@ -17,7 +17,6 @@ import { InjectionToken } from '@angular/core'; import { KbqFormFieldControl } from '@koobiq/components/form-field'; import { NgControl } from '@angular/forms'; import { NgForm } from '@angular/forms'; -import { NgZone } from '@angular/core'; import { OnChanges } from '@angular/core'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; @@ -31,7 +30,7 @@ export const KBQ_TEXTAREA_VALUE_ACCESSOR: InjectionToken<{ // @public (undocumented) export class KbqTextarea implements KbqFormFieldControl, OnInit, OnChanges, OnDestroy, DoCheck, CanUpdateErrorState { - constructor(elementRef: ElementRef, ngControl: NgControl, parentForm: NgForm, parentFormGroup: FormGroupDirective, defaultErrorStateMatcher: ErrorStateMatcher, inputValueAccessor: any, parent: any, ngZone: NgZone); + constructor(...args: unknown[]); get canGrow(): boolean; set canGrow(value: boolean); controlType: string; @@ -95,7 +94,7 @@ export class KbqTextarea implements KbqFormFieldControl, OnInit, OnChanges, // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) diff --git a/tools/public_api_guard/components/timepicker.api.md b/tools/public_api_guard/components/timepicker.api.md index 7d0ef76dc..0021a9bb1 100644 --- a/tools/public_api_guard/components/timepicker.api.md +++ b/tools/public_api_guard/components/timepicker.api.md @@ -7,9 +7,7 @@ import { AbstractControl } from '@angular/forms'; import { AfterContentInit } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; -import { DateAdapter } from '@koobiq/components/core'; import { DoCheck } from '@angular/core'; -import { ElementRef } from '@angular/core'; import { ErrorStateMatcher } from '@koobiq/components/core'; import * as i0 from '@angular/core'; import * as i1 from '@angular/cdk/a11y'; @@ -17,10 +15,8 @@ import * as i2 from '@angular/cdk/platform'; import * as i3 from '@angular/forms'; import * as i5 from '@koobiq/components/form-field'; import { KbqFormFieldControl } from '@koobiq/components/form-field'; -import { KbqLocaleService } from '@koobiq/components/core'; import { KbqTooltipTrigger } from '@koobiq/components/tooltip'; import { OnDestroy } from '@angular/core'; -import { Renderer2 } from '@angular/core'; import { Subject } from 'rxjs'; import { ValidationErrors } from '@angular/forms'; import { Validator } from '@angular/forms'; @@ -51,7 +47,7 @@ export const KBQ_TIMEPICKER_VALUE_ACCESSOR: any; // @public (undocumented) export class KbqTimepicker implements KbqFormFieldControl, ControlValueAccessor, Validator, OnDestroy, DoCheck, AfterContentInit { - constructor(elementRef: ElementRef, renderer: Renderer2, dateAdapter: DateAdapter, localeService?: KbqLocaleService | undefined); + constructor(...args: unknown[]); controlType: string; // (undocumented) get disabled(): boolean; @@ -140,7 +136,7 @@ export class KbqTimepicker implements KbqFormFieldControl, ControlValueAcc // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration, "input[kbqTimepicker]", ["kbqTimepicker"], { "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "id": { "alias": "id"; "required": false; }; "required": { "alias": "required"; "required": false; }; "format": { "alias": "format"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "value": { "alias": "value"; "required": false; }; "kbqValidationTooltip": { "alias": "kbqValidationTooltip"; "required": false; }; }, { "incorrectInput": "incorrectInput"; }, never, never, true, never>; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration, [null, null, { optional: true; }, { optional: true; }]>; + static ɵfac: i0.ɵɵFactoryDeclaration, never>; } // @public (undocumented) diff --git a/tools/public_api_guard/components/title.api.md b/tools/public_api_guard/components/title.api.md index 622cdd9ac..56bd0c2bc 100644 --- a/tools/public_api_guard/components/title.api.md +++ b/tools/public_api_guard/components/title.api.md @@ -7,14 +7,13 @@ import { AfterViewInit } from '@angular/core'; import * as i0 from '@angular/core'; import * as i1 from '@koobiq/components/tooltip'; -import { KbqTitleTextRef } from '@koobiq/components/core'; import { KbqTooltipTrigger } from '@koobiq/components/tooltip'; import { OnDestroy } from '@angular/core'; import { Subject } from 'rxjs'; // @public (undocumented) export class KbqTitleDirective extends KbqTooltipTrigger implements AfterViewInit, OnDestroy { - constructor(componentInstance?: KbqTitleTextRef | undefined); + constructor(...args: unknown[]); // (undocumented) get child(): HTMLElement; // (undocumented) @@ -45,7 +44,7 @@ export class KbqTitleDirective extends KbqTooltipTrigger implements AfterViewIni // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) diff --git a/tools/public_api_guard/components/toast.api.md b/tools/public_api_guard/components/toast.api.md index 0ec09341f..c27ee0f93 100644 --- a/tools/public_api_guard/components/toast.api.md +++ b/tools/public_api_guard/components/toast.api.md @@ -7,23 +7,17 @@ import { AnimationEvent as AnimationEvent_2 } from '@angular/animations'; import { BehaviorSubject } from 'rxjs'; import { CdkScrollable } from '@angular/cdk/overlay'; -import { ChangeDetectorRef } from '@angular/core'; import { ComponentRef } from '@angular/core'; import { ElementRef } from '@angular/core'; import { EmbeddedViewRef } from '@angular/core'; -import { FocusMonitor } from '@angular/cdk/a11y'; import * as i0 from '@angular/core'; import * as i1 from '@koobiq/components/core'; import { InjectionToken } from '@angular/core'; import { Injector } from '@angular/core'; import { KbqReadStateDirective } from '@koobiq/components/core'; -import { NgZone } from '@angular/core'; import { OnDestroy } from '@angular/core'; -import { Overlay } from '@angular/cdk/overlay'; -import { OverlayContainer } from '@angular/cdk/overlay'; import { Provider } from '@angular/core'; import * as rxjs from 'rxjs'; -import { ScrollDispatcher } from '@angular/cdk/overlay'; import { TemplateRef } from '@angular/core'; import { ThemePalette } from '@koobiq/components/core'; import { ViewContainerRef } from '@angular/core'; @@ -50,7 +44,7 @@ export class KbqToastCloseButton { export class KbqToastComponent implements OnDestroy { // (undocumented) $implicit: any; - constructor(data: KbqToastData, service: KbqToastService, elementRef: ElementRef, focusMonitor: FocusMonitor); + constructor(...args: unknown[]); // (undocumented) animationState: string; // (undocumented) @@ -78,7 +72,7 @@ export class KbqToastComponent implements OnDestroy { // (undocumented) protected readonly readStateDirective: KbqReadStateDirective; // (undocumented) - readonly service: KbqToastService; + readonly service: KbqToastService; // (undocumented) themePalette: typeof ThemePalette; // (undocumented) @@ -114,7 +108,7 @@ export const kbqToastConfigurationProvider: (configuration: Partial, scrollDispatcher: ScrollDispatcher, ngZone: NgZone); + constructor(...args: unknown[]); // (undocumented) createTemplate(data: KbqToastData, template: TemplateRef, onTop: boolean): EmbeddedViewRef; // (undocumented) @@ -126,7 +120,7 @@ export class KbqToastContainerComponent extends CdkScrollable { // (undocumented) remove(viewRef: ViewRef): void; // (undocumented) - readonly service: KbqToastService; + readonly service: KbqToastService; // (undocumented) readonly viewContainer: i0.Signal; // (undocumented) @@ -187,7 +181,7 @@ export enum KbqToastPosition { // @public export class KbqToastService implements OnDestroy { - constructor(overlay: Overlay, injector: Injector, overlayContainer: OverlayContainer, ngZone: NgZone, toastFactory: any, toastConfig: KbqToastConfig); + constructor(...args: unknown[]); // (undocumented) readonly animation: BehaviorSubject; // (undocumented) @@ -219,7 +213,7 @@ export class KbqToastService im // (undocumented) get toasts(): ComponentRef[]; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration, [null, null, null, null, null, { optional: true; }]>; + static ɵfac: i0.ɵɵFactoryDeclaration, never>; // (undocumented) static ɵprov: i0.ɵɵInjectableDeclaration>; } diff --git a/tools/public_api_guard/components/toggle.api.md b/tools/public_api_guard/components/toggle.api.md index e760988be..f0ebf4ed9 100644 --- a/tools/public_api_guard/components/toggle.api.md +++ b/tools/public_api_guard/components/toggle.api.md @@ -6,10 +6,8 @@ import { AfterViewInit } from '@angular/core'; import * as _angular_core from '@angular/core'; -import { ChangeDetectorRef } from '@angular/core'; import { ControlValueAccessor } from '@angular/forms'; import { ElementRef } from '@angular/core'; -import { FocusMonitor } from '@angular/cdk/a11y'; import * as i1 from '@angular/cdk/a11y'; import { KbqCheckboxClickAction } from '@koobiq/components/checkbox'; import { KbqCheckedState } from '@koobiq/components/core'; @@ -27,7 +25,7 @@ export class KbqToggleChange { // @public (undocumented) export class KbqToggleComponent extends KbqColorDirective implements AfterViewInit, ControlValueAccessor, OnDestroy { - constructor(focusMonitor: FocusMonitor, changeDetectorRef: ChangeDetectorRef); + constructor(...args: unknown[]); // (undocumented) readonly ariaLabel: _angular_core.InputSignal; // (undocumented) diff --git a/tools/public_api_guard/components/tooltip.api.md b/tools/public_api_guard/components/tooltip.api.md index e79f9054a..d3b72f9be 100644 --- a/tools/public_api_guard/components/tooltip.api.md +++ b/tools/public_api_guard/components/tooltip.api.md @@ -28,11 +28,15 @@ import { Type } from '@angular/core'; import { WritableSignal } from '@angular/core'; // @public (undocumented) -export const KBQ_TOOLTIP_OPEN_TIME: InjectionToken<() => ScrollStrategy>; +export const KBQ_TOOLTIP_OPEN_TIME: InjectionToken<{ + value: number; +}>; // @public export const KBQ_TOOLTIP_OPEN_TIME_PROVIDER: { - provide: InjectionToken<() => ScrollStrategy>; + provide: InjectionToken<{ + value: number; + }>; useValue: { value: number; }; @@ -50,7 +54,7 @@ export const KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER: { // @public (undocumented) export class KbqTooltipComponent extends KbqPopUp { - constructor(openTime: any); + constructor(...args: unknown[]); // (undocumented) elementRef: ElementRef; // (undocumented) @@ -137,7 +141,7 @@ export class KbqTooltipTrigger extends KbqPopUpTrigger impl // (undocumented) protected overlayConfig: OverlayConfig; // (undocumented) - protected parentPopup: KbqParentPopup | null; + protected parentPopup: KbqParentPopup; // (undocumented) readonly placementChange: EventEmitter; relativeToPointer: boolean; diff --git a/tools/public_api_guard/components/tree-select.api.md b/tools/public_api_guard/components/tree-select.api.md index 53778e23a..7ac7b008e 100644 --- a/tools/public_api_guard/components/tree-select.api.md +++ b/tools/public_api_guard/components/tree-select.api.md @@ -6,6 +6,7 @@ import { AfterContentInit } from '@angular/core'; import { AfterViewInit } from '@angular/core'; +import * as _angular_cdk_overlay_module_d from '@angular/cdk/overlay-module.d'; import * as _angular_core from '@angular/core'; import { CanUpdateErrorState } from '@koobiq/components/core'; import { CdkConnectedOverlay } from '@angular/cdk/overlay'; @@ -13,7 +14,6 @@ import { CdkOverlayOrigin } from '@angular/cdk/overlay'; import { ChangeDetectorRef } from '@angular/core'; import { ConnectedPosition } from '@angular/cdk/overlay'; import { ControlValueAccessor } from '@angular/forms'; -import { Directionality } from '@angular/cdk/bidi'; import { DoCheck } from '@angular/core'; import { ElementRef } from '@angular/core'; import { ErrorStateMatcher } from '@koobiq/components/core'; @@ -31,9 +31,7 @@ import { InjectionToken } from '@angular/core'; import { KbqAbstractSelect } from '@koobiq/components/core'; import { KbqCleaner } from '@koobiq/components/form-field'; import { KbqComponentColors } from '@koobiq/components/core'; -import { KbqFormField } from '@koobiq/components/form-field'; import { KbqFormFieldControl } from '@koobiq/components/form-field'; -import { KbqLocaleService } from '@koobiq/components/core'; import { KbqSelectMatcher } from '@koobiq/components/core'; import { KbqSelectSearch } from '@koobiq/components/core'; import { KbqSelectTrigger } from '@koobiq/components/core'; @@ -42,13 +40,11 @@ import { KbqTreeOption } from '@koobiq/components/tree'; import { KbqTreeSelection } from '@koobiq/components/tree'; import { NgControl } from '@angular/forms'; import { NgForm } from '@angular/forms'; -import { NgZone } from '@angular/core'; import { Observable } from 'rxjs'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; import { Provider } from '@angular/core'; import { QueryList } from '@angular/core'; -import { Renderer2 } from '@angular/core'; import { SelectionModel } from '@angular/cdk/collections'; import { Subject } from 'rxjs'; import { TemplateRef } from '@angular/core'; @@ -62,7 +58,7 @@ export const KBQ_TREE_SELECT_OPTIONS: InjectionToken, CanUpdateErrorState { - constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, ngZone: NgZone, renderer: Renderer2, defaultErrorStateMatcher: ErrorStateMatcher, scrollStrategyFactory: any, dir: Directionality, parentForm: NgForm, parentFormGroup: FormGroupDirective, parentFormField: KbqFormField, ngControl: NgControl, localeService?: KbqLocaleService | undefined); + constructor(...args: unknown[]); // (undocumented) get autoSelect(): boolean; set autoSelect(value: boolean); @@ -195,7 +191,7 @@ export class KbqTreeSelect extends KbqAbstractSelect implements AfterContentInit // (undocumented) get required(): boolean; set required(value: boolean); - scrollStrategy: any; + scrollStrategy: _angular_cdk_overlay_module_d.ScrollStrategy; // (undocumented) readonly search: _angular_core.Signal; set searchMinOptionsThreshold(value: 'auto' | number | undefined); @@ -242,7 +238,7 @@ export class KbqTreeSelect extends KbqAbstractSelect implements AfterContentInit // (undocumented) static ɵcmp: _angular_core.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: _angular_core.ɵɵFactoryDeclaration; + static ɵfac: _angular_core.ɵɵFactoryDeclaration; } // @public diff --git a/tools/public_api_guard/components/tree.api.md b/tools/public_api_guard/components/tree.api.md index aaa247b30..a910e9ec5 100644 --- a/tools/public_api_guard/components/tree.api.md +++ b/tools/public_api_guard/components/tree.api.md @@ -7,15 +7,12 @@ import { AfterContentChecked } from '@angular/core'; import { AfterContentInit } from '@angular/core'; import { AfterViewInit } from '@angular/core'; -import { AsyncScheduler } from 'rxjs/internal/scheduler/AsyncScheduler'; import { BehaviorSubject } from 'rxjs'; import { ChangeDetectorRef } from '@angular/core'; -import { Clipboard as Clipboard_2 } from '@angular/cdk/clipboard'; import { CollectionViewer } from '@angular/cdk/collections'; import { ControlValueAccessor } from '@angular/forms'; import { DataSource } from '@angular/cdk/collections'; import { DestroyRef } from '@angular/core'; -import { Directionality } from '@angular/cdk/bidi'; import { ElementRef } from '@angular/core'; import { EventEmitter } from '@angular/core'; import { FocusKeyManager } from '@koobiq/components/core'; @@ -35,12 +32,10 @@ import { KbqPseudoCheckboxState } from '@koobiq/components/core'; import { KbqTitleTextRef } from '@koobiq/components/core'; import { KbqTooltipTrigger } from '@koobiq/components/tooltip'; import { MultipleMode } from '@koobiq/components/core'; -import { NgZone } from '@angular/core'; import { Observable } from 'rxjs'; import { OnDestroy } from '@angular/core'; import { OnInit } from '@angular/core'; import { QueryList } from '@angular/core'; -import { Renderer2 } from '@angular/core'; import { SelectionChange } from '@angular/cdk/collections'; import { SelectionModel } from '@angular/cdk/collections'; import { Subject } from 'rxjs'; @@ -166,7 +161,7 @@ export class KbqTree extends KbqTreeBase { // @public (undocumented) export class KbqTreeBase implements AfterContentChecked, CollectionViewer, OnDestroy, OnInit { - constructor(differs: IterableDiffers, changeDetectorRef: ChangeDetectorRef); + constructor(...args: unknown[]); // (undocumented) protected changeDetectorRef: ChangeDetectorRef; protected dataDiffer: IterableDiffer; @@ -285,7 +280,7 @@ export class KbqTreeNestedDataSource extends DataSource { // @public (undocumented) export class KbqTreeNode implements IFocusableOption, OnDestroy { - constructor(elementRef: ElementRef, tree: KbqTreeBase); + constructor(...args: unknown[]); // (undocumented) get data(): T; set data(value: T); @@ -312,7 +307,7 @@ export class KbqTreeNode implements IFocusableOption, OnDestroy { // @public export class KbqTreeNodeDef { - constructor(template: TemplateRef); + constructor(...args: unknown[]); // (undocumented) readonly data: i0.InputSignal; // (undocumented) @@ -326,7 +321,7 @@ export class KbqTreeNodeDef { // @public (undocumented) export class KbqTreeNodeOutlet { - constructor(viewContainer: ViewContainerRef, changeDetectorRef: ChangeDetectorRef); + constructor(...args: unknown[]); // (undocumented) changeDetectorRef: ChangeDetectorRef; // (undocumented) @@ -348,7 +343,7 @@ export class KbqTreeNodeOutletContext { // @public (undocumented) export class KbqTreeNodePadding implements AfterViewInit { - constructor(treeNode: KbqTreeNode, tree: KbqTreeBase, renderer: Renderer2, element: ElementRef, option: KbqTreeOption, dir: Directionality); + constructor(...args: unknown[]); // (undocumented) iconWidth: number; // (undocumented) @@ -375,12 +370,12 @@ export class KbqTreeNodePadding implements AfterViewInit { // (undocumented) static ɵdir: i0.ɵɵDirectiveDeclaration, "[kbqTreeNodePadding]", ["kbqTreeNodePadding"], { "indent": { "alias": "kbqTreeNodePaddingIndent"; "required": false; }; }, {}, never, never, true, never>; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration, [null, null, null, null, null, { optional: true; }]>; + static ɵfac: i0.ɵɵFactoryDeclaration, never>; } // @public export class KbqTreeNodeToggleBaseDirective { - constructor(tree: KbqTreeBase, treeNode: KbqTreeNode); + constructor(...args: unknown[]); // (undocumented) get disabled(): boolean; set disabled(value: boolean); @@ -419,7 +414,7 @@ export class KbqTreeNodeToggleDirective extends KbqTreeNodeToggleBaseDirectiv // @public (undocumented) export class KbqTreeOption extends KbqTreeNode implements AfterContentInit, KbqTitleTextRef { - constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, ngZone: NgZone, tree: any); + constructor(...args: unknown[]); // (undocumented) readonly actionButton: i0.Signal; // (undocumented) @@ -547,7 +542,7 @@ export const kbqTreeSelectAllValue = "selectAll"; // @public (undocumented) export class KbqTreeSelection extends KbqTreeBase implements ControlValueAccessor, AfterContentInit, AfterViewInit, OnDestroy { - constructor(elementRef: ElementRef, scheduler: AsyncScheduler, differs: IterableDiffers, changeDetectorRef: ChangeDetectorRef, multiple: MultipleMode, clipboard: Clipboard_2); + constructor(...args: unknown[]); // (undocumented) get autoSelect(): boolean; set autoSelect(value: boolean); @@ -659,7 +654,7 @@ export class KbqTreeSelection extends KbqTreeBase implements ControlValueAc // (undocumented) static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } // @public (undocumented) From 72a6a59e5e7f95f6635505a368926d5e3a878a7e Mon Sep 17 00:00:00 2001 From: lskramarov Date: Mon, 8 Jun 2026 14:27:01 +0300 Subject: [PATCH 05/12] refactor: drop inject() migration backwards-compat scaffolding Remove the artifacts left by the --backwards-compatible-constructors run: - the `/** Inserted by Angular inject() migration ... */` comments (152) - the `constructor(...args: unknown[]);` overload signatures (152) - empty `constructor() {}` and super-only `constructor() { super(); }` (78) Subclasses that passed freshly-injected locals to an empty base constructor (KbqFocusableComponent, KbqTreeBase, KbqTreeNode, KbqToastComponent) now call super() with no arguments, since each base injects those dependencies itself; the now-unused locals were removed. Public API constructor signatures change from `(...args: unknown[])` to the real `()`. Builds, public API guard and TypeScript compilation are green. --- .../adapter/date-adapter.ts | 3 -- .../adapter/moment-date-adapter.ts | 3 -- packages/components-dev/all/module.ts | 3 -- .../components-dev/date-formatter/module.ts | 3 -- packages/components-dev/datepicker/module.ts | 3 -- packages/components-dev/input/module.ts | 3 -- packages/components-dev/list/module.ts | 5 --- packages/components-dev/locale/module.ts | 3 -- packages/components-dev/modal/module.ts | 13 ------ packages/components-dev/navbar/module.ts | 5 --- packages/components-dev/sidepanel/module.ts | 7 --- packages/components-dev/timepicker/module.ts | 3 -- packages/components-dev/toast/module.ts | 23 +--------- packages/components-dev/validation/module.ts | 3 -- packages/components-dev/z-index/module.ts | 21 +-------- .../autocomplete-origin.directive.ts | 5 --- .../autocomplete-trigger.directive.ts | 3 -- .../autocomplete/autocomplete.component.ts | 3 -- packages/components/badge/badge.component.ts | 3 -- .../button-toggle/button-toggle.component.ts | 10 ----- .../components/button/button.component.ts | 6 --- packages/components/checkbox/checkbox.ts | 3 -- .../core/formatters/date/formatter.ts | 2 - .../core/formatters/number/formatter.ts | 9 ---- .../components/core/forms/forms.directive.ts | 5 --- .../components/core/locales/locale-service.ts | 3 -- packages/components/core/option/option.ts | 7 --- packages/components/core/select/common.ts | 3 -- .../datepicker/calendar-header.component.ts | 3 -- .../datepicker/calendar-header.spec.ts | 5 --- .../datepicker/calendar.component.ts | 3 -- .../components/datepicker/calendar.spec.ts | 15 ------- .../datepicker/datepicker-input.directive.ts | 3 -- .../datepicker/datepicker.component.ts | 8 ---- .../components/datepicker/datepicker.spec.ts | 5 --- .../datepicker/month-view.component.ts | 3 -- .../dropdown/dropdown-content.directive.ts | 5 --- .../dropdown/dropdown-item.component.ts | 5 --- .../dropdown/dropdown-trigger.directive.ts | 3 -- .../components/dropdown/dropdown.component.ts | 5 --- .../empty-state/empty-state.component.ts | 4 -- .../file-upload/file-upload.spec.ts | 45 ------------------- packages/components/form-field/form-field.ts | 3 -- .../components/form-field/password-hint.ts | 3 -- .../components/input/input-number.spec.ts | 13 ------ packages/components/input/input-number.ts | 3 -- packages/components/input/input-password.ts | 3 -- packages/components/input/input.ts | 3 -- packages/components/link/link.component.ts | 3 -- .../list/list-selection.component.ts | 8 ---- packages/components/list/list.component.ts | 5 --- .../loader-overlay.component.ts | 5 --- .../components/markdown/markdown.component.ts | 3 -- .../components/modal/modal-control.service.ts | 5 --- packages/components/modal/modal.component.ts | 7 --- packages/components/modal/modal.directive.ts | 5 --- packages/components/modal/modal.service.ts | 5 --- packages/components/modal/modal.spec.ts | 20 --------- .../navbar/navbar-item.component.ts | 8 ---- .../components/navbar/navbar.component.ts | 10 +---- .../navbar/vertical-navbar.component.ts | 10 +---- .../popover/popover-confirm.component.ts | 3 -- packages/components/popover/popover.spec.ts | 4 -- packages/components/radio/radio.component.ts | 8 ---- .../scrollbar/scrollbar.component.ts | 5 --- .../scrollbar/scrollbar.directive.ts | 3 -- .../select/select.component.spec.ts | 8 ---- .../components/select/select.component.ts | 3 -- .../components/sidebar/sidebar.component.ts | 3 -- .../sidepanel-container.component.ts | 7 --- .../sidepanel/sidepanel-directives.ts | 5 --- .../components/sidepanel/sidepanel.service.ts | 5 --- .../components/sidepanel/sidepanel.spec.ts | 10 ----- .../components/splitter/splitter.component.ts | 20 --------- .../components/tabs/tab-body.component.ts | 6 --- packages/components/tabs/tab-body.spec.ts | 5 --- .../components/tabs/tab-content.directive.ts | 5 --- .../components/tabs/tab-group.component.ts | 3 -- .../tabs/tab-label-wrapper.directive.ts | 5 --- packages/components/tabs/tab.component.ts | 5 --- packages/components/tags/tag-input.ts | 3 -- .../components/tags/tag-list.component.ts | 3 -- packages/components/tags/tag.component.ts | 8 ---- .../components/textarea/textarea.component.ts | 3 -- .../timepicker/timepicker.directive.ts | 3 -- .../components/timepicker/timepicker.spec.ts | 8 ---- packages/components/title/title.directive.ts | 7 --- .../toast/toast-container.component.ts | 3 -- packages/components/toast/toast.component.ts | 3 -- packages/components/toast/toast.service.ts | 3 -- packages/components/toast/toast.spec.ts | 4 -- .../components/toggle/toggle.component.ts | 3 -- .../components/tooltip/tooltip.component.ts | 7 --- .../tree-select/tree-select.component.ts | 3 -- packages/components/tree/node.ts | 4 -- packages/components/tree/outlet.ts | 5 --- packages/components/tree/padding.directive.ts | 3 -- packages/components/tree/toggle.ts | 3 -- packages/components/tree/tree-base.ts | 8 ---- .../components/tree/tree-option.component.ts | 6 +-- .../tree/tree-selection.component.ts | 9 +--- .../accordion-in-panel-example.ts | 5 --- .../checkbox-indeterminate-example.ts | 5 --- .../datepicker-inactive-example.ts | 3 -- .../datepicker-minimax-example.ts | 5 --- .../datepicker-range-example.ts | 5 --- .../dropdown-recursive-template-example.ts | 5 --- .../sidepanel-normal-mode-example.ts | 4 -- .../sidepanel-overview-example.ts | 4 -- .../sidepanel-sizes-example.ts | 4 -- .../timepicker-overview-example.ts | 3 -- .../timepicker-variations-example.ts | 3 -- .../tree-select-lazyload-example.ts | 3 -- .../tree-lazyload/tree-lazyload-example.ts | 3 -- .../components/autocomplete.api.md | 5 +-- .../public_api_guard/components/badge.api.md | 2 +- .../components/button-toggle.api.md | 2 - .../public_api_guard/components/button.api.md | 4 +- .../components/checkbox.api.md | 2 +- tools/public_api_guard/components/core.api.md | 14 +++--- .../components/datepicker.api.md | 11 +++-- .../components/dropdown.api.md | 5 +-- .../components/empty-state.api.md | 1 - .../components/form-field.api.md | 4 +- .../public_api_guard/components/input.api.md | 6 +-- tools/public_api_guard/components/link.api.md | 2 +- tools/public_api_guard/components/list.api.md | 4 +- .../components/loader-overlay.api.md | 1 - .../components/markdown.api.md | 2 +- .../public_api_guard/components/modal.api.md | 3 -- .../public_api_guard/components/navbar.api.md | 8 ++-- .../components/popover.api.md | 2 +- .../public_api_guard/components/radio.api.md | 3 +- .../components/scrollbar.api.md | 3 +- .../public_api_guard/components/select.api.md | 2 +- .../components/sidebar.api.md | 2 +- .../components/sidepanel.api.md | 3 -- .../components/splitter.api.md | 4 -- tools/public_api_guard/components/tabs.api.md | 9 ++-- tools/public_api_guard/components/tags.api.md | 7 ++- .../components/textarea.api.md | 2 +- .../components/timepicker.api.md | 2 +- .../public_api_guard/components/title.api.md | 1 - .../public_api_guard/components/toast.api.md | 6 +-- .../public_api_guard/components/toggle.api.md | 2 +- .../components/tooltip.api.md | 1 - .../components/tree-select.api.md | 2 +- tools/public_api_guard/components/tree.api.md | 13 +++--- 148 files changed, 61 insertions(+), 740 deletions(-) diff --git a/packages/angular-luxon-adapter/adapter/date-adapter.ts b/packages/angular-luxon-adapter/adapter/date-adapter.ts index 3b59a3744..ce53a7945 100644 --- a/packages/angular-luxon-adapter/adapter/date-adapter.ts +++ b/packages/angular-luxon-adapter/adapter/date-adapter.ts @@ -33,9 +33,6 @@ export class LuxonDateAdapter extends BaseLuxonDateAdapter { private _localeChanges = new BehaviorSubject(KBQ_DEFAULT_LOCALE_ID); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const dateLocale = inject(KBQ_DATE_LOCALE); const options = diff --git a/packages/angular-moment-adapter/adapter/moment-date-adapter.ts b/packages/angular-moment-adapter/adapter/moment-date-adapter.ts index c4f7e46af..91ad2a4f4 100644 --- a/packages/angular-moment-adapter/adapter/moment-date-adapter.ts +++ b/packages/angular-moment-adapter/adapter/moment-date-adapter.ts @@ -27,9 +27,6 @@ export function KBQ_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY(): IKbqMomentDateAdapter export class MomentDateAdapter extends BaseMomentDateAdapter { protected readonly options?: IKbqMomentDateAdapterOptions; private localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const dateLocale = inject(KBQ_DATE_LOCALE, { optional: true })!; const options = diff --git a/packages/components-dev/all/module.ts b/packages/components-dev/all/module.ts index b61a0439e..4fed84fcf 100644 --- a/packages/components-dev/all/module.ts +++ b/packages/components-dev/all/module.ts @@ -164,9 +164,6 @@ export class DevApp implements OnDestroy { dataSource: KbqTreeFlatDataSource; treeFlattener: KbqTreeFlattener; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { setInterval(() => (this.percent = (this.percent + STEP) % (MAX_PERCENT + STEP)), INTERVAL); diff --git a/packages/components-dev/date-formatter/module.ts b/packages/components-dev/date-formatter/module.ts index 151f2c314..16987785a 100644 --- a/packages/components-dev/date-formatter/module.ts +++ b/packages/components-dev/date-formatter/module.ts @@ -334,9 +334,6 @@ export class DevApp { } }; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.localeService.changes.pipe(distinctUntilChanged(), delay(0)).subscribe(this.onLocaleChange); } diff --git a/packages/components-dev/datepicker/module.ts b/packages/components-dev/datepicker/module.ts index 5c90e83cd..9fd2d1f25 100644 --- a/packages/components-dev/datepicker/module.ts +++ b/packages/components-dev/datepicker/module.ts @@ -68,9 +68,6 @@ export class DevApp implements AfterViewInit { readonly datepicker = viewChild.required(KbqDatepicker); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.formControlValue = new UntypedFormControl(this.adapter.createDateTime(2021, 8, 11, 12, 0, 0, 0)); this.formControlValue.valueChanges.subscribe((value) => { diff --git a/packages/components-dev/input/module.ts b/packages/components-dev/input/module.ts index d4eba4519..ff39a308e 100644 --- a/packages/components-dev/input/module.ts +++ b/packages/components-dev/input/module.ts @@ -98,9 +98,6 @@ export class DevApp implements AfterViewInit { readonly passwordHints = viewChildren(KbqPasswordHint); readonly formField = viewChild.required('formField'); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.locales = Object.keys(this.localeService.locales).filter((key) => key !== 'items'); } diff --git a/packages/components-dev/list/module.ts b/packages/components-dev/list/module.ts index 3e7fd4486..f322a0b1c 100644 --- a/packages/components-dev/list/module.ts +++ b/packages/components-dev/list/module.ts @@ -81,11 +81,6 @@ export class DevApp { }) ); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - onSelectionChange($event: KbqListSelectionChange) { console.log(`onSelectionChange: ${$event.option.value}`); } diff --git a/packages/components-dev/locale/module.ts b/packages/components-dev/locale/module.ts index be3d2bd10..acca2a3b4 100644 --- a/packages/components-dev/locale/module.ts +++ b/packages/components-dev/locale/module.ts @@ -37,9 +37,6 @@ export class DevApp { selectedLanguage; languages; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.languages = this.localeService.locales.items.map((item) => ({ ...item, selected: false })); diff --git a/packages/components-dev/modal/module.ts b/packages/components-dev/modal/module.ts index 59f864879..285d99b22 100644 --- a/packages/components-dev/modal/module.ts +++ b/packages/components-dev/modal/module.ts @@ -87,9 +87,6 @@ export class DevModalCustomComponent { componentColors = KbqComponentColors; data = inject<{ title?: string; subtitle?: string; myData?: string }>(KBQ_MODAL_DATA, { optional: true })!; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { console.log('data: ', this.data); } @@ -134,11 +131,6 @@ export class DevModalFullCustomComponent { readonly title = input(undefined!); readonly subtitle = input(undefined!); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - destroyModal() { this.modal.destroy({ data: 'this the result data' }); } @@ -170,11 +162,6 @@ export class DevApp { isLoading = false; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - showConfirm() { this.modalService.success({ kbqSize: ModalSize.Small, diff --git a/packages/components-dev/navbar/module.ts b/packages/components-dev/navbar/module.ts index c284a06c2..9d45b0716 100644 --- a/packages/components-dev/navbar/module.ts +++ b/packages/components-dev/navbar/module.ts @@ -80,11 +80,6 @@ export class DevApp { permission$ = timer(500).pipe(map(() => true)); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - collapsedNavbarWidthChange() { this.navbar().updateExpandedStateForItems(); } diff --git a/packages/components-dev/sidepanel/module.ts b/packages/components-dev/sidepanel/module.ts index 1bf71a6e7..f0f550dc8 100644 --- a/packages/components-dev/sidepanel/module.ts +++ b/packages/components-dev/sidepanel/module.ts @@ -91,9 +91,6 @@ export class DevSidepanelComponent { array = new Array(60); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const data = this.data; @@ -131,10 +128,6 @@ export class DevApp { array = new Array(40); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() {} - openComponentSidepanel() { this.sidepanelService.open(DevSidepanelComponent, { hasBackdrop: this.modalState, diff --git a/packages/components-dev/timepicker/module.ts b/packages/components-dev/timepicker/module.ts index aeb84e49e..c4f8d133d 100644 --- a/packages/components-dev/timepicker/module.ts +++ b/packages/components-dev/timepicker/module.ts @@ -69,9 +69,6 @@ export class DevApp { testForm: UntypedFormGroup; selectedLanguage!: { id: string; name: string }; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.minDate = this.adapter.createDateTime(2020, 0, 6, 12, 0, 10, 0); this.maxDate = this.adapter.createDateTime(2020, 0, 6, 13, 0, 10, 0); diff --git a/packages/components-dev/toast/module.ts b/packages/components-dev/toast/module.ts index d02a1148f..06bbc8bf9 100644 --- a/packages/components-dev/toast/module.ts +++ b/packages/components-dev/toast/module.ts @@ -1,13 +1,4 @@ -import { FocusMonitor } from '@angular/cdk/a11y'; -import { - ChangeDetectionStrategy, - Component, - ElementRef, - TemplateRef, - ViewEncapsulation, - inject, - viewChild -} from '@angular/core'; +import { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, inject, viewChild } from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; import { ThemePalette } from '@koobiq/components/core'; import { KbqDropdownModule } from '@koobiq/components/dropdown'; @@ -77,16 +68,11 @@ export class DevToastComponent extends KbqToastComponent { readonly data: KbqToastData; readonly service: KbqToastService; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const data = inject(KbqToastData); const service = inject(KbqToastService); - const elementRef = inject>(ElementRef); - const focusMonitor = inject(FocusMonitor); - super(data, service, elementRef, focusMonitor); + super(); this.data = data; this.service = service; @@ -129,11 +115,6 @@ export class DevApp { array = new Array(40); readonly template = viewChild.required>('sipanelTemplate'); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - openTemplateSidepanel() { this.sidepanelService.open(this.template(), { position: this.position, diff --git a/packages/components-dev/validation/module.ts b/packages/components-dev/validation/module.ts index e43f2b1ba..53fb716ec 100644 --- a/packages/components-dev/validation/module.ts +++ b/packages/components-dev/validation/module.ts @@ -131,9 +131,6 @@ export class DevApp { formControlTags: UntypedFormControl; formControlTagInputFormControl: UntypedFormControl; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren); diff --git a/packages/components-dev/z-index/module.ts b/packages/components-dev/z-index/module.ts index 1c9d950c0..fda17fa85 100644 --- a/packages/components-dev/z-index/module.ts +++ b/packages/components-dev/z-index/module.ts @@ -1,16 +1,7 @@ -import { FocusMonitor } from '@angular/cdk/a11y'; import { OverlayContainer } from '@angular/cdk/overlay'; import { CdkScrollableModule } from '@angular/cdk/scrolling'; import { NgTemplateOutlet } from '@angular/common'; -import { - ChangeDetectionStrategy, - Component, - ElementRef, - TemplateRef, - ViewEncapsulation, - inject, - viewChild -} from '@angular/core'; +import { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, inject, viewChild } from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; import { KbqOptionModule, PopUpPlacements, ThemePalette } from '@koobiq/components/core'; import { KbqDropdownModule } from '@koobiq/components/dropdown'; @@ -39,16 +30,11 @@ export class DevToastComponent extends KbqToastComponent { readonly data: KbqToastData; readonly service: KbqToastService; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const data = inject(KbqToastData); const service = inject(KbqToastService); - const elementRef = inject>(ElementRef); - const focusMonitor = inject(FocusMonitor); - super(data, service, elementRef, focusMonitor); + super(); this.data = data; this.service = service; @@ -97,9 +83,6 @@ export class DevApp { array = new Array(40); readonly template = viewChild.required>('sipanelTemplate'); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const overlayRef = this.overlayRef; diff --git a/packages/components/autocomplete/autocomplete-origin.directive.ts b/packages/components/autocomplete/autocomplete-origin.directive.ts index 4d4e363da..4a1089a76 100644 --- a/packages/components/autocomplete/autocomplete-origin.directive.ts +++ b/packages/components/autocomplete/autocomplete-origin.directive.ts @@ -10,9 +10,4 @@ import { Directive, ElementRef, inject } from '@angular/core'; }) export class KbqAutocompleteOrigin { elementRef = inject>(ElementRef); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } diff --git a/packages/components/autocomplete/autocomplete-trigger.directive.ts b/packages/components/autocomplete/autocomplete-trigger.directive.ts index b31b4eecf..ef753d2e7 100644 --- a/packages/components/autocomplete/autocomplete-trigger.directive.ts +++ b/packages/components/autocomplete/autocomplete-trigger.directive.ts @@ -227,9 +227,6 @@ export class KbqAutocompleteTrigger private readonly closeKeyEventStream = new Subject(); private readonly window = inject(KBQ_WINDOW); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const zone = this.zone; const scrollStrategy = inject(KBQ_AUTOCOMPLETE_SCROLL_STRATEGY); diff --git a/packages/components/autocomplete/autocomplete.component.ts b/packages/components/autocomplete/autocomplete.component.ts index ec5de4e11..a35f8aa24 100644 --- a/packages/components/autocomplete/autocomplete.component.ts +++ b/packages/components/autocomplete/autocomplete.component.ts @@ -203,9 +203,6 @@ export class KbqAutocomplete implements AfterContentInit { private _openOnFocus: boolean = true; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const defaults = inject(KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS); diff --git a/packages/components/badge/badge.component.ts b/packages/components/badge/badge.component.ts index da778b4f9..8b15bbae5 100644 --- a/packages/components/badge/badge.component.ts +++ b/packages/components/badge/badge.component.ts @@ -59,9 +59,6 @@ export class KbqBadgeCssStyler implements AfterContentInit { isIconButton: boolean = false; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const elementRef = inject>(ElementRef); diff --git a/packages/components/button-toggle/button-toggle.component.ts b/packages/components/button-toggle/button-toggle.component.ts index ba10c5f83..fb27e1630 100644 --- a/packages/components/button-toggle/button-toggle.component.ts +++ b/packages/components/button-toggle/button-toggle.component.ts @@ -158,11 +158,6 @@ export class KbqButtonToggleGroup implements ControlValueAccessor, OnInit, After */ private rawValue: any; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - /** * The method to be called in order to update ngModel. * Now `ngModel` binding is not supported in multiple selection mode. @@ -397,11 +392,6 @@ export class KbqButtonToggle implements OnInit, AfterContentInit, AfterViewInit, private _checked = false; private _disabled: boolean = false; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngOnInit() { this.isSingleSelector = this.buttonToggleGroup && !this.buttonToggleGroup.multiple; this.type = this.isSingleSelector ? 'radio' : 'checkbox'; diff --git a/packages/components/button/button.component.ts b/packages/components/button/button.component.ts index 487f2ea92..9c092cccf 100644 --- a/packages/components/button/button.component.ts +++ b/packages/components/button/button.component.ts @@ -59,9 +59,6 @@ export class KbqButtonCssStyler implements AfterContentInit { isIconButton: boolean = false; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const elementRef = inject>(ElementRef); @@ -196,9 +193,6 @@ export class KbqButton extends KbqColorDirective implements OnDestroy, AfterView private _tabIndex = 0; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { super(); diff --git a/packages/components/checkbox/checkbox.ts b/packages/components/checkbox/checkbox.ts index cbea3a058..99873cf18 100644 --- a/packages/components/checkbox/checkbox.ts +++ b/packages/components/checkbox/checkbox.ts @@ -216,9 +216,6 @@ export class KbqCheckbox extends KbqColorDirective implements ControlValueAccess private currentCheckState: TransitionCheckState = TransitionCheckState.Init; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { super(); diff --git a/packages/components/core/formatters/date/formatter.ts b/packages/components/core/formatters/date/formatter.ts index 9bab21cdb..0a1d8503c 100644 --- a/packages/components/core/formatters/date/formatter.ts +++ b/packages/components/core/formatters/date/formatter.ts @@ -10,8 +10,6 @@ export class DateFormatter extends BaseDateFormatter { override readonly adapter: DateAdapter; protected localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); constructor() { const adapter = inject>(KbqDateAdapter); const locale = inject(KBQ_DATE_LOCALE); diff --git a/packages/components/core/formatters/number/formatter.ts b/packages/components/core/formatters/number/formatter.ts index 2ee660bea..acaa5e9e9 100644 --- a/packages/components/core/formatters/number/formatter.ts +++ b/packages/components/core/formatters/number/formatter.ts @@ -152,9 +152,6 @@ export class KbqDecimalPipe implements KbqNumericPipe, PipeTransform { private id = inject(KBQ_LOCALE_ID, { optional: true })!; private localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; private readonly options = inject(KBQ_NUMBER_FORMATTER_OPTIONS, { optional: true })!; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.options = this.options || KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS; @@ -228,9 +225,6 @@ export class KbqTableNumberPipe implements KbqNumericPipe, PipeTransform { private id = inject(KBQ_LOCALE_ID, { optional: true })!; private localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; private readonly options = inject(KBQ_NUMBER_FORMATTER_OPTIONS, { optional: true })!; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.options = this.options || KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS; @@ -297,9 +291,6 @@ export class KbqRoundDecimalPipe implements PipeTransform { private localeService = inject(KBQ_LOCALE_SERVICE, { optional: true })!; roundingOptions: RoundDecimalOptions; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.localeService?.changes.subscribe((newId: string) => (this.id = newId)); } diff --git a/packages/components/core/forms/forms.directive.ts b/packages/components/core/forms/forms.directive.ts index 6d78351c9..113bf16a7 100644 --- a/packages/components/core/forms/forms.directive.ts +++ b/packages/components/core/forms/forms.directive.ts @@ -19,11 +19,6 @@ export class KbqFormElement implements AfterContentInit { readonly elements = contentChildren(KbqFormElement); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngAfterContentInit(): void { const classList = this.element.nativeElement.classList; diff --git a/packages/components/core/locales/locale-service.ts b/packages/components/core/locales/locale-service.ts index e1db975f4..e7a0d67e7 100644 --- a/packages/components/core/locales/locale-service.ts +++ b/packages/components/core/locales/locale-service.ts @@ -77,9 +77,6 @@ export class KbqLocaleService { private readonly langAttrName = inject(KBQ_LOCALE_SERVICE_LANG_ATTR_NAME); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const id = inject(KBQ_LOCALE_ID, { optional: true }); const localeData = inject(KBQ_LOCALE_DATA, { optional: true }); diff --git a/packages/components/core/option/option.ts b/packages/components/core/option/option.ts index 74c53b505..9081c6a7a 100644 --- a/packages/components/core/option/option.ts +++ b/packages/components/core/option/option.ts @@ -267,13 +267,6 @@ export class KbqOption extends KbqOptionBase implements AfterViewChecked, OnDest */ private isFocusedByMouse: boolean = false; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() { - super(); - } - ngAfterViewChecked() { // Since parent components could be using the option's label to display the selected values // (e.g. `kbq-select`) and they don't have a way of knowing if the option's label has changed diff --git a/packages/components/core/select/common.ts b/packages/components/core/select/common.ts index 21528a3c6..faeff2f4c 100644 --- a/packages/components/core/select/common.ts +++ b/packages/components/core/select/common.ts @@ -52,9 +52,6 @@ export class KbqSelectSearch implements AfterContentInit, OnDestroy { private searchChangesSubscription: Subscription = new Subscription(); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.formField.canCleanerClearByEsc = false; this.formField.inOverlay.set(true); diff --git a/packages/components/datepicker/calendar-header.component.ts b/packages/components/datepicker/calendar-header.component.ts index 31ed02408..6b3e33e8a 100644 --- a/packages/components/datepicker/calendar-header.component.ts +++ b/packages/components/datepicker/calendar-header.component.ts @@ -124,9 +124,6 @@ export class KbqCalendarHeader implements AfterContentInit { readonly monthSelected = output(); readonly yearSelected = output(); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.monthNames = this.adapter.getMonthNames('long').map((name, i) => { return { name, nameShort: this.adapter.getMonthNames('short')[i], value: i, disabled: false }; diff --git a/packages/components/datepicker/calendar-header.spec.ts b/packages/components/datepicker/calendar-header.spec.ts index 6add41d48..707bf3b8e 100644 --- a/packages/components/datepicker/calendar-header.spec.ts +++ b/packages/components/datepicker/calendar-header.spec.ts @@ -87,9 +87,4 @@ class StandardCalendar { selectedYear: DateTime; selectedMonth: DateTime; startDate = this.adapter.createDate(2017, 0, 31); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } diff --git a/packages/components/datepicker/calendar.component.ts b/packages/components/datepicker/calendar.component.ts index 8e0adc39f..589ece41d 100644 --- a/packages/components/datepicker/calendar.component.ts +++ b/packages/components/datepicker/calendar.component.ts @@ -163,9 +163,6 @@ export class KbqCalendar implements AfterContentInit, OnDestroy, OnChanges { /** Subscription to value changes in the associated input element. */ private inputSubscription = Subscription.EMPTY; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const intl = inject(KbqDatepickerIntl); const changeDetectorRef = this.changeDetectorRef; diff --git a/packages/components/datepicker/calendar.spec.ts b/packages/components/datepicker/calendar.spec.ts index 0e37fdd4c..b14ce80f3 100644 --- a/packages/components/datepicker/calendar.spec.ts +++ b/packages/components/datepicker/calendar.spec.ts @@ -348,11 +348,6 @@ class StandardCalendar { selectedYear: DateTime; selectedMonth: DateTime; startDate = this.adapter.createDate(2017, 0, 31); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Component({ @@ -367,11 +362,6 @@ class CalendarWithMinMax { startAt: DateTime; minDate = this.adapter.createDate(2016, 0, 1); maxDate = this.adapter.createDate(2018, 0, 1); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Component({ @@ -386,11 +376,6 @@ class CalendarWithDateFilter { selected: DateTime; startDate = this.adapter.createDate(2017, 0, 1); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - dateFilter = (date: DateTime): boolean => !(this.adapter.getDate(date) % 2) && this.adapter.getMonth(date) !== 10; } diff --git a/packages/components/datepicker/datepicker-input.directive.ts b/packages/components/datepicker/datepicker-input.directive.ts index d84704228..46db55fa3 100644 --- a/packages/components/datepicker/datepicker-input.directive.ts +++ b/packages/components/datepicker/datepicker-input.directive.ts @@ -556,9 +556,6 @@ export class KbqDatepickerInput private errorStateTracker: KbqErrorStateTracker; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.validator = Validators.compose([ this.parseValidator, diff --git a/packages/components/datepicker/datepicker.component.ts b/packages/components/datepicker/datepicker.component.ts index 34b9f96ef..14e8fbaab 100644 --- a/packages/components/datepicker/datepicker.component.ts +++ b/packages/components/datepicker/datepicker.component.ts @@ -95,11 +95,6 @@ export class KbqDatepickerContent implements OnDestroy, AfterViewInit { private subscriptions = new Subscription(); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngAfterViewInit() { this.subscriptions.add( this.datepicker.stateChanges.subscribe(() => { @@ -295,9 +290,6 @@ export class KbqDatepicker implements OnDestroy { private closeSubscription = Subscription.EMPTY; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const scrollStrategy = inject(KBQ_DATEPICKER_SCROLL_STRATEGY); diff --git a/packages/components/datepicker/datepicker.spec.ts b/packages/components/datepicker/datepicker.spec.ts index a34ae7cad..8d7a2df2c 100644 --- a/packages/components/datepicker/datepicker.spec.ts +++ b/packages/components/datepicker/datepicker.spec.ts @@ -1575,11 +1575,6 @@ class DatepickerWithNgModel { selected: DateTime | null = null; readonly datepicker = viewChild.required>('d'); readonly datepickerInput = viewChild.required(KbqDatepickerInput); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Component({ diff --git a/packages/components/datepicker/month-view.component.ts b/packages/components/datepicker/month-view.component.ts index 5318c9a13..9e8773949 100644 --- a/packages/components/datepicker/month-view.component.ts +++ b/packages/components/datepicker/month-view.component.ts @@ -113,9 +113,6 @@ export class KbqMonthView implements AfterContentInit { /** The names of the weekdays. */ weekdays: { long: string; narrow: string }[]; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { if (!this.adapter) { throw createMissingDateImplError('DateAdapter'); diff --git a/packages/components/dropdown/dropdown-content.directive.ts b/packages/components/dropdown/dropdown-content.directive.ts index 059183fb1..929e1c870 100644 --- a/packages/components/dropdown/dropdown-content.directive.ts +++ b/packages/components/dropdown/dropdown-content.directive.ts @@ -22,11 +22,6 @@ export class KbqDropdownContent implements OnDestroy { private portal: TemplatePortal; private outlet: DomPortalOutlet; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - /** * Attaches the content with a particular context. * @docs-private diff --git a/packages/components/dropdown/dropdown-item.component.ts b/packages/components/dropdown/dropdown-item.component.ts index 50e64d044..75550e2ad 100644 --- a/packages/components/dropdown/dropdown-item.component.ts +++ b/packages/components/dropdown/dropdown-item.component.ts @@ -85,11 +85,6 @@ export class KbqDropdownItem implements KbqTitleTextRef, IFocusableOption, After /** @docs-private */ protected readonly componentColors = KbqComponentColors; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngAfterViewInit() { if (this.focusMonitor) { // Start monitoring the element so it gets the appropriate focused classes. We want diff --git a/packages/components/dropdown/dropdown-trigger.directive.ts b/packages/components/dropdown/dropdown-trigger.directive.ts index 4ac9ccf3d..636ee59b1 100644 --- a/packages/components/dropdown/dropdown-trigger.directive.ts +++ b/packages/components/dropdown/dropdown-trigger.directive.ts @@ -236,9 +236,6 @@ export class KbqDropdownTrigger implements AfterContentInit, OnDestroy { private classAddedToOverlayContainer: boolean = false; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const elementRef = this.elementRef; const dropdownItemInstance = this.dropdownItemInstance; diff --git a/packages/components/dropdown/dropdown.component.ts b/packages/components/dropdown/dropdown.component.ts index f5802349e..8c4d866cc 100644 --- a/packages/components/dropdown/dropdown.component.ts +++ b/packages/components/dropdown/dropdown.component.ts @@ -230,11 +230,6 @@ export class KbqDropdown implements AfterContentInit, KbqDropdownPanel, OnInit, /** Subscription to tab events on the dropdown panel */ private tabSubscription = Subscription.EMPTY; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngOnInit() { this.setPositionClasses(); } diff --git a/packages/components/empty-state/empty-state.component.ts b/packages/components/empty-state/empty-state.component.ts index 3d8b4c5d1..39ac2eefc 100644 --- a/packages/components/empty-state/empty-state.component.ts +++ b/packages/components/empty-state/empty-state.component.ts @@ -20,10 +20,6 @@ import { KbqIconItem } from '@koobiq/components/icon'; }) export class KbqEmptyStateIcon { private icon = inject(KbqIconItem, { optional: true })!; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} setErrorColor() { if (!this.icon) { diff --git a/packages/components/file-upload/file-upload.spec.ts b/packages/components/file-upload/file-upload.spec.ts index 0d4e2d8ec..6c3a05fa4 100644 --- a/packages/components/file-upload/file-upload.spec.ts +++ b/packages/components/file-upload/file-upload.spec.ts @@ -1542,11 +1542,6 @@ class BasicSingleFileUpload { localeConfig = signal>({}); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - onChange = jest.fn().mockImplementation((file: KbqFileItem) => { this.file = file; }); @@ -1574,11 +1569,6 @@ class ControlValueAccessorSingleFileUpload { accept: string[] = []; control = new FormControl(); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - onChange = jest.fn().mockImplementation((file: KbqFileItem) => { this.file = file; }); @@ -1610,11 +1600,6 @@ class BasicMultipleFileUpload { localeConfig = signal>({}); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - onChange = jest.fn().mockImplementation((files: KbqFileItem[]) => { this.files = files; }); @@ -1642,11 +1627,6 @@ class ControlValueAccessorMultipleFileUpload { accept: string[] = []; control = new FormControl(); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - onChange = jest.fn().mockImplementation((files: KbqFileItem[]) => { this.files = files; }); @@ -1666,11 +1646,6 @@ class SingleFileUploadWithAsyncValidator { readonly control = new FormControl(null, { asyncValidators: [getAsyncValidator()] }); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Component({ @@ -1687,11 +1662,6 @@ class SingleFileUploadWithInvalidAsyncValidator { readonly control = new FormControl(null, { asyncValidators: [getAsyncValidator(false)] }); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Component({ @@ -1708,11 +1678,6 @@ class SingleFileUploadWithFileReaderValidator { readonly control = new FormControl(null, { asyncValidators: [fileContentLinesValidator(MAX_FILE_LINES_FOR_TEST)] }); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Component({ @@ -1729,11 +1694,6 @@ class MultipleFileUploadWithAsyncValidator { readonly control = new FormControl(null, { asyncValidators: [getAsyncValidator()] }); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Component({ @@ -1750,11 +1710,6 @@ class MultipleFileUploadWithInvalidAsyncValidator { readonly control = new FormControl(null, { asyncValidators: [getAsyncValidator(false)] }); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } // Test host component diff --git a/packages/components/form-field/form-field.ts b/packages/components/form-field/form-field.ts index 13a66b0be..174160842 100644 --- a/packages/components/form-field/form-field.ts +++ b/packages/components/form-field/form-field.ts @@ -537,9 +537,6 @@ export class KbqTrim { private original: (fn: any) => void; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { if (this.noTrim || !this.ngControl?.valueAccessor) { return; diff --git a/packages/components/form-field/password-hint.ts b/packages/components/form-field/password-hint.ts index cffd717d6..3fc76d199 100644 --- a/packages/components/form-field/password-hint.ts +++ b/packages/components/form-field/password-hint.ts @@ -108,9 +108,6 @@ export class KbqPasswordHint extends KbqHint implements AfterContentInit { private lastControlValue: string; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { super(); this.color = KbqComponentColors.ContrastFade; diff --git a/packages/components/input/input-number.spec.ts b/packages/components/input/input-number.spec.ts index 03dc8a779..f7d868a38 100644 --- a/packages/components/input/input-number.spec.ts +++ b/packages/components/input/input-number.spec.ts @@ -134,9 +134,6 @@ class KbqNumberInputWithFormControlName { reactiveForm: UntypedFormGroup; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.reactiveForm = this.formBuilder.group({ reactiveInputValue: new UntypedFormControl(10) @@ -227,11 +224,6 @@ class KbqNumberInputWithMask { withMask = true; readonly inputNumberDirective = viewChild.required(KbqNumberInput); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Component({ @@ -254,11 +246,6 @@ class KbqNumberInputWithInteger { bigStep: number = 5; readonly inputNumberDirective = viewChild.required(KbqNumberInput); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } describe('KbqNumberInput', () => { diff --git a/packages/components/input/input-number.ts b/packages/components/input/input-number.ts index 54a49ef22..4366faa3a 100644 --- a/packages/components/input/input-number.ts +++ b/packages/components/input/input-number.ts @@ -232,9 +232,6 @@ export class KbqNumberInput implements KbqFormFieldControl, ControlValueAcc private valueFromPaste: number | null; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const step = inject(new HostAttributeToken('step'), { optional: true })!; const bigStep = inject(new HostAttributeToken('big-step'), { optional: true })!; diff --git a/packages/components/input/input-password.ts b/packages/components/input/input-password.ts index 1310a6960..2f0f4dcae 100644 --- a/packages/components/input/input-password.ts +++ b/packages/components/input/input-password.ts @@ -177,9 +177,6 @@ export class KbqInputPassword private _inputValueAccessor: { value: any }; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const inputValueAccessor = inject(KBQ_INPUT_VALUE_ACCESSOR, { optional: true, self: true }); diff --git a/packages/components/input/input.ts b/packages/components/input/input.ts index 0515726a3..c45d63920 100644 --- a/packages/components/input/input.ts +++ b/packages/components/input/input.ts @@ -205,9 +205,6 @@ export class KbqInput private inputValueAccessor: { value: any }; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const inputValueAccessor = inject(KBQ_INPUT_VALUE_ACCESSOR, { optional: true, self: true }); diff --git a/packages/components/link/link.component.ts b/packages/components/link/link.component.ts index 44dcee5ea..6f1491c37 100644 --- a/packages/components/link/link.component.ts +++ b/packages/components/link/link.component.ts @@ -127,9 +127,6 @@ export class KbqLink implements AfterContentInit, AfterViewInit, OnDestroy { readonly icon = contentChild(KbqIcon); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.updatePrintUrl(); diff --git a/packages/components/list/list-selection.component.ts b/packages/components/list/list-selection.component.ts index ce13afa92..077cab419 100644 --- a/packages/components/list/list-selection.component.ts +++ b/packages/components/list/list-selection.component.ts @@ -236,9 +236,6 @@ export class KbqListSelection implements AfterContentInit, AfterViewInit, OnDest private optionBlurSubscription: Subscription | null; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const multiple = inject(new HostAttributeToken('multiple'), { optional: true }); @@ -813,11 +810,6 @@ export class KbqListOption implements OnDestroy, OnInit, IFocusableOption, KbqTi return !!this.pseudoCheckbox(); } - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngOnInit() { const list = this.listSelection; diff --git a/packages/components/list/list.component.ts b/packages/components/list/list.component.ts index a1ad38ab5..aec9efd0e 100644 --- a/packages/components/list/list.component.ts +++ b/packages/components/list/list.component.ts @@ -38,11 +38,6 @@ export class KbqListItem implements AfterContentInit { @ContentChildren(KbqLine) lines: QueryList; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngAfterContentInit() { new KbqLineSetter(this.lines, this.elementRef); } diff --git a/packages/components/loader-overlay/loader-overlay.component.ts b/packages/components/loader-overlay/loader-overlay.component.ts index 528cb2736..a9b8d7e37 100644 --- a/packages/components/loader-overlay/loader-overlay.component.ts +++ b/packages/components/loader-overlay/loader-overlay.component.ts @@ -112,11 +112,6 @@ export class KbqLoaderOverlay implements OnInit, OnDestroy { @ContentChild(KbqLoaderOverlayText) externalText: KbqLoaderOverlayText | null; @ContentChild(KbqLoaderOverlayCaption) externalCaption: KbqLoaderOverlayCaption | null; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngOnInit(): void { this.parent = this.elementRef.nativeElement.parentElement; diff --git a/packages/components/markdown/markdown.component.ts b/packages/components/markdown/markdown.component.ts index 665f52f23..db0324414 100644 --- a/packages/components/markdown/markdown.component.ts +++ b/packages/components/markdown/markdown.component.ts @@ -73,9 +73,6 @@ export class KbqMarkdown implements OnDestroy { private readonly focusMonitor = inject(FocusMonitor); private readonly links: HTMLAnchorElement[] = []; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { afterNextRender(() => { const contentWrapper = this.contentWrapper(); diff --git a/packages/components/modal/modal-control.service.ts b/packages/components/modal/modal-control.service.ts index 4f057a84b..781a2e7f1 100644 --- a/packages/components/modal/modal-control.service.ts +++ b/packages/components/modal/modal-control.service.ts @@ -38,11 +38,6 @@ export class KbqModalControlService { return this.parentService ? this.parentService.registeredMetaMap : this.rootRegisteredMetaMap; } - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - // Register a modal to listen its open/close registerModal(modalRef: KbqModalRef): void { if (!this.hasRegistered(modalRef)) { diff --git a/packages/components/modal/modal.component.ts b/packages/components/modal/modal.component.ts index 6dbf5b5c4..796c72b28 100644 --- a/packages/components/modal/modal.component.ts +++ b/packages/components/modal/modal.component.ts @@ -305,13 +305,6 @@ export class KbqModalComponent private animationState: AnimationState; private container: HTMLElement | OverlayRef; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() { - super(); - } - // TODO: Skipped for migration because: // This input overrides a field from a superclass, while the superclass field // is not migrated. diff --git a/packages/components/modal/modal.directive.ts b/packages/components/modal/modal.directive.ts index 96f762772..49ff1c052 100644 --- a/packages/components/modal/modal.directive.ts +++ b/packages/components/modal/modal.directive.ts @@ -35,11 +35,6 @@ import { KbqModalComponent } from './modal.component'; }) export class KbqModalTitle { protected modal = inject(KbqModalComponent); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Directive({ diff --git a/packages/components/modal/modal.service.ts b/packages/components/modal/modal.service.ts index 7547024db..6654a8fb8 100644 --- a/packages/components/modal/modal.service.ts +++ b/packages/components/modal/modal.service.ts @@ -88,11 +88,6 @@ export class KbqModalService { return this.modalControl.afterAllClose.asObservable(); } - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - // Closes all of the currently-open dialogs closeAll(): void { this.modalControl.closeAll(); diff --git a/packages/components/modal/modal.spec.ts b/packages/components/modal/modal.spec.ts index 1436d2fd6..4cb6940f4 100644 --- a/packages/components/modal/modal.spec.ts +++ b/packages/components/modal/modal.spec.ts @@ -611,11 +611,6 @@ class TestComponentLevelService { export class CustomModalComponent { componentLevelService = inject(TestComponentLevelService); injector = inject(Injector); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Component({ @@ -632,11 +627,6 @@ export class CustomComponent { modalService = inject(KbqModalService); injector = inject(Injector); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - open() { return this.modalService.open({ kbqComponent: CustomModalComponent, @@ -667,11 +657,6 @@ class TestModalContentComponent {} }) class ModalByServiceComponent { nonServiceModalVisible = false; - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Component({ @@ -695,11 +680,6 @@ class ModalByServiceFromDropdownComponent { nonServiceModalVisible = false; kbqOkText = 'Save'; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - showConfirm() { this.modalService.success({ kbqSize: ModalSize.Small, diff --git a/packages/components/navbar/navbar-item.component.ts b/packages/components/navbar/navbar-item.component.ts index 3bbba3436..aac2a1b01 100644 --- a/packages/components/navbar/navbar-item.component.ts +++ b/packages/components/navbar/navbar-item.component.ts @@ -183,11 +183,6 @@ export class KbqNavbarFocusableItem implements AfterContentInit, AfterViewInit, return -1; } - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngAfterViewInit(): void { this.focusMonitor.monitor(this.elementRef); } @@ -476,9 +471,6 @@ export class KbqNavbarItem extends KbqTooltipTrigger implements AfterContentInit return !!this.title()?.isOverflown; } - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { super(); diff --git a/packages/components/navbar/navbar.component.ts b/packages/components/navbar/navbar.component.ts index 67661f31f..44e1291af 100644 --- a/packages/components/navbar/navbar.component.ts +++ b/packages/components/navbar/navbar.component.ts @@ -78,11 +78,6 @@ export class KbqFocusableComponent implements AfterContentInit, AfterViewInit, O private optionFocusSubscription: Subscription | null; private optionBlurSubscription: Subscription | null; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngAfterContentInit(): void { this.keyManager = new FocusKeyManager(this.focusableItems).withTypeAhead(); @@ -252,15 +247,12 @@ export class KbqNavbar extends KbqFocusableComponent implements AfterViewInit, A private resizeSubscription: Subscription; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const elementRef = inject>(ElementRef); const changeDetectorRef = inject(ChangeDetectorRef); const focusMonitor = inject(FocusMonitor); - super(changeDetectorRef, elementRef, focusMonitor); + super(); this.elementRef = elementRef; this.changeDetectorRef = changeDetectorRef; this.focusMonitor = focusMonitor; diff --git a/packages/components/navbar/vertical-navbar.component.ts b/packages/components/navbar/vertical-navbar.component.ts index d93cbe041..8ced26889 100644 --- a/packages/components/navbar/vertical-navbar.component.ts +++ b/packages/components/navbar/vertical-navbar.component.ts @@ -1,9 +1,8 @@ -import { CdkMonitorFocus, FocusMonitor } from '@angular/cdk/a11y'; +import { CdkMonitorFocus } from '@angular/cdk/a11y'; import { coerceBooleanProperty } from '@angular/cdk/coercion'; import { AfterContentInit, ChangeDetectionStrategy, - ChangeDetectorRef, Component, contentChild, contentChildren, @@ -108,15 +107,10 @@ export class KbqVerticalNavbar extends KbqFocusableComponent implements AfterCon private _expanded: boolean = false; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const elementRef = inject>(ElementRef); - const changeDetectorRef = inject(ChangeDetectorRef); - const focusMonitor = inject(FocusMonitor); - super(changeDetectorRef, elementRef, focusMonitor); + super(); this.elementRef = elementRef; this.animationDone.pipe(takeUntilDestroyed()).subscribe(this.updateTooltipForItems); diff --git a/packages/components/popover/popover-confirm.component.ts b/packages/components/popover/popover-confirm.component.ts index fdf0fe60e..e29962f25 100644 --- a/packages/components/popover/popover-confirm.component.ts +++ b/packages/components/popover/popover-confirm.component.ts @@ -80,9 +80,6 @@ export class KbqPopoverConfirmTrigger extends KbqPopoverTrigger { private _confirmButtonText: string = 'Да'; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const confirmText = inject(KBQ_POPOVER_CONFIRM_TEXT, { optional: true }); const confirmButtonText = inject(KBQ_POPOVER_CONFIRM_BUTTON_TEXT, { optional: true }); diff --git a/packages/components/popover/popover.spec.ts b/packages/components/popover/popover.spec.ts index e6fbe45ce..050e8a41e 100644 --- a/packages/components/popover/popover.spec.ts +++ b/packages/components/popover/popover.spec.ts @@ -418,10 +418,6 @@ export class PopoverSimple { readonly popoverTrigger = viewChild.required(KbqPopoverTrigger); readonly triggerElementRef = viewChild.required(KbqPopoverTrigger, { read: ElementRef }); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() {} } @Component({ diff --git a/packages/components/radio/radio.component.ts b/packages/components/radio/radio.component.ts index 95e56285c..a2bf2dbbc 100644 --- a/packages/components/radio/radio.component.ts +++ b/packages/components/radio/radio.component.ts @@ -185,11 +185,6 @@ export class KbqRadioGroup implements AfterContentInit, ControlValueAccessor { /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */ private _labelPosition: 'before' | 'after' = 'after'; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - /** The method to be called in order to update ngModel */ controlValueAccessorChangeFn: (value: any) => void = () => {}; @@ -473,9 +468,6 @@ export class KbqRadioButton extends KbqColorDirective implements OnInit, AfterVi /** Value assigned to this radio. */ private _value: any = null; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const radioGroup = inject(KbqRadioGroup, { optional: true })!; diff --git a/packages/components/scrollbar/scrollbar.component.ts b/packages/components/scrollbar/scrollbar.component.ts index b164f8ac7..4b76fec86 100644 --- a/packages/components/scrollbar/scrollbar.component.ts +++ b/packages/components/scrollbar/scrollbar.component.ts @@ -95,11 +95,6 @@ export class KbqScrollbar implements AfterViewInit, OnDestroy { private readonly injector = inject(Injector); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngAfterViewInit() { afterNextRender( () => { diff --git a/packages/components/scrollbar/scrollbar.directive.ts b/packages/components/scrollbar/scrollbar.directive.ts index bd58a7beb..1081574c9 100644 --- a/packages/components/scrollbar/scrollbar.directive.ts +++ b/packages/components/scrollbar/scrollbar.directive.ts @@ -103,9 +103,6 @@ export class KbqScrollbarDirective implements OnDestroy { scrollbarInstance?: OverlayScrollbars; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const [requestDefer, cancelDefer] = createDefer(); diff --git a/packages/components/select/select.component.spec.ts b/packages/components/select/select.component.spec.ts index 7dfd88f1c..674cc089b 100644 --- a/packages/components/select/select.component.spec.ts +++ b/packages/components/select/select.component.spec.ts @@ -1434,11 +1434,6 @@ class CdkVirtualScrollViewportSelect { readonly select = viewChild.required(KbqSelect); readonly viewport = viewChild.required(CdkVirtualScrollViewport); options: any[] = OPTIONS.sort(); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Component({ @@ -1494,9 +1489,6 @@ class CdkVirtualScrollViewportSelectOptionAsObject extends CdkVirtualScrollViewp return { id: index, name: option, active: true }; }); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const scrollDispatcher = inject_1(ScrollDispatcher); diff --git a/packages/components/select/select.component.ts b/packages/components/select/select.component.ts index 77faf6d03..47e702715 100644 --- a/packages/components/select/select.component.ts +++ b/packages/components/select/select.component.ts @@ -846,9 +846,6 @@ export class KbqSelect private openPanelTimeout: ReturnType; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { super(); diff --git a/packages/components/sidebar/sidebar.component.ts b/packages/components/sidebar/sidebar.component.ts index 8052c8dd4..55452083e 100644 --- a/packages/components/sidebar/sidebar.component.ts +++ b/packages/components/sidebar/sidebar.component.ts @@ -142,9 +142,6 @@ export class KbqSidebar implements OnDestroy, AfterContentInit { private unbindKeydownListener: ReturnType | null = null; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { afterNextRender(() => this.registerKeydownListener()); } diff --git a/packages/components/sidepanel/sidepanel-container.component.ts b/packages/components/sidepanel/sidepanel-container.component.ts index 5b7989261..b117db44d 100644 --- a/packages/components/sidepanel/sidepanel-container.component.ts +++ b/packages/components/sidepanel/sidepanel-container.component.ts @@ -98,13 +98,6 @@ export class KbqSidepanelContainerComponent extends BasePortalOutlet implements /** Whether the component has been destroyed. */ private destroyed: boolean; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() { - super(); - } - ngOnDestroy(): void { this.destroyed = true; } diff --git a/packages/components/sidepanel/sidepanel-directives.ts b/packages/components/sidepanel/sidepanel-directives.ts index 16064b7f9..b4484563c 100644 --- a/packages/components/sidepanel/sidepanel-directives.ts +++ b/packages/components/sidepanel/sidepanel-directives.ts @@ -38,11 +38,6 @@ export class KbqSidepanelClose implements OnInit, OnChanges { readonly kbqSidepanelClose = input(); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngOnInit() { if (!this.sidepanelRef) { // When this directive is included in a sidepanel via TemplateRef (rather than being diff --git a/packages/components/sidepanel/sidepanel.service.ts b/packages/components/sidepanel/sidepanel.service.ts index ba0372082..184f83be5 100644 --- a/packages/components/sidepanel/sidepanel.service.ts +++ b/packages/components/sidepanel/sidepanel.service.ts @@ -24,11 +24,6 @@ export class KbqSidepanelService implements OnDestroy { : this.openedSidepanelsAtThisLevel; } - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngOnDestroy() { // Only close the sidepanels at this level on destroy // since the parent service may still be active. diff --git a/packages/components/sidepanel/sidepanel.spec.ts b/packages/components/sidepanel/sidepanel.spec.ts index 2c7239960..3c328fe01 100644 --- a/packages/components/sidepanel/sidepanel.spec.ts +++ b/packages/components/sidepanel/sidepanel.spec.ts @@ -460,11 +460,6 @@ class SidepanelFromDropdownComponent { readonly trigger = viewChild.required('trigger'); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - showSidepanel() { this.ss.open(ComponentForSidepanel); } @@ -485,11 +480,6 @@ class SidepanelWithCustomToken { class SimpleSidepanelExample { sidepanelRef = injectCore>(KbqSidepanelRef); data = injectCore(KBQ_SIDEPANEL_DATA); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } @Component({ diff --git a/packages/components/splitter/splitter.component.ts b/packages/components/splitter/splitter.component.ts index 872df9690..2da5ba46c 100644 --- a/packages/components/splitter/splitter.component.ts +++ b/packages/components/splitter/splitter.component.ts @@ -116,11 +116,6 @@ export class KbqGutterDirective implements OnInit { dragged: boolean = false; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngOnInit(): void { this.setStyle(StyleProperty.FlexBasis, coerceCssPixelValue(this.size)); this.setStyle(this.isVertical ? StyleProperty.Height : StyleProperty.Width, coerceCssPixelValue(this.size)); @@ -222,11 +217,6 @@ export class KbqGutterGhostDirective { return this.direction === Direction.Vertical; } - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - private updateDimensions(): void { this.setStyle(this.isVertical ? StyleProperty.Width : StyleProperty.Height, '100%'); this.setStyle(this.isVertical ? StyleProperty.Height : StyleProperty.Width, coerceCssPixelValue(this.size)); @@ -348,11 +338,6 @@ export class KbqSplitterComponent implements OnInit, AfterContentInit, OnDestroy private _resizing: boolean = false; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - addArea(area: KbqSplitterAreaDirective): void { this.areas.push(this.mapAndOrderArea(area, this.areas.length)); this.changeDetectorRef.detectChanges(); @@ -597,11 +582,6 @@ export class KbqSplitterAreaDirective implements AfterViewInit, OnDestroy { private readonly window = inject(KBQ_WINDOW); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - isResizing(): boolean { return this.splitter.isDragging; } diff --git a/packages/components/tabs/tab-body.component.ts b/packages/components/tabs/tab-body.component.ts index efd36c583..eb75614a8 100644 --- a/packages/components/tabs/tab-body.component.ts +++ b/packages/components/tabs/tab-body.component.ts @@ -111,9 +111,6 @@ export class KbqTabBody implements OnInit, OnDestroy { /** Subscription to the directionality change observable. */ private readonly dirChangeSubscription = Subscription.EMPTY; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const changeDetectorRef = inject(ChangeDetectorRef); @@ -212,9 +209,6 @@ export class KbqTabBodyPortal extends CdkPortalOutlet implements OnInit, OnDestr /** Subscription to events for when the tab body finishes leaving from center position. */ private leavingSub = Subscription.EMPTY; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const componentFactoryResolver = inject(ComponentFactoryResolver); const viewContainerRef = inject(ViewContainerRef); diff --git a/packages/components/tabs/tab-body.spec.ts b/packages/components/tabs/tab-body.spec.ts index cc372910e..bf3ba513f 100644 --- a/packages/components/tabs/tab-body.spec.ts +++ b/packages/components/tabs/tab-body.spec.ts @@ -191,11 +191,6 @@ class SimpleTabBodyApp implements AfterContentInit { readonly tabBody = viewChild.required(KbqTabBody); readonly template = viewChild.required(TemplateRef); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngAfterContentInit() { this.content = new TemplatePortal(this.template(), this.viewContainerRef); } diff --git a/packages/components/tabs/tab-content.directive.ts b/packages/components/tabs/tab-content.directive.ts index 3aaea98da..f3564bac7 100644 --- a/packages/components/tabs/tab-content.directive.ts +++ b/packages/components/tabs/tab-content.directive.ts @@ -6,9 +6,4 @@ import { Directive, TemplateRef, inject } from '@angular/core'; }) export class KbqTabContent { template = inject>(TemplateRef); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } diff --git a/packages/components/tabs/tab-group.component.ts b/packages/components/tabs/tab-group.component.ts index b839f957f..a0efa9169 100644 --- a/packages/components/tabs/tab-group.component.ts +++ b/packages/components/tabs/tab-group.component.ts @@ -222,9 +222,6 @@ export class KbqTabGroup implements AfterContentInit, AfterViewInit, AfterConten private readonly groupId: number; private readonly resizeDebounceInterval: number = 100; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const defaultConfig = inject(KBQ_TABS_CONFIG, { optional: true }); diff --git a/packages/components/tabs/tab-label-wrapper.directive.ts b/packages/components/tabs/tab-label-wrapper.directive.ts index a9cb44030..850a1f5f3 100644 --- a/packages/components/tabs/tab-label-wrapper.directive.ts +++ b/packages/components/tabs/tab-label-wrapper.directive.ts @@ -46,11 +46,6 @@ export class KbqTabLabelWrapper implements AfterViewInit { private _disabled: boolean = false; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngAfterViewInit(): void { this.addClassModifierForIcons(Array.from(this.elementRef.nativeElement.querySelectorAll('.kbq-icon'))); } diff --git a/packages/components/tabs/tab.component.ts b/packages/components/tabs/tab.component.ts index 712a2111b..a7f6ae188 100644 --- a/packages/components/tabs/tab.component.ts +++ b/packages/components/tabs/tab.component.ts @@ -153,11 +153,6 @@ export class KbqTab implements OnInit, OnChanges, OnDestroy { /** Portal that will be the hosted content of the tab */ private contentPortal: TemplatePortal | null = null; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngOnChanges(changes: SimpleChanges): void { if (changes.hasOwnProperty('textLabel') || changes.hasOwnProperty('disabled')) { this.stateChanges.next(); diff --git a/packages/components/tags/tag-input.ts b/packages/components/tags/tag-input.ts index 1aef0584d..3e28ad08a 100644 --- a/packages/components/tags/tag-input.ts +++ b/packages/components/tags/tag-input.ts @@ -174,9 +174,6 @@ export class KbqTagInput implements KbqTagTextControl, OnChanges { /** The native input element to which this directive is attached. */ private inputElement: HTMLInputElement; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.inputElement = this.elementRef.nativeElement as HTMLInputElement; } diff --git a/packages/components/tags/tag-list.component.ts b/packages/components/tags/tag-list.component.ts index 3c985cf9f..a58f0f5e6 100644 --- a/packages/components/tags/tag-list.component.ts +++ b/packages/components/tags/tag-list.component.ts @@ -424,9 +424,6 @@ export class KbqTagList /** Triggers unsubscription from all per-tags streams when tags are reset. */ private readonly tagsSubscriptions$ = new Subject(); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { if (this.ngControl) { this.ngControl.valueAccessor = this; diff --git a/packages/components/tags/tag.component.ts b/packages/components/tags/tag.component.ts index a4ccde823..b1cdbad6d 100644 --- a/packages/components/tags/tag.component.ts +++ b/packages/components/tags/tag.component.ts @@ -415,9 +415,6 @@ export class KbqTag return (this.tagList?.draggable ?? false) && !this.disabled; } - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { super(); @@ -734,11 +731,6 @@ export class KbqTag export class KbqTagRemove { protected parentTag = inject(KbqTag); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - /** @docs-private */ focus(event: FocusEvent): void { event.stopPropagation(); diff --git a/packages/components/textarea/textarea.component.ts b/packages/components/textarea/textarea.component.ts index 868819a74..be3bd4727 100644 --- a/packages/components/textarea/textarea.component.ts +++ b/packages/components/textarea/textarea.component.ts @@ -214,9 +214,6 @@ export class KbqTextarea private minHeight: number = 0; private rowsCount: number; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const inputValueAccessor = inject(KBQ_TEXTAREA_VALUE_ACCESSOR, { optional: true, self: true }); diff --git a/packages/components/timepicker/timepicker.directive.ts b/packages/components/timepicker/timepicker.directive.ts index a4d9d0eda..71bb20981 100644 --- a/packages/components/timepicker/timepicker.directive.ts +++ b/packages/components/timepicker/timepicker.directive.ts @@ -396,9 +396,6 @@ export class KbqTimepicker private errorStateTracker: KbqErrorStateTracker; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const dateAdapter = this.dateAdapter; diff --git a/packages/components/timepicker/timepicker.spec.ts b/packages/components/timepicker/timepicker.spec.ts index d8f165d6f..0f71666dd 100644 --- a/packages/components/timepicker/timepicker.spec.ts +++ b/packages/components/timepicker/timepicker.spec.ts @@ -146,9 +146,6 @@ class TestApp { timeValue: DateTime; isDisabled: boolean; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const adapter = this.adapter; @@ -1039,11 +1036,6 @@ class TimepickerWithLocaleChange { timeFormat: TimeFormats; model: any = null; - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } describe('with Locale change', () => { diff --git a/packages/components/title/title.directive.ts b/packages/components/title/title.directive.ts index 035d4faa0..b8d4ef311 100644 --- a/packages/components/title/title.directive.ts +++ b/packages/components/title/title.directive.ts @@ -94,13 +94,6 @@ export class KbqTitleDirective extends KbqTooltipTrigger implements AfterViewIni @ContentChild('kbqTitleContainer') private parentContainer: ElementRef; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() { - super(); - } - ngAfterViewInit() { this.parentContainer = this.parentContainer || this.componentInstance?.parentTextElement || this.elementRef; this.childContainer = this.childContainer || this.componentInstance?.textElement || this.elementRef; diff --git a/packages/components/toast/toast-container.component.ts b/packages/components/toast/toast-container.component.ts index 8e0d1ffcf..befb73928 100644 --- a/packages/components/toast/toast-container.component.ts +++ b/packages/components/toast/toast-container.component.ts @@ -35,9 +35,6 @@ export class KbqToastContainerComponent extends CdkScrollable { readonly viewContainer = viewChild.required('container', { read: ViewContainerRef }); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const elementRef = inject>(ElementRef); const scrollDispatcher = inject(ScrollDispatcher); diff --git a/packages/components/toast/toast.component.ts b/packages/components/toast/toast.component.ts index e1b0217a2..08a860943 100644 --- a/packages/components/toast/toast.component.ts +++ b/packages/components/toast/toast.component.ts @@ -88,9 +88,6 @@ export class KbqToastComponent implements OnDestroy { return this.hovered.getValue() || this.focused.getValue(); } - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.$implicit = this; diff --git a/packages/components/toast/toast.service.ts b/packages/components/toast/toast.service.ts index 186f13c45..9698b16b1 100644 --- a/packages/components/toast/toast.service.ts +++ b/packages/components/toast/toast.service.ts @@ -63,9 +63,6 @@ export class KbqToastService im private toastsDict: { [id: number]: ComponentRef } = {}; private templatesDict: { [id: number]: EmbeddedViewRef } = {}; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.ngZone.runOutsideAngular(() => { this.timerSubscription = this.timer.subscribe(this.processToasts); diff --git a/packages/components/toast/toast.spec.ts b/packages/components/toast/toast.spec.ts index 04960eedc..c2e27d9c0 100644 --- a/packages/components/toast/toast.spec.ts +++ b/packages/components/toast/toast.spec.ts @@ -205,10 +205,6 @@ describe('Standalone ToastService', () => { class KbqToastButtonWrapperComponent { toastService = inject_1(KbqToastService); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} show(): void { this.toastService.show({ style: 'warning', title: 'Warning', content: 'Message Content' }, 0); } diff --git a/packages/components/toggle/toggle.component.ts b/packages/components/toggle/toggle.component.ts index ec90452e2..06da8aae1 100644 --- a/packages/components/toggle/toggle.component.ts +++ b/packages/components/toggle/toggle.component.ts @@ -194,9 +194,6 @@ export class KbqToggleComponent extends KbqColorDirective implements AfterViewIn private uniqueId: string = `kbq-toggle-${++nextUniqueId}`; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { super(); diff --git a/packages/components/tooltip/tooltip.component.ts b/packages/components/tooltip/tooltip.component.ts index adbd9bf5d..3a3d8b66e 100644 --- a/packages/components/tooltip/tooltip.component.ts +++ b/packages/components/tooltip/tooltip.component.ts @@ -79,13 +79,6 @@ export class KbqTooltipComponent extends KbqPopUp { @ViewChild('tooltip') elementRef: ElementRef; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() { - super(); - } - show(delay: number) { if (!this.content) { return; diff --git a/packages/components/tree-select/tree-select.component.ts b/packages/components/tree-select/tree-select.component.ts index fae182e35..c6f54432c 100644 --- a/packages/components/tree-select/tree-select.component.ts +++ b/packages/components/tree-select/tree-select.component.ts @@ -642,9 +642,6 @@ export class KbqTreeSelect private readonly destroyRef = inject(DestroyRef); private readonly window = inject(KBQ_WINDOW); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { super(); diff --git a/packages/components/tree/node.ts b/packages/components/tree/node.ts index 77aa270eb..2a3c79429 100644 --- a/packages/components/tree/node.ts +++ b/packages/components/tree/node.ts @@ -41,9 +41,5 @@ export class KbqTreeNodeDef { */ when: (index: number, nodeData: T) => boolean; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - /** @docs-private */ - constructor() {} } diff --git a/packages/components/tree/outlet.ts b/packages/components/tree/outlet.ts index 38c0d5717..fe0962c0f 100644 --- a/packages/components/tree/outlet.ts +++ b/packages/components/tree/outlet.ts @@ -6,9 +6,4 @@ import { ChangeDetectorRef, Directive, ViewContainerRef, inject } from '@angular export class KbqTreeNodeOutlet { viewContainer = inject(ViewContainerRef); changeDetectorRef = inject(ChangeDetectorRef); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } diff --git a/packages/components/tree/padding.directive.ts b/packages/components/tree/padding.directive.ts index b0c0f199e..fe8a6b681 100644 --- a/packages/components/tree/padding.directive.ts +++ b/packages/components/tree/padding.directive.ts @@ -58,9 +58,6 @@ export class KbqTreeNodePadding implements AfterViewInit { withIcon: boolean; iconWidth: number = 24; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.dir?.change?.pipe(takeUntilDestroyed()).subscribe(() => this.setPadding()); } diff --git a/packages/components/tree/toggle.ts b/packages/components/tree/toggle.ts index 4285060f2..9f51c9bc8 100644 --- a/packages/components/tree/toggle.ts +++ b/packages/components/tree/toggle.ts @@ -52,9 +52,6 @@ export class KbqTreeNodeToggleBaseDirective { return this.tree.treeControl.isExpanded(this.node()); } - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.tree.treeControl.filterValue.subscribe((value) => (this.disabled = !!value?.length)); } diff --git a/packages/components/tree/tree-base.ts b/packages/components/tree/tree-base.ts index 5f8031bfe..ce8f83ece 100644 --- a/packages/components/tree/tree-base.ts +++ b/packages/components/tree/tree-base.ts @@ -99,11 +99,6 @@ export class KbqTreeBase implements AfterContentChecked, CollectionViewer, On protected readonly destroyRef = inject(DestroyRef); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngOnInit() { this.dataDiffer = this.differs.find([]).create(this.trackBy()); @@ -314,9 +309,6 @@ export class KbqTreeNode implements IFocusableOption, OnDestroy { return treeControl.getLevel ? treeControl.getLevel(this._data) : 0; } - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { KbqTreeNode.mostRecentTreeNode = this; } diff --git a/packages/components/tree/tree-option.component.ts b/packages/components/tree/tree-option.component.ts index b0c824d14..243a7fe17 100644 --- a/packages/components/tree/tree-option.component.ts +++ b/packages/components/tree/tree-option.component.ts @@ -212,14 +212,10 @@ export class KbqTreeOption extends KbqTreeNode implements AfterCo checkboxState: KbqPseudoCheckboxState; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { - const elementRef = inject>(ElementRef); const tree = inject(KBQ_TREE_OPTION_PARENT_COMPONENT); - super(elementRef, tree); + super(); this.tree = tree; } diff --git a/packages/components/tree/tree-selection.component.ts b/packages/components/tree/tree-selection.component.ts index 3c1affd8a..df85d98b0 100644 --- a/packages/components/tree/tree-selection.component.ts +++ b/packages/components/tree/tree-selection.component.ts @@ -6,7 +6,6 @@ import { AfterContentInit, AfterViewInit, ChangeDetectionStrategy, - ChangeDetectorRef, Component, ContentChildren, ElementRef, @@ -16,7 +15,6 @@ import { inject, Input, IterableDiffer, - IterableDiffers, OnDestroy, Output, output, @@ -260,15 +258,10 @@ export class KbqTreeSelection private optionBlurSubscription: Subscription | null; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { - const differs = inject(IterableDiffers); - const changeDetectorRef = inject(ChangeDetectorRef); const multiple = inject(new HostAttributeToken('multiple'), { optional: true }); - super(differs, changeDetectorRef); + super(); if (multiple === MultipleMode.CHECKBOX || multiple === MultipleMode.KEYBOARD) { this.multipleMode = multiple; diff --git a/packages/docs-examples/components/accordion/accordion-in-panel/accordion-in-panel-example.ts b/packages/docs-examples/components/accordion/accordion-in-panel/accordion-in-panel-example.ts index 8a7446e47..4396df42f 100644 --- a/packages/docs-examples/components/accordion/accordion-in-panel/accordion-in-panel-example.ts +++ b/packages/docs-examples/components/accordion/accordion-in-panel/accordion-in-panel-example.ts @@ -25,11 +25,6 @@ export class AccordionInPanelExample { @ViewChild('template', { static: false }) template: TemplateRef; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - openPanel() { this.sidepanelService.open(this.template, { position: this.position, diff --git a/packages/docs-examples/components/checkbox/checkbox-indeterminate/checkbox-indeterminate-example.ts b/packages/docs-examples/components/checkbox/checkbox-indeterminate/checkbox-indeterminate-example.ts index 9ff776c02..3acb02679 100644 --- a/packages/docs-examples/components/checkbox/checkbox-indeterminate/checkbox-indeterminate-example.ts +++ b/packages/docs-examples/components/checkbox/checkbox-indeterminate/checkbox-indeterminate-example.ts @@ -42,11 +42,6 @@ export class CheckboxIndeterminateExample { { name: 'Grapes', checked: false } ]; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - updateCheckboxes(index: number) { this.toggleFruitChecked(index); this.updateIndeterminate(); diff --git a/packages/docs-examples/components/datepicker/datepicker-inactive/datepicker-inactive-example.ts b/packages/docs-examples/components/datepicker/datepicker-inactive/datepicker-inactive-example.ts index 5fe0c55bb..dcbcfc5c5 100644 --- a/packages/docs-examples/components/datepicker/datepicker-inactive/datepicker-inactive-example.ts +++ b/packages/docs-examples/components/datepicker/datepicker-inactive/datepicker-inactive-example.ts @@ -50,9 +50,6 @@ export class DatepickerInactiveExample { selectedDate: DateTime; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.selectedDate = this.adapter.createDate(1989, 11, 13); } diff --git a/packages/docs-examples/components/datepicker/datepicker-minimax/datepicker-minimax-example.ts b/packages/docs-examples/components/datepicker/datepicker-minimax/datepicker-minimax-example.ts index 1efdb2449..80d23d086 100644 --- a/packages/docs-examples/components/datepicker/datepicker-minimax/datepicker-minimax-example.ts +++ b/packages/docs-examples/components/datepicker/datepicker-minimax/datepicker-minimax-example.ts @@ -53,9 +53,4 @@ export class DatepickerMinimaxExample { readonly minDate = this.adapter.createDate(2023, 11, 14); readonly maxDate = this.adapter.createDate(2024, 7, 25); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } diff --git a/packages/docs-examples/components/datepicker/datepicker-range/datepicker-range-example.ts b/packages/docs-examples/components/datepicker/datepicker-range/datepicker-range-example.ts index 3f6abf57c..34746dd8c 100644 --- a/packages/docs-examples/components/datepicker/datepicker-range/datepicker-range-example.ts +++ b/packages/docs-examples/components/datepicker/datepicker-range/datepicker-range-example.ts @@ -47,9 +47,4 @@ export class DatepickerRangeExample { readonly minDate = this.adapter.createDate(2023, 11, 14); readonly maxDate = this.adapter.createDate(2024, 7, 25); - - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} } diff --git a/packages/docs-examples/components/dropdown/dropdown-recursive-template/dropdown-recursive-template-example.ts b/packages/docs-examples/components/dropdown/dropdown-recursive-template/dropdown-recursive-template-example.ts index d08df3e62..b4cf33138 100644 --- a/packages/docs-examples/components/dropdown/dropdown-recursive-template/dropdown-recursive-template-example.ts +++ b/packages/docs-examples/components/dropdown/dropdown-recursive-template/dropdown-recursive-template-example.ts @@ -27,11 +27,6 @@ export class ExampleDropdownPortal implements OnInit { readonly context = input({}, { alias: 'exampleDropdownOutletContext' }); readonly template = input>(undefined!, { alias: 'exampleDropdownOutlet' }); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() {} - ngOnInit() { this.viewContainerRef.createEmbeddedView(this.template(), this.context(), { injector: Injector.create({ diff --git a/packages/docs-examples/components/sidepanel/sidepanel-normal-mode/sidepanel-normal-mode-example.ts b/packages/docs-examples/components/sidepanel/sidepanel-normal-mode/sidepanel-normal-mode-example.ts index a4ffaec63..01329c076 100644 --- a/packages/docs-examples/components/sidepanel/sidepanel-normal-mode/sidepanel-normal-mode-example.ts +++ b/packages/docs-examples/components/sidepanel/sidepanel-normal-mode/sidepanel-normal-mode-example.ts @@ -25,10 +25,6 @@ export class SidepanelNormalModeExample { arrayLength = 40; array = new Array(this.arrayLength); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() {} - toggleSidepanel() { if (!this.isOpened) { const sidepanel = this.sidepanelService.open(this.template, { diff --git a/packages/docs-examples/components/sidepanel/sidepanel-overview/sidepanel-overview-example.ts b/packages/docs-examples/components/sidepanel/sidepanel-overview/sidepanel-overview-example.ts index 2eea94500..69ee8a689 100644 --- a/packages/docs-examples/components/sidepanel/sidepanel-overview/sidepanel-overview-example.ts +++ b/packages/docs-examples/components/sidepanel/sidepanel-overview/sidepanel-overview-example.ts @@ -22,10 +22,6 @@ export class SidepanelOverviewExample { arrayLength = 40; array = new Array(this.arrayLength); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() {} - openSidepanel() { this.sidepanelService.open(this.template, { position: this.position, diff --git a/packages/docs-examples/components/sidepanel/sidepanel-sizes/sidepanel-sizes-example.ts b/packages/docs-examples/components/sidepanel/sidepanel-sizes/sidepanel-sizes-example.ts index f1b6fc3c3..96cc6f215 100644 --- a/packages/docs-examples/components/sidepanel/sidepanel-sizes/sidepanel-sizes-example.ts +++ b/packages/docs-examples/components/sidepanel/sidepanel-sizes/sidepanel-sizes-example.ts @@ -29,10 +29,6 @@ export class SidepanelSizesExample { arrayLength = 40; array = new Array(this.arrayLength); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() {} - showSmall() { this.sidepanelService.open(this.template, { position: KbqSidepanelPosition.Right, diff --git a/packages/docs-examples/components/timepicker/timepicker-overview/timepicker-overview-example.ts b/packages/docs-examples/components/timepicker/timepicker-overview/timepicker-overview-example.ts index b7832577f..382fb098d 100644 --- a/packages/docs-examples/components/timepicker/timepicker-overview/timepicker-overview-example.ts +++ b/packages/docs-examples/components/timepicker/timepicker-overview/timepicker-overview-example.ts @@ -30,9 +30,6 @@ export class TimepickerOverviewExample { time: DateTime; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.time = this.adapter.today().startOf('hour'); } diff --git a/packages/docs-examples/components/timepicker/timepicker-variations/timepicker-variations-example.ts b/packages/docs-examples/components/timepicker/timepicker-variations/timepicker-variations-example.ts index 0543d3d61..df8192417 100644 --- a/packages/docs-examples/components/timepicker/timepicker-variations/timepicker-variations-example.ts +++ b/packages/docs-examples/components/timepicker/timepicker-variations/timepicker-variations-example.ts @@ -35,9 +35,6 @@ export class TimepickerVariationsExample { timeFormat = TimeFormats.HHmm; protected readonly TimeFormats = TimeFormats; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.value = this.adapter.today(); } diff --git a/packages/docs-examples/components/tree-select/tree-select-lazyload/tree-select-lazyload-example.ts b/packages/docs-examples/components/tree-select/tree-select-lazyload/tree-select-lazyload-example.ts index b1f293b4b..ce3d30b59 100644 --- a/packages/docs-examples/components/tree-select/tree-select-lazyload/tree-select-lazyload-example.ts +++ b/packages/docs-examples/components/tree-select/tree-select-lazyload/tree-select-lazyload-example.ts @@ -212,9 +212,6 @@ export class TreeSelectLazyloadExample { nodeMap = new Map(); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren); diff --git a/packages/docs-examples/components/tree/tree-lazyload/tree-lazyload-example.ts b/packages/docs-examples/components/tree/tree-lazyload/tree-lazyload-example.ts index c25447df4..de2a88caf 100644 --- a/packages/docs-examples/components/tree/tree-lazyload/tree-lazyload-example.ts +++ b/packages/docs-examples/components/tree/tree-lazyload/tree-lazyload-example.ts @@ -202,9 +202,6 @@ export class TreeLazyloadExample { nodeMap = new Map(); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { this.treeFlattener = new KbqTreeFlattener(this.transformer, this.getLevel, this.isExpandable, this.getChildren); diff --git a/tools/public_api_guard/components/autocomplete.api.md b/tools/public_api_guard/components/autocomplete.api.md index cb75ab73a..3dde9cf49 100644 --- a/tools/public_api_guard/components/autocomplete.api.md +++ b/tools/public_api_guard/components/autocomplete.api.md @@ -55,7 +55,7 @@ export const KBQ_AUTOCOMPLETE_VALUE_ACCESSOR: Provider; // @public (undocumented) export class KbqAutocomplete implements AfterContentInit { - constructor(...args: unknown[]); + constructor(); get autoActiveFirstOption(): boolean; set autoActiveFirstOption(value: boolean); get classList(): string; @@ -128,7 +128,6 @@ export class KbqAutocompleteModule { // @public export class KbqAutocompleteOrigin { - constructor(...args: unknown[]); // (undocumented) elementRef: ElementRef; // (undocumented) @@ -148,7 +147,7 @@ export class KbqAutocompleteSelectedEvent { // @public (undocumented) export class KbqAutocompleteTrigger implements AfterViewInit, ControlValueAccessor, OnDestroy, KeyboardNavigationHandler { - constructor(...args: unknown[]); + constructor(); get activeOption(): KbqOption | null; readonly autocomplete: i0.InputSignal; readonly autocompleteAttribute: i0.InputSignal; diff --git a/tools/public_api_guard/components/badge.api.md b/tools/public_api_guard/components/badge.api.md index ee4b52a55..60f9b806f 100644 --- a/tools/public_api_guard/components/badge.api.md +++ b/tools/public_api_guard/components/badge.api.md @@ -69,7 +69,7 @@ export enum KbqBadgeColors { // @public (undocumented) export class KbqBadgeCssStyler implements AfterContentInit { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly icons: i0.Signal; // (undocumented) diff --git a/tools/public_api_guard/components/button-toggle.api.md b/tools/public_api_guard/components/button-toggle.api.md index 35bfdeaaa..48f161360 100644 --- a/tools/public_api_guard/components/button-toggle.api.md +++ b/tools/public_api_guard/components/button-toggle.api.md @@ -20,7 +20,6 @@ export const KBQ_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR: any; // @public export class KbqButtonToggle implements OnInit, AfterContentInit, AfterViewInit, OnDestroy { - constructor(...args: unknown[]); // (undocumented) buttonToggleGroup: KbqButtonToggleGroup; readonly change: _angular_core.OutputEmitterRef; @@ -67,7 +66,6 @@ export class KbqButtonToggleChange { // @public export class KbqButtonToggleGroup implements ControlValueAccessor, OnInit, AfterContentInit { - constructor(...args: unknown[]); readonly buttonToggles: _angular_core.Signal; readonly change: _angular_core.OutputEmitterRef; controlValueAccessorChangeFn: (value: any) => void; diff --git a/tools/public_api_guard/components/button.api.md b/tools/public_api_guard/components/button.api.md index b81441b84..7f88bb47d 100644 --- a/tools/public_api_guard/components/button.api.md +++ b/tools/public_api_guard/components/button.api.md @@ -27,7 +27,7 @@ export const buttonRightIconClassName = "kbq-button-icon_right"; // @public (undocumented) export class KbqButton extends KbqColorDirective implements OnDestroy, AfterViewInit, KbqTitleTextRef { - constructor(...args: unknown[]); + constructor(); get disabled(): boolean; set disabled(value: boolean); readonly disabledSignal: i0.WritableSignal; @@ -71,7 +71,7 @@ export class KbqButton extends KbqColorDirective implements OnDestroy, AfterView // @public (undocumented) export class KbqButtonCssStyler implements AfterContentInit { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly icons: i0.Signal; // (undocumented) diff --git a/tools/public_api_guard/components/checkbox.api.md b/tools/public_api_guard/components/checkbox.api.md index fe0e63506..3af8abd98 100644 --- a/tools/public_api_guard/components/checkbox.api.md +++ b/tools/public_api_guard/components/checkbox.api.md @@ -26,7 +26,7 @@ export const KBQ_CHECKBOX_REQUIRED_VALIDATOR: Provider; // @public export class KbqCheckbox extends KbqColorDirective implements ControlValueAccessor, AfterViewInit, OnDestroy { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly big: _angular_core.InputSignal; readonly change: _angular_core.OutputEmitterRef; diff --git a/tools/public_api_guard/components/core.api.md b/tools/public_api_guard/components/core.api.md index 52060591c..80f4c0065 100644 --- a/tools/public_api_guard/components/core.api.md +++ b/tools/public_api_guard/components/core.api.md @@ -280,7 +280,7 @@ export abstract class DateAdapter extends DateAdapter_2 { // @public (undocumented) export class DateFormatter extends DateFormatter_2 { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly adapter: DateAdapter_2; // (undocumented) @@ -2373,7 +2373,7 @@ export type KbqDateFormats = DateFormats; // @public (undocumented) export class KbqDecimalPipe implements KbqNumericPipe, PipeTransform { - constructor(...args: unknown[]); + constructor(); // (undocumented) isSpecialFormatForRULocale(locale: string, value: number, grouping?: boolean): boolean; // (undocumented) @@ -2461,7 +2461,6 @@ export class KbqFormattersModule { // @public (undocumented) export class KbqFormElement implements AfterContentInit { - constructor(...args: unknown[]); // (undocumented) readonly elements: i0.Signal; // (undocumented) @@ -2553,7 +2552,7 @@ export class KbqLineSetter { // @public (undocumented) export class KbqLocaleService { - constructor(...args: unknown[]); + constructor(); // (undocumented) addLocale(id: string, localeData: any): void; // (undocumented) @@ -2669,7 +2668,6 @@ export class KbqOptgroup { // @public export class KbqOption extends KbqOptionBase implements AfterViewChecked, OnDestroy, KbqTitleTextRef { - constructor(...args: unknown[]); get active(): boolean; // (undocumented) deselect(emitEvent?: boolean): void; @@ -3225,7 +3223,7 @@ export class KbqRelativeShortDateTimePipe extends BaseLocaleAwareFormatterPip // @public (undocumented) export class KbqRoundDecimalPipe implements PipeTransform { - constructor(...args: unknown[]); + constructor(); // Warning: (ae-forgotten-export) The symbol "RoundDecimalOptions" needs to be exported by the entry point index.d.ts // // (undocumented) @@ -3269,7 +3267,7 @@ export function kbqSelectScrollStrategyProviderFactory(overlay: Overlay): () => // @public (undocumented) export class KbqSelectSearch implements AfterContentInit, OnDestroy { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly changes: EventEmitter; // (undocumented) @@ -3332,7 +3330,7 @@ export type KbqStickToWindowPlacementValues = KbqEnumValues implements AfterContentInit, OnDestroy, OnChanges { - constructor(...args: unknown[]); + constructor(); get activeDate(): D; set activeDate(value: D | null); readonly dateClass: _angular_core.InputSignal<(date: D) => KbqCalendarCellCssClasses>; @@ -150,7 +150,7 @@ export type KbqCalendarCellCssClasses = string | string[] | Set | { // @public export class KbqCalendarHeader implements AfterContentInit { - constructor(...args: unknown[]); + constructor(); // (undocumented) get activeDate(): D; set activeDate(value: D); @@ -195,7 +195,7 @@ export class KbqCalendarHeader implements AfterContentInit { // @public export class KbqDatepicker implements OnDestroy { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly backdropClass: _angular_core.InputSignal; close(restoreFocus?: boolean): void; @@ -254,7 +254,6 @@ export const kbqDatepickerAnimations: { // @public export class KbqDatepickerContent implements OnDestroy, AfterViewInit { - constructor(...args: unknown[]); readonly animationDone: Subject; animationState: 'enter' | 'void'; readonly calendar: _angular_core.Signal>; @@ -273,7 +272,7 @@ export class KbqDatepickerContent implements OnDestroy, AfterViewInit { // @public export class KbqDatepickerInput implements KbqFormFieldControl, ControlValueAccessor, Validator, OnDestroy, DoCheck, AfterContentInit { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly adapter: DateAdapter; // (undocumented) @@ -451,7 +450,7 @@ export class KbqDatepickerToggleIconComponent implements AfterContentInit, On // @public export class KbqMonthView implements AfterContentInit { - constructor(...args: unknown[]); + constructor(); get activeDate(): D; set activeDate(value: D); readonly activeDateChange: _angular_core.OutputEmitterRef; diff --git a/tools/public_api_guard/components/dropdown.api.md b/tools/public_api_guard/components/dropdown.api.md index 7de4975f8..a0b97cf23 100644 --- a/tools/public_api_guard/components/dropdown.api.md +++ b/tools/public_api_guard/components/dropdown.api.md @@ -68,7 +68,6 @@ export const KBQ_DROPDOWN_SCROLL_STRATEGY_FACTORY_PROVIDER: { // @public (undocumented) export class KbqDropdown implements AfterContentInit, KbqDropdownPanel, OnInit, OnDestroy { - constructor(...args: unknown[]); animationDone: Subject; backdropClass: string; classList: { @@ -129,7 +128,6 @@ export const kbqDropdownAnimations: { // @public export class KbqDropdownContent implements OnDestroy { - constructor(...args: unknown[]); attach(context?: any): void; attached: Subject; detach(): void; @@ -155,7 +153,6 @@ export interface KbqDropdownDefaultOptions { // @public export class KbqDropdownItem implements KbqTitleTextRef, IFocusableOption, AfterViewInit, OnDestroy { - constructor(...args: unknown[]); checkDisabled(event: Event): void; protected readonly componentColors: typeof KbqComponentColors; // (undocumented) @@ -254,7 +251,7 @@ export class KbqDropdownStaticContent { // @public export class KbqDropdownTrigger implements AfterContentInit, OnDestroy { - constructor(...args: unknown[]); + constructor(); close(): void; data: any; demoteOverlay: boolean; diff --git a/tools/public_api_guard/components/empty-state.api.md b/tools/public_api_guard/components/empty-state.api.md index c075bbf6a..3f92187f6 100644 --- a/tools/public_api_guard/components/empty-state.api.md +++ b/tools/public_api_guard/components/empty-state.api.md @@ -39,7 +39,6 @@ export class KbqEmptyStateActions { // @public (undocumented) export class KbqEmptyStateIcon { - constructor(...args: unknown[]); // (undocumented) setErrorColor(): void; // (undocumented) diff --git a/tools/public_api_guard/components/form-field.api.md b/tools/public_api_guard/components/form-field.api.md index 61cd418b4..766bf05b6 100644 --- a/tools/public_api_guard/components/form-field.api.md +++ b/tools/public_api_guard/components/form-field.api.md @@ -218,7 +218,7 @@ export class KbqLegend { // @public (undocumented) export class KbqPasswordHint extends KbqHint implements AfterContentInit { - constructor(...args: unknown[]); + constructor(); // (undocumented) checked: boolean; // (undocumented) @@ -327,7 +327,7 @@ export class KbqSuffix { // @public export class KbqTrim { - constructor(...args: unknown[]); + constructor(); // (undocumented) trim(value: any): any; // (undocumented) diff --git a/tools/public_api_guard/components/input.api.md b/tools/public_api_guard/components/input.api.md index 0d95e19d5..6c03f847b 100644 --- a/tools/public_api_guard/components/input.api.md +++ b/tools/public_api_guard/components/input.api.md @@ -66,7 +66,7 @@ export const KBQ_NUMBER_INPUT_VALUE_ACCESSOR: any; // @public (undocumented) export class KbqInput implements KbqFormFieldControl, OnChanges, OnDestroy, DoCheck, OnChanges, CanUpdateErrorState { - constructor(...args: unknown[]); + constructor(); controlType: string; // (undocumented) defaultErrorStateMatcher: ErrorStateMatcher; @@ -145,7 +145,7 @@ export class KbqInputMono { // @public (undocumented) export class KbqInputPassword implements KbqFormFieldControl, OnChanges, OnDestroy, DoCheck, OnChanges, CanUpdateErrorState { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly checkRule: Subject; // (undocumented) @@ -208,7 +208,7 @@ export class KbqInputPassword implements KbqFormFieldControl, OnChanges, On // @public (undocumented) export class KbqNumberInput implements KbqFormFieldControl, ControlValueAccessor, OnDestroy { - constructor(...args: unknown[]); + constructor(); // (undocumented) bigStep: number; // (undocumented) diff --git a/tools/public_api_guard/components/link.api.md b/tools/public_api_guard/components/link.api.md index 53ff10019..71234e3d4 100644 --- a/tools/public_api_guard/components/link.api.md +++ b/tools/public_api_guard/components/link.api.md @@ -20,7 +20,7 @@ export const baseURLRegex: RegExp; // @public (undocumented) export class KbqLink implements AfterContentInit, AfterViewInit, OnDestroy { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly big: _angular_core.InputSignalWithTransform; // (undocumented) diff --git a/tools/public_api_guard/components/list.api.md b/tools/public_api_guard/components/list.api.md index 70fbef111..2c4d68f82 100644 --- a/tools/public_api_guard/components/list.api.md +++ b/tools/public_api_guard/components/list.api.md @@ -55,7 +55,6 @@ export class KbqListCopyEvent { // @public (undocumented) export class KbqListItem implements AfterContentInit { - constructor(...args: unknown[]); // (undocumented) getHostElement(): HTMLElement; // (undocumented) @@ -84,7 +83,6 @@ export class KbqListModule { // @public export class KbqListOption implements OnDestroy, OnInit, IFocusableOption, KbqTitleTextRef { - constructor(...args: unknown[]); // (undocumented) readonly actionButton: i0.Signal; // (undocumented) @@ -175,7 +173,7 @@ export class KbqListSelectAllEvent { // @public (undocumented) export class KbqListSelection implements AfterContentInit, AfterViewInit, OnDestroy, ControlValueAccessor { - constructor(...args: unknown[]); + constructor(); // (undocumented) get autoSelect(): boolean; set autoSelect(value: boolean); diff --git a/tools/public_api_guard/components/loader-overlay.api.md b/tools/public_api_guard/components/loader-overlay.api.md index 96e7cfe9e..0cbbe37e0 100644 --- a/tools/public_api_guard/components/loader-overlay.api.md +++ b/tools/public_api_guard/components/loader-overlay.api.md @@ -14,7 +14,6 @@ import { OnInit } from '@angular/core'; // @public (undocumented) export class KbqLoaderOverlay implements OnInit, OnDestroy { - constructor(...args: unknown[]); // (undocumented) caption: string; readonly card: i0.InputSignalWithTransform; diff --git a/tools/public_api_guard/components/markdown.api.md b/tools/public_api_guard/components/markdown.api.md index 51a4f5288..86db71881 100644 --- a/tools/public_api_guard/components/markdown.api.md +++ b/tools/public_api_guard/components/markdown.api.md @@ -19,7 +19,7 @@ export const KBQ_MARKDOWN_MARKED_OPTIONS: InjectionToken extends KbqModalRef implements OnInit, OnChanges, AfterViewInit, OnDestroy, ModalOptions { - constructor(...args: unknown[]); // (undocumented) get afterClose(): Observable; // (undocumented) @@ -300,7 +299,6 @@ export abstract class KbqModalRef { // @public (undocumented) export class KbqModalService { - constructor(...args: unknown[]); // (undocumented) get afterAllClose(): Observable; // (undocumented) @@ -325,7 +323,6 @@ export class KbqModalService { // @public (undocumented) export class KbqModalTitle { - constructor(...args: unknown[]); // (undocumented) protected modal: KbqModalComponent; // (undocumented) diff --git a/tools/public_api_guard/components/navbar.api.md b/tools/public_api_guard/components/navbar.api.md index 0949a48a8..8b2388ae0 100644 --- a/tools/public_api_guard/components/navbar.api.md +++ b/tools/public_api_guard/components/navbar.api.md @@ -42,7 +42,6 @@ export const KBQ_VERTICAL_NAVBAR_DEFAULT_CONFIGURATION: { // @public (undocumented) export class KbqFocusableComponent implements AfterContentInit, AfterViewInit, OnDestroy { - constructor(...args: unknown[]); // (undocumented) blur(): void; // (undocumented) @@ -82,7 +81,7 @@ export class KbqFocusableComponent implements AfterContentInit, AfterViewInit, O // @public (undocumented) export class KbqNavbar extends KbqFocusableComponent implements AfterViewInit, AfterContentInit, OnDestroy { - constructor(...args: unknown[]); + constructor(); // (undocumented) protected readonly changeDetectorRef: ChangeDetectorRef; // (undocumented) @@ -168,7 +167,6 @@ export class KbqNavbarDivider { // @public (undocumented) export class KbqNavbarFocusableItem implements AfterContentInit, AfterViewInit, OnDestroy, IFocusableOption { - constructor(...args: unknown[]); // (undocumented) blur(): void; // (undocumented) @@ -222,7 +220,7 @@ export interface KbqNavbarFocusableItemEvent { // @public (undocumented) export class KbqNavbarItem extends KbqTooltipTrigger implements AfterContentInit { - constructor(...args: unknown[]); + constructor(); // (undocumented) get collapsable(): boolean; set collapsable(value: boolean); @@ -366,7 +364,7 @@ export class KbqNavbarToggle implements OnDestroy { // @public (undocumented) export class KbqVerticalNavbar extends KbqFocusableComponent implements AfterContentInit { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly animationDone: Subject; // (undocumented) diff --git a/tools/public_api_guard/components/popover.api.md b/tools/public_api_guard/components/popover.api.md index 2b1b9c00e..ae2f3e02f 100644 --- a/tools/public_api_guard/components/popover.api.md +++ b/tools/public_api_guard/components/popover.api.md @@ -122,7 +122,7 @@ export class KbqPopoverConfirmComponent extends KbqPopoverComponent { // @public (undocumented) export class KbqPopoverConfirmTrigger extends KbqPopoverTrigger { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly confirm: i0.OutputEmitterRef; // (undocumented) diff --git a/tools/public_api_guard/components/radio.api.md b/tools/public_api_guard/components/radio.api.md index 84ce177bd..333bb290e 100644 --- a/tools/public_api_guard/components/radio.api.md +++ b/tools/public_api_guard/components/radio.api.md @@ -20,7 +20,7 @@ export const KBQ_RADIO_GROUP_CONTROL_VALUE_ACCESSOR: any; // @public (undocumented) export class KbqRadioButton extends KbqColorDirective implements OnInit, AfterViewInit, OnDestroy { - constructor(...args: unknown[]); + constructor(); readonly change: i0.OutputEmitterRef; get checked(): boolean; set checked(value: boolean); @@ -79,7 +79,6 @@ export class KbqRadioChange { // @public (undocumented) export class KbqRadioGroup implements AfterContentInit, ControlValueAccessor { - constructor(...args: unknown[]); // (undocumented) readonly big: i0.InputSignal; readonly change: i0.OutputEmitterRef; diff --git a/tools/public_api_guard/components/scrollbar.api.md b/tools/public_api_guard/components/scrollbar.api.md index d2b4aa702..5241cb9bb 100644 --- a/tools/public_api_guard/components/scrollbar.api.md +++ b/tools/public_api_guard/components/scrollbar.api.md @@ -53,7 +53,6 @@ export const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER: Provider; // @public export class KbqScrollbar implements AfterViewInit, OnDestroy { - constructor(...args: unknown[]); readonly contentElement: i0.Signal>; readonly defer: i0.InputSignal; // (undocumented) @@ -111,7 +110,7 @@ export class KbqScrollbar implements AfterViewInit, OnDestroy { // @public export class KbqScrollbarDirective implements OnDestroy { - constructor(...args: unknown[]); + constructor(); readonly defer: i0.InputSignal; set events(value: KbqScrollbarEvents); // (undocumented) diff --git a/tools/public_api_guard/components/select.api.md b/tools/public_api_guard/components/select.api.md index 15e219c93..68e31e0e1 100644 --- a/tools/public_api_guard/components/select.api.md +++ b/tools/public_api_guard/components/select.api.md @@ -91,7 +91,7 @@ export class KbqOptionTooltip extends KbqTooltipTrigger implements AfterViewInit // @public (undocumented) export class KbqSelect extends KbqAbstractSelect implements AfterContentInit, OnDestroy, OnInit, DoCheck, ControlValueAccessor, KbqFormFieldControl, CanUpdateErrorState { - constructor(...args: unknown[]); + constructor(); readonly backdropClass: _angular_core.InputSignal; readonly beforeOpened: _angular_core.OutputEmitterRef; calculateHiddenItems: () => void; diff --git a/tools/public_api_guard/components/sidebar.api.md b/tools/public_api_guard/components/sidebar.api.md index bd67392b1..1e73f6a5a 100644 --- a/tools/public_api_guard/components/sidebar.api.md +++ b/tools/public_api_guard/components/sidebar.api.md @@ -10,7 +10,7 @@ import { OnDestroy } from '@angular/core'; // @public (undocumented) export class KbqSidebar implements OnDestroy, AfterContentInit { - constructor(...args: unknown[]); + constructor(); // Warning: (ae-forgotten-export) The symbol "KbqSidebarAnimationState" needs to be exported by the entry point index.d.ts get animationState(): KbqSidebarAnimationState; readonly closedContent: i0.Signal; diff --git a/tools/public_api_guard/components/sidepanel.api.md b/tools/public_api_guard/components/sidepanel.api.md index 8b598cca1..bc866d652 100644 --- a/tools/public_api_guard/components/sidepanel.api.md +++ b/tools/public_api_guard/components/sidepanel.api.md @@ -59,7 +59,6 @@ export class KbqSidepanelBody { // @public export class KbqSidepanelClose implements OnInit, OnChanges { - constructor(...args: unknown[]); // (undocumented) readonly kbqSidepanelClose: i0.InputSignal; // (undocumented) @@ -96,7 +95,6 @@ export class KbqSidepanelConfig { // @public (undocumented) export class KbqSidepanelContainerComponent extends BasePortalOutlet implements OnDestroy { - constructor(...args: unknown[]); // Warning: (ae-forgotten-export) The symbol "KbqSidepanelAnimationState" needs to be exported by the entry point index.d.ts animationState: KbqSidepanelAnimationState; animationStateChanged: EventEmitter; @@ -199,7 +197,6 @@ export class KbqSidepanelRef { // @public (undocumented) export class KbqSidepanelService implements OnDestroy { - constructor(...args: unknown[]); closeAll(): void; getSidepanelById(id: string): KbqSidepanelRef | undefined; // (undocumented) diff --git a/tools/public_api_guard/components/splitter.api.md b/tools/public_api_guard/components/splitter.api.md index 3d8c3c511..cefaf98d2 100644 --- a/tools/public_api_guard/components/splitter.api.md +++ b/tools/public_api_guard/components/splitter.api.md @@ -24,7 +24,6 @@ export enum Direction { // @public (undocumented) export class KbqGutterDirective implements OnInit { - constructor(...args: unknown[]); // (undocumented) get direction(): Direction; set direction(direction: Direction); @@ -52,7 +51,6 @@ export class KbqGutterDirective implements OnInit { // @public (undocumented) export class KbqGutterGhostDirective { - constructor(...args: unknown[]); // (undocumented) get direction(): Direction; set direction(direction: Direction); @@ -77,7 +75,6 @@ export class KbqGutterGhostDirective { // @public (undocumented) export class KbqSplitterAreaDirective implements AfterViewInit, OnDestroy { - constructor(...args: unknown[]); // (undocumented) disableFlex(): void; // (undocumented) @@ -106,7 +103,6 @@ export class KbqSplitterAreaDirective implements AfterViewInit, OnDestroy { // @public (undocumented) export class KbqSplitterComponent implements OnInit, AfterContentInit, OnDestroy { - constructor(...args: unknown[]); // (undocumented) addArea(area: KbqSplitterAreaDirective): void; // (undocumented) diff --git a/tools/public_api_guard/components/tabs.api.md b/tools/public_api_guard/components/tabs.api.md index ea0e1540c..7fd005ea9 100644 --- a/tools/public_api_guard/components/tabs.api.md +++ b/tools/public_api_guard/components/tabs.api.md @@ -66,7 +66,6 @@ export class KbqStretchTabsCssStyler { // @public (undocumented) export class KbqTab implements OnInit, OnChanges, OnDestroy { - constructor(...args: unknown[]); get content(): TemplatePortal | null; // (undocumented) get disabled(): boolean; @@ -113,7 +112,7 @@ export class KbqTab implements OnInit, OnChanges, OnDestroy { // @public export class KbqTabBody implements OnInit, OnDestroy { - constructor(...args: unknown[]); + constructor(); readonly afterLeavingCenter: EventEmitter; readonly animationDuration: i0.InputSignal; readonly beforeCentering: EventEmitter; @@ -144,7 +143,7 @@ export type KbqTabBodyOriginState = 'left' | 'right'; // @public export class KbqTabBodyPortal extends CdkPortalOutlet implements OnInit, OnDestroy { - constructor(...args: unknown[]); + constructor(); ngOnDestroy(): void; ngOnInit(): void; // (undocumented) @@ -164,7 +163,6 @@ export class KbqTabChangeEvent { // @public export class KbqTabContent { - constructor(...args: unknown[]); // (undocumented) template: TemplateRef; // (undocumented) @@ -175,7 +173,7 @@ export class KbqTabContent { // @public export class KbqTabGroup implements AfterContentInit, AfterViewInit, AfterContentChecked, OnDestroy { - constructor(...args: unknown[]); + constructor(); // (undocumented) get activeTab(): KbqTab | null; set activeTab(value: KbqTabSelectBy | null); @@ -274,7 +272,6 @@ export class KbqTabLabel extends CdkPortal { // @public export class KbqTabLabelWrapper implements AfterViewInit { - constructor(...args: unknown[]); // (undocumented) checkOverflow(): void; // (undocumented) diff --git a/tools/public_api_guard/components/tags.api.md b/tools/public_api_guard/components/tags.api.md index 690f8129b..dcd49eb25 100644 --- a/tools/public_api_guard/components/tags.api.md +++ b/tools/public_api_guard/components/tags.api.md @@ -41,7 +41,7 @@ export const KBQ_TAGS_DEFAULT_OPTIONS: InjectionToken; // @public (undocumented) export class KbqTag extends KbqColorDirective implements IFocusableOption, OnDestroy, KbqTitleTextRef, AfterContentInit, AfterViewInit { - constructor(...args: unknown[]); + constructor(); addClassModificatorForIcons(): void; addHostClassName(): void; readonly avatar: _angular_core.Signal; @@ -172,7 +172,7 @@ export type KbqTagFocusEvent = KbqTagEvent & { // // @public export class KbqTagInput implements KbqTagTextControl, OnChanges { - constructor(...args: unknown[]); + constructor(); get addOnBlur(): boolean; set addOnBlur(value: boolean); readonly addOnPaste: _angular_core.InputSignalWithTransform; @@ -220,7 +220,7 @@ export interface KbqTagInputEvent { // @public (undocumented) export class KbqTagList implements KbqFormFieldControl, ControlValueAccessor, AfterContentInit, DoCheck, OnDestroy, CanUpdateErrorState, AfterViewInit { - constructor(...args: unknown[]); + constructor(); blur(): void; get canShowCleaner(): boolean; readonly change: _angular_core.OutputEmitterRef; @@ -327,7 +327,6 @@ export type KbqTagListDroppedEvent = Pick, 'event' | 'previ // @public export class KbqTagRemove { - constructor(...args: unknown[]); focus(event: FocusEvent): void; handleClick(event: Event): void; // (undocumented) diff --git a/tools/public_api_guard/components/textarea.api.md b/tools/public_api_guard/components/textarea.api.md index c3a1a854d..fc4c6c26f 100644 --- a/tools/public_api_guard/components/textarea.api.md +++ b/tools/public_api_guard/components/textarea.api.md @@ -30,7 +30,7 @@ export const KBQ_TEXTAREA_VALUE_ACCESSOR: InjectionToken<{ // @public (undocumented) export class KbqTextarea implements KbqFormFieldControl, OnInit, OnChanges, OnDestroy, DoCheck, CanUpdateErrorState { - constructor(...args: unknown[]); + constructor(); get canGrow(): boolean; set canGrow(value: boolean); controlType: string; diff --git a/tools/public_api_guard/components/timepicker.api.md b/tools/public_api_guard/components/timepicker.api.md index 0021a9bb1..7e950d843 100644 --- a/tools/public_api_guard/components/timepicker.api.md +++ b/tools/public_api_guard/components/timepicker.api.md @@ -47,7 +47,7 @@ export const KBQ_TIMEPICKER_VALUE_ACCESSOR: any; // @public (undocumented) export class KbqTimepicker implements KbqFormFieldControl, ControlValueAccessor, Validator, OnDestroy, DoCheck, AfterContentInit { - constructor(...args: unknown[]); + constructor(); controlType: string; // (undocumented) get disabled(): boolean; diff --git a/tools/public_api_guard/components/title.api.md b/tools/public_api_guard/components/title.api.md index 56bd0c2bc..f6a126fdb 100644 --- a/tools/public_api_guard/components/title.api.md +++ b/tools/public_api_guard/components/title.api.md @@ -13,7 +13,6 @@ import { Subject } from 'rxjs'; // @public (undocumented) export class KbqTitleDirective extends KbqTooltipTrigger implements AfterViewInit, OnDestroy { - constructor(...args: unknown[]); // (undocumented) get child(): HTMLElement; // (undocumented) diff --git a/tools/public_api_guard/components/toast.api.md b/tools/public_api_guard/components/toast.api.md index c27ee0f93..a1f597f91 100644 --- a/tools/public_api_guard/components/toast.api.md +++ b/tools/public_api_guard/components/toast.api.md @@ -44,7 +44,7 @@ export class KbqToastCloseButton { export class KbqToastComponent implements OnDestroy { // (undocumented) $implicit: any; - constructor(...args: unknown[]); + constructor(); // (undocumented) animationState: string; // (undocumented) @@ -108,7 +108,7 @@ export const kbqToastConfigurationProvider: (configuration: Partial(data: KbqToastData, template: TemplateRef, onTop: boolean): EmbeddedViewRef; // (undocumented) @@ -181,7 +181,7 @@ export enum KbqToastPosition { // @public export class KbqToastService implements OnDestroy { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly animation: BehaviorSubject; // (undocumented) diff --git a/tools/public_api_guard/components/toggle.api.md b/tools/public_api_guard/components/toggle.api.md index f0ebf4ed9..2e00b9846 100644 --- a/tools/public_api_guard/components/toggle.api.md +++ b/tools/public_api_guard/components/toggle.api.md @@ -25,7 +25,7 @@ export class KbqToggleChange { // @public (undocumented) export class KbqToggleComponent extends KbqColorDirective implements AfterViewInit, ControlValueAccessor, OnDestroy { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly ariaLabel: _angular_core.InputSignal; // (undocumented) diff --git a/tools/public_api_guard/components/tooltip.api.md b/tools/public_api_guard/components/tooltip.api.md index d3b72f9be..506fdaac2 100644 --- a/tools/public_api_guard/components/tooltip.api.md +++ b/tools/public_api_guard/components/tooltip.api.md @@ -54,7 +54,6 @@ export const KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER: { // @public (undocumented) export class KbqTooltipComponent extends KbqPopUp { - constructor(...args: unknown[]); // (undocumented) elementRef: ElementRef; // (undocumented) diff --git a/tools/public_api_guard/components/tree-select.api.md b/tools/public_api_guard/components/tree-select.api.md index 7ac7b008e..f2f62978b 100644 --- a/tools/public_api_guard/components/tree-select.api.md +++ b/tools/public_api_guard/components/tree-select.api.md @@ -58,7 +58,7 @@ export const KBQ_TREE_SELECT_OPTIONS: InjectionToken, CanUpdateErrorState { - constructor(...args: unknown[]); + constructor(); // (undocumented) get autoSelect(): boolean; set autoSelect(value: boolean); diff --git a/tools/public_api_guard/components/tree.api.md b/tools/public_api_guard/components/tree.api.md index a910e9ec5..fe79ca008 100644 --- a/tools/public_api_guard/components/tree.api.md +++ b/tools/public_api_guard/components/tree.api.md @@ -161,7 +161,6 @@ export class KbqTree extends KbqTreeBase { // @public (undocumented) export class KbqTreeBase implements AfterContentChecked, CollectionViewer, OnDestroy, OnInit { - constructor(...args: unknown[]); // (undocumented) protected changeDetectorRef: ChangeDetectorRef; protected dataDiffer: IterableDiffer; @@ -280,7 +279,7 @@ export class KbqTreeNestedDataSource extends DataSource { // @public (undocumented) export class KbqTreeNode implements IFocusableOption, OnDestroy { - constructor(...args: unknown[]); + constructor(); // (undocumented) get data(): T; set data(value: T); @@ -307,7 +306,6 @@ export class KbqTreeNode implements IFocusableOption, OnDestroy { // @public export class KbqTreeNodeDef { - constructor(...args: unknown[]); // (undocumented) readonly data: i0.InputSignal; // (undocumented) @@ -321,7 +319,6 @@ export class KbqTreeNodeDef { // @public (undocumented) export class KbqTreeNodeOutlet { - constructor(...args: unknown[]); // (undocumented) changeDetectorRef: ChangeDetectorRef; // (undocumented) @@ -343,7 +340,7 @@ export class KbqTreeNodeOutletContext { // @public (undocumented) export class KbqTreeNodePadding implements AfterViewInit { - constructor(...args: unknown[]); + constructor(); // (undocumented) iconWidth: number; // (undocumented) @@ -375,7 +372,7 @@ export class KbqTreeNodePadding implements AfterViewInit { // @public export class KbqTreeNodeToggleBaseDirective { - constructor(...args: unknown[]); + constructor(); // (undocumented) get disabled(): boolean; set disabled(value: boolean); @@ -414,7 +411,7 @@ export class KbqTreeNodeToggleDirective extends KbqTreeNodeToggleBaseDirectiv // @public (undocumented) export class KbqTreeOption extends KbqTreeNode implements AfterContentInit, KbqTitleTextRef { - constructor(...args: unknown[]); + constructor(); // (undocumented) readonly actionButton: i0.Signal; // (undocumented) @@ -542,7 +539,7 @@ export const kbqTreeSelectAllValue = "selectAll"; // @public (undocumented) export class KbqTreeSelection extends KbqTreeBase implements ControlValueAccessor, AfterContentInit, AfterViewInit, OnDestroy { - constructor(...args: unknown[]); + constructor(); // (undocumented) get autoSelect(): boolean; set autoSelect(value: boolean); From 794cd69fc206366f0cc9a84c4a173dc2e0adf450 Mon Sep 17 00:00:00 2001 From: lskramarov Date: Mon, 8 Jun 2026 14:32:27 +0300 Subject: [PATCH 06/12] test: fix super() call in select virtual-scroll test component The backwards-compat scaffolding cleanup removed the constructor overload of CdkVirtualScrollViewportSelect; its spec subclass passed scrollDispatcher to super(). The base injects scrollDispatcher itself, so call super() with no args. --- packages/components/select/select.component.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/components/select/select.component.spec.ts b/packages/components/select/select.component.spec.ts index 674cc089b..d58542f3d 100644 --- a/packages/components/select/select.component.spec.ts +++ b/packages/components/select/select.component.spec.ts @@ -1492,7 +1492,7 @@ class CdkVirtualScrollViewportSelectOptionAsObject extends CdkVirtualScrollViewp constructor() { const scrollDispatcher = inject_1(ScrollDispatcher); - super(scrollDispatcher); + super(); this.scrollDispatcher = scrollDispatcher; } From 742d48ab3060263fc9a0f053b88662890d9bdcb9 Mon Sep 17 00:00:00 2001 From: lskramarov Date: Mon, 8 Jun 2026 15:02:44 +0300 Subject: [PATCH 07/12] feat(schematics): cover more deprecated APIs in v20-upgrade migration Extend the consumer-facing v20-upgrade codemod (auto-run via `ng update @koobiq/components`, manual via `ng generate`) with the remaining @deprecated symbols: - DropdownPositionX/Y -> KbqDropdownPositionX/Y (TS type aliases) - KbqCodeBlock [canLoad]/canLoad= -> canDownload, [codeFiles]/codeFiles= -> files (template attribute forms only; programmatic TS access surfaced as a warning) - warn-only: scrollableCodeContent (use scrollTo()), KbqFilter.required (use cleanable=false + removable=false) Adds spec coverage for each mapping and documents them in the migration README. --- .../src/migrations/v20-upgrade/README.md | 25 +++-- .../src/migrations/v20-upgrade/data.ts | 31 ++++++ .../src/migrations/v20-upgrade/index.spec.ts | 102 ++++++++++++++++++ 3 files changed, 149 insertions(+), 9 deletions(-) diff --git a/packages/schematics/src/migrations/v20-upgrade/README.md b/packages/schematics/src/migrations/v20-upgrade/README.md index 3cb819657..cb5006cd6 100644 --- a/packages/schematics/src/migrations/v20-upgrade/README.md +++ b/packages/schematics/src/migrations/v20-upgrade/README.md @@ -19,15 +19,19 @@ from three ordered tables in `data.ts`: removals (`KBQ_VALIDATION`, `KBQ_SANITY_CHECKS`, `KBQ_SIDEPANEL_WITH_SHADOW`), function renames (`toBoolean(` → `booleanAttribute(`, `isCorrectExtension(` → `FileValidators.isCorrectExtension(`, `formatDataSize(` → `getFormattedSizeParts(`), - and method renames on instances (`.openPanel(` → `.open(`, `.toggleIsCollapsed(` → - `.toggle(`, `.focusViaKeyboard(` → `.focus(`). + method renames on instances (`.openPanel(` → `.open(`, `.toggleIsCollapsed(` → + `.toggle(`, `.focusViaKeyboard(` → `.focus(`), and deprecated type-alias + renames (`DropdownPositionX` → `KbqDropdownPositionX`, `DropdownPositionY` → + `KbqDropdownPositionY`). - **`templateReplacements`** — selectors and attributes in Angular templates (both external `.html` files and inline `template:` strings inside `.ts`): `` → ``, `` → ``, `` → ``, `` → ``, `[kbqWarningTooltip]` → `kbqTooltipModifier="warning" [kbqTooltip]`, `kbqFormFieldWithoutBorders` → - `noBorders`, and template-ref exportAs renames + `noBorders`, the deprecated `KbqCodeBlock` input attributes + (`[canLoad]` / `canLoad=` → `canDownload`, `[codeFiles]` / `codeFiles=` → + `files`), and template-ref exportAs renames (`="kbqWarningTooltip"` → `="kbqTooltip"`). - **`scssReplacements`** — CSS class selectors renamed at the component level. @@ -36,12 +40,15 @@ from three ordered tables in `data.ts`: Some changes require code restructuring and are surfaced as console warnings without auto-fixing: -| Pattern | Manual migration | -| ------------------------ | --------------------------------------------------------------------------------------- | -| `(onSaveAsNew)` | Listen to `(onSave)` and branch on `$event.status === 'newFilter'` | -| `[customValidation]` | Use `FormControl` validators (e.g. `FileValidators.isCorrectExtension`) | -| `[errors]` (file-upload) | Use `FormControl.errors` | -| `[apps]` (app-switcher) | Wrap in single-site `[sites]="[{ id, name, apps }]"` and read with `KbqAppSwitcherSite` | +| Pattern | Manual migration | +| ------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `(onSaveAsNew)` | Listen to `(onSave)` and branch on `$event.status === 'newFilter'` | +| `[customValidation]` | Use `FormControl` validators (e.g. `FileValidators.isCorrectExtension`) | +| `[errors]` (file-upload) | Use `FormControl.errors` | +| `[apps]` (app-switcher) | Wrap in single-site `[sites]="[{ id, name, apps }]"` and read with `KbqAppSwitcherSite` | +| `scrollableCodeContent` (code-block) | Use the `scrollTo()` method instead | +| `.canLoad` / `.codeFiles` (code-block, TS access) | Template bindings are auto-migrated; update programmatic access to `.canDownload` / `.files` manually | +| `required` (KbqFilter) | Use `cleanable = false` and `removable = false` (best-effort match — verify it is a KbqFilter config) | ## Running it manually diff --git a/packages/schematics/src/migrations/v20-upgrade/data.ts b/packages/schematics/src/migrations/v20-upgrade/data.ts index 8709a88d4..e84c40d1d 100644 --- a/packages/schematics/src/migrations/v20-upgrade/data.ts +++ b/packages/schematics/src/migrations/v20-upgrade/data.ts @@ -103,6 +103,12 @@ export const tsReplacements: Replacement[] = [ }, { from: '\\bKbqFormFieldRef\\b', to: 'KbqFormField' }, + // Deprecated dropdown position type aliases → Kbq-prefixed names. The + // `\b…\b` boundaries make these idempotent: `KbqDropdownPositionX` is not + // re-matched because the `D` is preceded by a word char (`q`). + { from: '\\bDropdownPositionX\\b', to: 'KbqDropdownPositionX' }, + { from: '\\bDropdownPositionY\\b', to: 'KbqDropdownPositionY' }, + // ─── Tokens / function renames ──────────────────────────────────────── { from: '\\bKBQ_VALIDATION\\b', @@ -218,6 +224,14 @@ export const templateReplacements: Replacement[] = [ // ─── Attribute renames ──────────────────────────────────────────────── { from: '\\bkbqFormFieldWithoutBorders\\b', to: 'noBorders' }, + // ─── KbqCodeBlock deprecated input renames ──────────────────────────── + // Scoped strictly to the attribute form (`[x]` binding or `x="…"` static) + // so the common words `canDownload` / `files` elsewhere are never touched. + { from: '\\[canLoad\\]', to: '[canDownload]' }, + { from: '\\bcanLoad="', to: 'canDownload="' }, + { from: '\\[codeFiles\\]', to: '[files]' }, + { from: '\\bcodeFiles="', to: 'files="' }, + // ─── Tooltip warning trigger → kbqTooltip + modifier ─────────────────── // Two-step: first add modifier attribute, then rename binding key. // The modifier insertion must come before the binding rename otherwise we @@ -287,5 +301,22 @@ export const warnPatterns: WarnPattern[] = [ 'kbqComponentParams is being rewritten to "data:" — remember the CHILD modal ' + "component must read the payload via inject(KBQ_MODAL_DATA) (from '@koobiq/components/modal') " + 'instead of @Input.' + }, + { + pattern: '\\bscrollableCodeContent\\b', + message: + 'KbqCodeBlock.scrollableCodeContent is deprecated; use the scrollTo() method instead. Manual migration required.' + }, + { + pattern: '\\.canLoad\\b|\\.codeFiles\\b', + message: + 'KbqCodeBlock.canLoad → canDownload and .codeFiles → files. Template bindings are auto-migrated; ' + + 'update any programmatic (TypeScript) access manually.' + }, + { + pattern: '\\brequired:\\s*(true|false)', + message: + 'KbqFilter.required is deprecated — use cleanable = false and removable = false instead. ' + + 'NOTE: this warning is best-effort and may match unrelated `required:` keys; verify it is a KbqFilter config.' } ]; diff --git a/packages/schematics/src/migrations/v20-upgrade/index.spec.ts b/packages/schematics/src/migrations/v20-upgrade/index.spec.ts index 1d6b595af..85207d70a 100644 --- a/packages/schematics/src/migrations/v20-upgrade/index.spec.ts +++ b/packages/schematics/src/migrations/v20-upgrade/index.spec.ts @@ -322,6 +322,108 @@ describe(SCHEMATIC_NAME, () => { expect(updated).not.toContain('.kbq-risk-level'); }); + it('rewrites DropdownPositionX / DropdownPositionY type aliases to the Kbq-prefixed names', async () => { + const [first] = projects.keys(); + const { ts } = paths(projects.get(first)!); + + appTree.overwrite( + ts, + "import { DropdownPositionX, DropdownPositionY } from '@koobiq/components/dropdown';\n" + + "const x: DropdownPositionX = 'before';\n" + + "const y: DropdownPositionY = 'below';\n" + ); + + const result = await runner.runSchematic( + SCHEMATIC_NAME, + { project: first, fix: true } satisfies Schema, + appTree + ); + + const updated = result.readText(ts); + + expect(updated).toContain('KbqDropdownPositionX'); + expect(updated).toContain('KbqDropdownPositionY'); + // Old (un-prefixed) names are gone; `\b` boundaries leave the new + // `Kbq…` names intact (no double-rewrite). + expect(updated).not.toMatch(/\bDropdownPositionX\b/); + expect(updated).not.toMatch(/\bDropdownPositionY\b/); + }); + + it('rewrites KbqCodeBlock [canLoad]/[codeFiles] bindings to [canDownload]/[files]', async () => { + const [first] = projects.keys(); + const { html } = paths(projects.get(first)!); + + appTree.overwrite(html, '\n'); + + const result = await runner.runSchematic( + SCHEMATIC_NAME, + { project: first, fix: true } satisfies Schema, + appTree + ); + + const updated = result.readText(html); + + expect(updated).toContain('[canDownload]="x"'); + expect(updated).toContain('[files]="files"'); + expect(updated).not.toContain('[canLoad]'); + expect(updated).not.toContain('[codeFiles]'); + }); + + it('rewrites the static canLoad="true" attribute form to canDownload', async () => { + const [first] = projects.keys(); + const { html } = paths(projects.get(first)!); + + appTree.overwrite(html, '\n'); + + const result = await runner.runSchematic( + SCHEMATIC_NAME, + { project: first, fix: true } satisfies Schema, + appTree + ); + + expect(result.readText(html)).toContain('canDownload="true"'); + }); + + it('warns about KbqCodeBlock.scrollableCodeContent (use scrollTo())', async () => { + const [first] = projects.keys(); + const { ts } = paths(projects.get(first)!); + + appTree.overwrite(ts, 'const el = cb.scrollableCodeContent();\n'); + + const messages: string[] = []; + + runner.logger.subscribe((entry) => { + if (entry.message) messages.push(entry.message); + }); + + await runner.runSchematic(SCHEMATIC_NAME, { project: first, fix: true } satisfies Schema, appTree); + + expect(messages.some((m) => m.includes('scrollableCodeContent'))).toBe(true); + }); + + it('warns about deprecated KbqFilter.required without auto-fixing it', async () => { + const [first] = projects.keys(); + const { ts } = paths(projects.get(first)!); + const original = "const f = { name: 'x', required: true, cleanable: true };\n"; + + appTree.overwrite(ts, original); + + const messages: string[] = []; + + runner.logger.subscribe((entry) => { + if (entry.message) messages.push(entry.message); + }); + + const result = await runner.runSchematic( + SCHEMATIC_NAME, + { project: first, fix: true } satisfies Schema, + appTree + ); + + expect(result.readText(ts)).toContain('required: true'); // not auto-fixed + expect(messages.some((m) => m.includes('required'))).toBe(true); + }); + it('warns about (onSaveAsNew) without auto-fixing', async () => { const [first] = projects.keys(); const { html } = paths(projects.get(first)!); From 87d8127686421c7e63a23f8453e7aa9b00d74dfe Mon Sep 17 00:00:00 2001 From: lskramarov Date: Mon, 8 Jun 2026 16:42:13 +0300 Subject: [PATCH 08/12] fix: unit tests in formatter --- .../core/formatters/date/formatter.spec.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/components/core/formatters/date/formatter.spec.ts b/packages/components/core/formatters/date/formatter.spec.ts index 2fb1365c2..b6c161e50 100644 --- a/packages/components/core/formatters/date/formatter.spec.ts +++ b/packages/components/core/formatters/date/formatter.spec.ts @@ -2378,10 +2378,9 @@ describe('Date formatter (imports and providing)', () => { TestBed.configureTestingModule({ imports: [HostComponent, KbqFormattersModule, KbqLuxonDateModule], providers: [ - { - provide: KBQ_LOCALE_SERVICE, - useFactory: () => new KbqLocaleService('ru-RU', KBQ_DEFAULT_LOCALE_DATA_FACTORY()) - } + { provide: KBQ_LOCALE_ID, useValue: 'ru-RU' }, + { provide: KBQ_LOCALE_DATA, useValue: KBQ_DEFAULT_LOCALE_DATA_FACTORY() }, + { provide: KBQ_LOCALE_SERVICE, useClass: KbqLocaleService } ] }); }); @@ -2526,10 +2525,9 @@ describe('Date formatter (imports and providing)', () => { TestBed.configureTestingModule({ imports: [AllPipesHostComponent, KbqFormattersModule, KbqLuxonDateModule], providers: [ - { - provide: KBQ_LOCALE_SERVICE, - useFactory: () => new KbqLocaleService('ru-RU', KBQ_DEFAULT_LOCALE_DATA_FACTORY()) - } + { provide: KBQ_LOCALE_ID, useValue: 'ru-RU' }, + { provide: KBQ_LOCALE_DATA, useValue: KBQ_DEFAULT_LOCALE_DATA_FACTORY() }, + { provide: KBQ_LOCALE_SERVICE, useClass: KbqLocaleService } ] }); }); From 1ac6eb62f7675306d38b42de4f2be5f38348b2ab Mon Sep 17 00:00:00 2001 From: lskramarov Date: Mon, 8 Jun 2026 17:39:03 +0300 Subject: [PATCH 09/12] fix: docs --- .../src/app/components/anchors/anchors.component.ts | 3 --- .../app/components/example-viewer/example-viewer.ts | 7 ------- .../app/components/stackblitz/stackblitz-button.ts | 13 +------------ .../src/app/components/welcome/welcome.component.ts | 3 --- 4 files changed, 1 insertion(+), 25 deletions(-) diff --git a/apps/docs/src/app/components/anchors/anchors.component.ts b/apps/docs/src/app/components/anchors/anchors.component.ts index 01ac4075a..ab0230c4f 100644 --- a/apps/docs/src/app/components/anchors/anchors.component.ts +++ b/apps/docs/src/app/components/anchors/anchors.component.ts @@ -88,9 +88,6 @@ export class DocsAnchorsComponent implements OnDestroy, OnInit { private readonly destroyRef = inject(DestroyRef); private readonly window = inject(KBQ_WINDOW); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { const router = this.router; diff --git a/apps/docs/src/app/components/example-viewer/example-viewer.ts b/apps/docs/src/app/components/example-viewer/example-viewer.ts index 9e1f088a3..1275103b8 100644 --- a/apps/docs/src/app/components/example-viewer/example-viewer.ts +++ b/apps/docs/src/app/components/example-viewer/example-viewer.ts @@ -78,13 +78,6 @@ export class DocsExampleViewerComponent extends DocsLocaleState implements OnDes private readonly documentLoader = inject(DocsDocumentLoader); private readonly platformId = inject(PLATFORM_ID); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() { - super(); - } - ngOnDestroy() { this.clearLiveExamples(); this.documentFetchSubscription?.unsubscribe(); diff --git a/apps/docs/src/app/components/stackblitz/stackblitz-button.ts b/apps/docs/src/app/components/stackblitz/stackblitz-button.ts index 4ced050f2..8bff0927b 100644 --- a/apps/docs/src/app/components/stackblitz/stackblitz-button.ts +++ b/apps/docs/src/app/components/stackblitz/stackblitz-button.ts @@ -1,5 +1,4 @@ -import { FocusMonitor } from '@angular/cdk/a11y'; -import { Component, ElementRef, Input, ViewEncapsulation, inject } from '@angular/core'; +import { Component, Input, ViewEncapsulation, inject } from '@angular/core'; import { KbqIconModule } from '@koobiq/components/icon'; import { KbqLink, KbqLinkModule } from '@koobiq/components/link'; import { ExampleData } from '@koobiq/docs-examples'; @@ -41,16 +40,6 @@ export class DocsStackblitzButtonComponent extends KbqLink { private exampleData: ExampleData | undefined; - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - - constructor() { - const elementRef = inject>(ElementRef); - const focusMonitor = inject(FocusMonitor); - - super(elementRef, focusMonitor); - } - protected openStackBlitz(): void { if (!this._exampleId || !this.exampleData) return; diff --git a/apps/docs/src/app/components/welcome/welcome.component.ts b/apps/docs/src/app/components/welcome/welcome.component.ts index 13f2b8d62..27cdf88b0 100644 --- a/apps/docs/src/app/components/welcome/welcome.component.ts +++ b/apps/docs/src/app/components/welcome/welcome.component.ts @@ -40,9 +40,6 @@ export class DocsWelcomeComponent extends DocsLocaleState implements OnInit { private readonly elementRef = inject>(ElementRef); private readonly docStates = inject(DocsDocStates); - /** Inserted by Angular inject() migration for backwards compatibility */ - constructor(...args: unknown[]); - constructor() { super(); From e2cc2a8c430f3dace5b699f9a3ef5257df5a8df6 Mon Sep 17 00:00:00 2001 From: lskramarov Date: Mon, 8 Jun 2026 17:50:12 +0300 Subject: [PATCH 10/12] fix(tree): align kbq-tree-option content to the first line in two-line options --- packages/components/tree/tree-option.scss | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/components/tree/tree-option.scss b/packages/components/tree/tree-option.scss index 1fff3d258..424f80e9b 100644 --- a/packages/components/tree/tree-option.scss +++ b/packages/components/tree/tree-option.scss @@ -46,6 +46,26 @@ padding-bottom: var(--kbq-list-size-text-padding-vertical, 0); } + // Two-line options only: align leading content to the center of the FIRST line. + &:has(.kbq-option-caption) { + & > [kbq-tree-node-toggle], + & > [kbqTreeNodeToggle], + & > .kbq-tree-node-toggle, + & > .kbq-pseudo-checkbox, + & > kbq-checkbox, + & > [kbq-icon], + & > kbq-progress-spinner { + align-self: flex-start; + // (20px line-height − 16px element box) / 2 = 2px + margin-top: var(--kbq-size-3xs); + } + + & > .kbq-tree-node-toggle { + height: var(--kbq-typography-text-normal-line-height); + margin-top: 0; + } + } + &:focus { outline: none; } From 7b8cd5505c55baa24cb86d8f37d8a5a55c27df3f Mon Sep 17 00:00:00 2001 From: lskramarov <9027254+lskramarov@users.noreply.github.com> Date: Mon, 8 Jun 2026 15:56:29 +0000 Subject: [PATCH 11/12] test: updated e2e snapshots --- .../tree-select/__screenshots__/01-dark.png | Bin 39679 -> 39552 bytes .../tree-select/__screenshots__/01-light.png | Bin 41476 -> 41241 bytes .../tree-select/__screenshots__/02-dark.png | Bin 42590 -> 42694 bytes .../tree-select/__screenshots__/02-light.png | Bin 44437 -> 44402 bytes .../tree-select/__screenshots__/03-dark.png | Bin 53529 -> 53633 bytes .../tree-select/__screenshots__/03-light.png | Bin 55339 -> 55301 bytes .../tree/__screenshots__/01-dark.png | Bin 65894 -> 66437 bytes .../tree/__screenshots__/01-light.png | Bin 64232 -> 64347 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/components/tree-select/__screenshots__/01-dark.png b/packages/components/tree-select/__screenshots__/01-dark.png index e066efa3e63e7d64c7c9bb1619d72ac5fb54f6de..e01607b07145e5a4ead9d4020db06a59491e0a5e 100644 GIT binary patch literal 39552 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≫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 Vlk(41=!@oTSP_T09>_+<9Q=k6|< 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 literal 41476 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

y?A<26Yb1 zd&}~=KB(9v9jlij!qn=#ktM#-!uyTuNs7R(Q)13M2506peE0i&0b?!oP82B@7oT*Q z_dY{JH{IU4@b6Wq`QsLLdv98=$-sE>=jVVE{ISH)1qm`zGr}Dzfp5{U2qeDBY>wb4 z9^T}M(JuZ)oul=j>Wti-P`kaR6UqmFo4XeVD=JID3ncZS>>M1YlHx=cEZe%fxySK9 z!87=u#4?g}PF9v_e!q(G@Cio-0^^us2iAFrtn8c&AL$aGEh{`&hvl&xD*xPs(6!hUFD37W3?ne3{C@d zCRf3ahw+pDzW_BuoR}glSql)m95Du~yV!I62lp})(?vlDyc``!a0t_$SNdl>B_noO zq)lGpGKKc(^lF=gC6-7Omq5R~3kI<}7cpKZ$1fFqcxhRJ?x(yy=3RVIvL``M;wVft zngOAl5VpJ7mgZ-yI@)O;Y3<%(YHKP^QrXu}h60~-Cgyj}hN>T<(CPO4$X?I#ckE6z zWDP?e=bi9E=PBT|9`Sb^4qvt^|3oj5R)~*pOo!d#M8(G(oV2hwIofsgic=nln>@$D zR{3UI+g4U?$Fu+;>{@ES?M!?paVYMXnq$C+iSNidWrexR=n~Nl%pEg~fW#xClArmZ z9Euo4qWC{l=+Clpv%mQ2VXiUqjTvdy&A|{I_A@Ahe!|&xO8bJ2zTyvrE}w4*CZ8;X z(n`l%&X(K(K@yBBc4)O10alM#ozWHdAr~*NN)-B2C6D(!A{ZaaBk3#@LuZL~y{YI6 zZt>aof!moFDoA22;NzF!41!d-1uIQ(XM~B7O(U&2VNmHI(!2GCx;TghZ#45c-x!p?dYuk2=0weBo3d?hSYbOKMT0!__$a|e z$L-kS;yYtPpmo}S5JT8&E$RyLNK#f#J<+!oqS?SarbleHr7L1IyZVp2S8dR*#63QZ zCck)bMNWTfl^E`2f0XghSPGpdLkT+;d};DMAT8as$;@^ygydTtFVl}WcU1x(3r9R- zC1tMb?CR^M8q8_q4oknl<@NRP32*}=qhds70y0zD>Gl8?ye6inMQP0A(XB~w1;gdp z+1cqO#Ex%zm!81CxKz4@Wr&Kecd_B>u%+K&RoI=p3FUszgGQSP+oLl*6WcFj4UG9r zqUTrp4FF;AlpE%5W$LYdo~^pJr~~i{?L>IwiTo;hbnCL%tLeVAS(l8nYySL#1nSfc zMYUQB1r9l0B6!lJ-PMdPlJ_0yLdWjO5`2~Im6sZ>)OSp zCS0Bxrb7Bh8QF<7{PjWxX#;P0Bm=2}P-*y`*Gnd@=*9_9s@#rdZ0Xe=eC=Udz zp{!Bz?$#{=0_;-Dvo6pOy?lelb)z}vrL@fG+f^RuN1gGV&yqpC^M6E(0XaimyRh4iifTe#~T7$w%X{jq3(v%Jxn#>DMLTQry_IN}<{<2-M)Ik0yN^ z&gl5|Bn7e=HpQ86uUl%gr4mBpcDT4YL5ID3FWP>7vCCjc($U##!>QzVY)+%uu3J#S z0?ckf8VYsKWO1>VD89ipwQ=hrm%H$?){UDoGLZ00kB+^?8RK0t66M2W@ug6$%JV6M z;j6)~B`gtU(Oa40BdNyaQKE|}O}zj(Y3k{^)c$bUU1}?5cN8JMGFjcCAiOFl@mq2# z4m*=r#{7ZV&Yc!X?zuG|sB8eo?jp=0UDN)M&y#+Ef>$D4R_VZ$`xD4!hOL>*-ycj~ z5roLzD|sXS43HZvOLwq}GrA8&a``mx7t0@**nCPWZRZtcc>&_!RmPT5`~wI z?mf2aD*9gT#ZHj*3_%Mlx_8PW&q@?6 zO}`M9d+Ow;4Fh2zDPCPcF~;D$a?w(mH|eV*m|fZUE?2eU2>M$IBqP@f?2DtIiJA(O zErWil$Pd*4)hPLD%NQD?Va{n&M<+}D-m<@}d>1~=2sv4U6yAOo4#HJ9!F#qQ@Y25N z`$-J`0obTvVlxmv#;7mOocS+h!~c)t=izZCro+SHUIlj0j$@3@WM-o3;NOQIM*ahw PVba$z(XQ6I^XPv7|Ko>r diff --git a/packages/components/tree-select/__screenshots__/02-dark.png b/packages/components/tree-select/__screenshots__/02-dark.png index db3c4499bcef979ad0667bc098e3e6340ebf9882..86b28cfaa021b28eabfaedf12dee91b1a1f79155 100644 GIT binary patch literal 42694 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 j{SY(_pU-~AQsCzA1$ literal 42590 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 (7JdV?IZ!U-Idwxs0L?san9_#p;w=Se^EE(sx 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 diff --git a/packages/components/tree-select/__screenshots__/02-light.png b/packages/components/tree-select/__screenshots__/02-light.png index ec99988c95165dd3f77812bbc82fd9bfa97d1419..503abea00404d830dfd1949e2714b4aeb91c433b 100644 GIT binary patch literal 44402 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

FDbB*y-D2>R;$wpHn$I4^i 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 literal 44437 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

JU5%Uaxrg8UY7N~q9-oCn8=Kz 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 diff --git a/packages/components/tree-select/__screenshots__/03-dark.png b/packages/components/tree-select/__screenshots__/03-dark.png index ed6c702a83ac01513f5abcdae925f761ea46bbb4..20afc23883b6819dafec8db503a918422098093b 100644 GIT binary patch literal 53633 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

Qz3~`tPMHi^@%tJ_VN{ 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�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 diff --git a/packages/components/tree-select/__screenshots__/03-light.png b/packages/components/tree-select/__screenshots__/03-light.png index 96971091e8e16cd879aac3cb4d920c4b2fecc5e3..3eef02258d3827cb1bc0a5d1f78be21db52252d3 100644 GIT binary patch literal 55301 zcmb@tWmsEnyRI9cKwBJMpm_1(P~0h6ym;~A?h+t4#oaZyySo;5cM0z9&d&RO-<)gi zxz?J0_WqG0$4GKylqJN>oL`w_(((>ziYvE@`46Bl*Vir8ZEekwxP3H#% zjPE@Vji0d;mz5bocbusk_6hp5PxOut0PrRj?u3JGkpBO=ku`^Q|LmLH`kY-|9a3yA z>Ez@ji*m||2C%Kb!^i(bK#+VME-NehZZ}^w0oI{L4*8TCp{}kBt5Zc~7B9I;og1E= zogEnfSi)Oo1Zy`hE3C0L3f2mDDrG}P#>N|?H5sBODjd_l)YezlGAE|9L})SKMDKV`L7L|K2Khz*t*iGU!;UolfBCtH|U zjP@sHN7mAG737&H(M9;Rg&*oT&D85ED<&lBYH6sF;;50Y!klVek7uC5I)2H7gC)XY zepCVdvYs1U8xtohk{lk;%Zy}0y+1UUl+z)N?02xMR$?KDUv#*%P7E5t19-#o&~LBN zW{bS@s}~QnE7r;q;UQYU+b0T#dv%U3tgo*R4ac6XFG?zF6%On81o%;0T%3Z6fxLtd zSqMVib^Klc#|zh%W7mnh#+W4`jif?Op&U}8;EV{s-beQlb_e}3(;GWPJI*wL{)nls zX7;Jc#m#2l)Lkjz06&Uqkr6}c`@@~Oi59+%o34cF&?lrjUOg1!lnU?g0cwA@fZ%Hx z3>JkrSA2-B!**eGd*NG)Eoh5>Tp<7$ii(9h8~Dp>19mana_u@DM3#%&CA2J7eQ^NS zpBTYbXpPH58<}N^%pY0)eLZ=awe*N*7x6Nry!UORwHYN@Y`;^0Q~RK?QP?xe=AOswIaawHpz z%{TabT$LTMcyJTC?_KhG;0Nc+Lk)2cF8$MW?C7?3b{eVY)nsWbiuMl(gM% z?l&NEhH8cE4HQh2oz?TgPlaMHGfeEZPOMI+H%zwyQyyB@k>QgOChfLsp2?M%a{GPkMYvM9K3b4~#;0 zT_+?o*3jCwuymK$m<(t9u30TavWLD^Aw^oPy3uQ9^pD~cWGvi|l{m}|OcNzhd67Qm zYs7ig{3w&xQbt<=BNV_J3aTA59RBp%#OQ56_5{i!bUqD zrO$m{fpV1ClcH-EFA@<2oT(Ri2URV1{gS#&Qcq74$=4kC1FeU*b%pyf{?5Sk=}yEy zuq}m_Zrj}OsHg;{6}G%6gR@u#j1XghTfXe_I%Re(9nHfgFVUjt0j^wnM~sT$Da%*3 zf#?b@lezdF=^{LJF`3V`4z?%Q>qet$O}o2$iB3Q1(DRJuSBVwU5-|ys2KQKyG&#{E zzI9_Sq9EPLJu%RR?}$EEvJUKtS!pb?uejJLh(A9Jn=R&z)SHk%bcoG4(5A*(KPASc z$Eu70ZJmxzW~aNPP6~Iq!_)ci>Lk}-CFSs^DV?1CpDX^%tW9gr*;IWYzkS}xJyvX= zD2nXJC?+CHt+AeeXmnkW?vPb*+nj|h_tKZgt-B2t_aZ$!cD0*}w@|Ol<(WNc{87l zMqWg6-Vh+Yfnk#4t+qNr!=Pp*pdSJf@f|%B6rflx-Ie7%oH_n1iFGnu^(CMB5O^-n z(Z15KF{x&`!EUEvx>+s4P0wz>Wz*%6eo!K*=8D3pljdOm)U2{RZcM|5$c60j__F9z zye3K}#Upx#iI+ORZkFY>P%}RA{tBZ|BcZ?H{6p%SvP)8;B?l3QNMRe@wiou89$iP8 zo}K&ZCW?X?@MDmBq@8@nt^3b2aoG=>e`0yf=D`Dsg$&N`)4AVv&?m=s&PWFIM%)*c zOK<~=C#`Kru7_n(nUANNaT-v{x2K_{k-TYvhs%`zxC|sCTjNE{m7<|0!zj!D(4yZQiN9=oz!-j2 z@<9wGgH|&1`Q*H)RLc0v@O{_q$L0K}Q}sQsx09Y(aZVv7nMm2Tl6rS16~l}L&^{a3 zA;IYF<;kZTWt=r7+YxdB8marL3U+vCXk)=U)PDcIb7|Pf9^QmJ`%{fQ0nS&h&JOB$ z9GSGdoh0A=(NNC8A^wpSgOytKSOi3_%PXZVRI%d~ym(S$?!bnNFug)v8qN|jHa0`x~^}Nohl|UtS zgmboAy=H+N6=BvLsPG04b95fS<*k6c`4Es+Obj+s&j~Ca|8S8yxj(cJyUU{6wG+gNg z-uffGA4nyAG%v^%gGwHq8vdL9PKWJKJLq7vSO*;cOdtvAL;_*{*&Eit4+ zSL(@oKoQs7A^PO)kYsvI|Fc>X>ZZEXQ#3w;487PzFVJgyf_#SxHu&YL((w4bSHdS( zW|oH2W6^b9^XozmdbzncqdeM{L+ykM%OO*BZqF5D=U>ag$A>u6+Qnb_Z&W31q>;1} z-FVbNkB)-z(Nr&6MFRr2PXagscC{s!_U@90!9*B)Mi^H*L53-Q{NZ>pSb+1r5pss@7Fz+8zm;2yB*%UNFJkweF*fbickVXZvUCy)i5; zjcd={ZlmeerT{>skKUDgo3=nc{+6QAnZ4`Y+?U0cB*amjOV38lRmHB2D-XAixE`%H z*-6;oa4vg>ZJIL*pucH z>W_v;XD>4`MvT8%Wx1{>9Mq0=aU(o8XSj0Nmj*ao&1 zf}^XiFqO{K$L04|iKWhfKl;#;4F_`ZbVVRylT9xzV}rVEad|DkR8<_c#9eF-rCY1G z3-Nxr8XY}9m4cSI!pa}YqmF`xZNVaMldOw^nrJ$)M$cusj{5#3E8MoMHU-<~m zNMl9#E%Avckl|m1`|ItRSr@epm1nHz=4R1|I6X{<4;WQcwd^Cy?{mUPSR5?Jn@LN0 z8Y0Awd8205ui_}c3jvOSEz<(9Ycpfri>(_OHh!cOANkfoT(WF_Wl#~_z?Z|prp31nV_Va-7j$HZ z#OeojRwYu;C(~Um-DKA{D?Tu`<0?_h&-WSJUX=aDS#cW{tFCvlOL3onK>ksEl=kAQ zrEW3pJf6y5$tGKQ{D(%VJ;2mk8JDwL-o~ihFO;|EO$hvp_Tw+W>ZAQEYb)?YfVemV zwmcypA81aE?Gw=X`l_Q`~X)dp6*{Y7>AW=mg zd<*7IB6qO#&{29KahGe#*my13K9K}w#{hV7O%R7W99+8_cB=pJ0bn_ z2-9&^;G+igk7{wkzV5nhkh_|uJ-jWd0(zD-rx=wt zs3F1MV=Hs{dC``6E?i~%0w>+K7!Ladq^0Esaa-7}=dgEj*~=K#@#Z^1lTuRPp4*nU zKGi@6Yx*+g>~thAH;xP9Tyqk`Q`3AA|E6)~D!DNTP9;|~8{+%5E0ehIgfW;$-B2ES zuFW>u=HUUFsyf`BZz1^TE+P@=qG$x1FzkCR9KQd%@cF99F}BLDZ#XqO7L)e{PpH|h zS=ywjUURNO$Ei^R`1so>PEJA16pmObwNMeJysQm3(H!$TIgiA>n zvTeOL%0hmhM8G7b^rmh9I03SGNm*8Pams(h6WCA4leX0O*zkEn)Y5nw zh{1J#y}d@sKqV(xAQ)Wuxu&x0>?ZH%%zq9t?5{cdAQBi$aKdA!ah(0!z!+Fb`16vR~FL z#rH|@cbRzC6Ne+bLjq5Ik)})x5r1qL_FPd~Z|*zqu4XE=F5r@c*6`XBPRBvg?tn@<7P40F*sWgngj;-%G-*68O}Cea zEvWp1ke{+N5?hyxnXgq4IJ;6`hY>6*cZ5mqb$|FmdE}gK?Kp`Dt`jZQxLm9z$&Lw` z(GrErsc+`_GCSoy>|m1)H%dmIK9BqU47ZoY&}bhNLsqNcCb7TbIO<;ng&lZ zZ;_l%uQxl8OGLIiQC!`*~_A? ze$@HAM&7^Avy=~5x9GCmsXh%WU!IU3eg8b?TA`INI(~_zPev}E8(c>8+h1K)p7Ndb zMoklthQG;pt#rTAOwWf=wQn<SPAy*V4TnW6094u zKb=pk@q8Q{ek!Lt&xB({k(c-t)baVLC$>mq8$8s3E_?S39&)96pUx3#QP1gA+`%Y9 z*y5q|`z<^9vSfoYJ61E1X_?%rmCKpOuftrS(ZWNmXL~?JnxkKe{6@63@M>xChEu}S z69Yxr82rG=sGWXF-XEa?E&m;n(+2BenlBFNt|HzDAXb-vJrGF*_!!RDt@qXQL5_xh zYpG5cm&BQ&+N^ngv}<-Y^4uW#1765HSQ7#H*2(ng+h$nls{0eG_uORpnP%tRM=!4| z(~G^19vp>lx0XHmH5egG%Lro+>+zExIl^x}%oQS<6%(YaTMM^N{rdw1WXR_z zc0VdI5}93=YO?G?(ROO5`mVJ5+8RGQJZwTRdrK#upVuMlcB~mFs%NEQCTuUn?3Cvj^)7m|o7fnMxjsrM@mfG5J_qFFH)pQp zrXMBVHXBT$Is9G)_B!jFM@2te=h=Mbf17m6x7PFfmo$Bdiu9$Y8Lj9@B*MZrmSoDW zK)cUQD}97@@YIp}Q1-j7G6+G25P@$U=pY!sF3TSfNxae0q7SX65&hK5G z1dOKfj3m@8^-X^?VOqQ#9GTSlXz;q=7TDIh9ozpxpCWjIew)#BeI(}a=NTWI^4>$( zm{F_l_9m*HzI}fB8Z?6r(c7Oc;qbh8-6Dl)Uu*Mt2?$5ZxVok0o$J8crJN9O(|ANu z0FL9PttzN-GqvP|=}W(pM@N6{Fgu-+g!T)NXH{K=@dngS>YTOYj9ca8vXZaKKsRc1J9&cuD&b+p>W76*WUZ^r7#MRnxr$&_;19y988#m}d zm={qKCS%_GDzsW@s#Ymq()M9XiKnZxA{Ef1wNt#%s3Q;BsXA8g8QrxiJce|RbwlK8 z#I93{4Bn`Xe?GtL2~vM$Ycb7@RmuqLN4q`n{lmLY{cHpwkpTtBq#jP`!~Kp=4b6rnt*VS-Mz~gTD3pg|4M|{Mkat)ADpnS%)Vc`99BeczXkAQ%3ePl3Po*`(*MO)r3 znBqE7qD!AXLyQ>KGF~Tz?E#1FueLRo!R7Fv;ef)TdJ6;h9C&|I+Z#T6log_*yK#-p z!_}_6Fnop+B(UnD!BeX>*NcU5J#C8`Nn^wKUZfd90_~Sk2{-V#xR}UU`70_bGuKrW z)ZtkVERD<62c=MS?o?udCF5D>u5es|hF1PHS^VR1x$VczH37wQ5C znK)jejV%0}#}$MT3JipU_m(@LSbyj%d_eTZSr>xIRO0#I!aDurHuD}}8tvob(}c%U z4YwacTkWJegRayIL2U^u;HOzmDyZ``7xN43}h6P@G#`? z@URh?2P$_48)yKDKk3TA^J37~VFJx4K**!p&;-!!Jq#K&4h%#;|DQL$@4@KOl>ZUp z%!J;SkpQ(OJjnMNeIe3AQldM^LL`$PN`A@+&gL0m z&CX&X*pg&oErtxyTF^PHY!L#MK4`C6=0kHH$G|5k6&3cEMOJ7&_Ko`Qy@-$Utpx6m zryrJo0toSD#(Fc+RTu*9@}|B%U%&~qWX9h9p;aF1eks=Q74!s{;yPlT7v}wbQc=N% zB?c_PgWtJZSuwyhGU-(!0!*oGC7}cSZxQFztPtl92{Oik5sU+)4m$oXuQ~L=cPIs%4C&-`}OeK zV{#p-0x%~KsTJYf!f^g?&u;?GJi$W2`%`1%yR8LDr#GTB7`h`F9S4>^sOFPry%H8G zv)Rw7{^lOD*#1qXE&u?(H)bp91(66&X*H4nnEVc&)ZXk_q{R+$J0eLLw#v4afXlgZ%!2cNWAwLGS(OoW zH*$_kAuS$=(aZwr3s0vj5MY1Lt48kHyq#!25l=kfYm3($f9Mws+ok?oi z07w$lqAnSl`{EH~b2WgzH@9X60Nlx>BD9LeIa5+*9Lma`@UNca%JycbN$)ZBn5Zo_ zKEgln(y$SSA}KQUQ)>;!yw`4ReX?bxQ_)FENW;uXBaKN~=Hdal+&E&;CUl$f&zIu{ zL1zx9j=j8|KIKc-kw0^z-3k*fSB!m>d3%QOS43K?ZlD{-%1zEEjC)~urUQh~DW)_& zFUpdE6$3-lsJ6yamGsKM#Mr2cUW5_~=#;<|FPHS_@Bi=t`|gAM1h1h?r;T0z$0RO( z%CexM_kX7;isnAo#56Y<*@OLmY3|O9{|5^&q0}9YSrZxP>8mOTWq2DyRJ)keSn=86 zmK*qP zWZzq*K+`1?=d%vSnqq6b$o93>s8hg1blrdE7-vZi3qwZJ3t1HjR>gFYm_BbacaU^E zLpsKw#X85Ex!B~7NJ|I;Pq!<{uX7=ESkSDk+H84j3lD`r&isjQ)Ty*W+W~w>oBsqiCBX#b3pU6-CYPe0k6X2!Su9>bi8s4pS7wDo;oVVPX9@{P69yKBI%t@oImbglZ%e>$wF?b<+?|JhB~tau+7ZvH4CMcI zmO3Q<>l_Rh_>d}HKtZEWV8iBWVmJ4&e^0iUCg3NsqS<^a_d@jL8ufB>jdM#;*pJcn zL2a`oo1P`KTu*yGIYpE!HhD$V zUTQLT3I@@qfK0@temi-2=(f-6F7-y=svXmMe~5iqedT7Or0p{?G?&Pi!d_ z_@nN34F~gAUZtK?3mCyulcD+t^6fD2cba7UY|*Dn3}PfV5#Xh1jI1HjRZMagxJ;eJ zxNg1QB+<}?mB&#n%jGY9>(vjxJApI%3IgDN9o)ez8A}$&)6IF2 z#x2l~do5fam$5ws_)_MQPPc`l(6x$Co}>KSLd*eHP7%6ZCbrRDe!D?_x6XN`yx6URcd0t7KuDkJ68A{h{6(=B4dy z+jMdVteIo@phwIG8hqMt!i@&K3mm^YpwYU%m!F_sB3mW5Iq ztumRV%k9wrrn=5OF)qeIiGyvMNOyJe6u{38JeVhFpeLNJbRTT6J3IJ141l%-KKN?i zLd!)n;=&xasxzqe%^pzN4kltO=9FSBrUX}t#COUH2fTGbm*)rFXin#_omnt zst;YSGLz*?*hkVPm>fUPkAdwj9Yg*EVwv=&1trcVAU&bkT!e7R0zX66n7o%;TYDB} z9@8U}?JlOo@s1|t{qOQ|d*?SRW@ZmVkr?~)hp7D9eA`Ns`&>BIM5qGY7T6xUIsdvw zA_|2nLLO6pv-YJd1vQ#>?u=msC5LZ0YWICkOp-~BO&8yXkZKf_7@_+O3zOX1jaF8v z=W_|>I{K*gGJJP^XQAPS!*zSPEe;%Pb#5!vdrnz$$dEK>6Bh&?V!yARd6 z>foXyRcOX4Ews<`@~*i~F2Sv^qjpf9*sGUahxRs}K|=z?|6=d>49y701e<0){|v`7 z!fdoBYRRc`(>E@*U%n?@K8&9vQMIR*lxB2%>tpoh0*Zq$XQ2ygF~8|Oa^(1)nQF$` zM}n2#`%*odkqv!Ab5w+nn@{6tsvR-9fAcA|o;kX(ymbC#KK9Ix+60|6SB}FF`d~1e z#8bVp{+u!5rS|iSR(*c1zkNm4=Tc*6nZ*5$P6P0pE!e+C5)4e%(!gldX8nHS_F%_)}0UOc_4 z*}`>Mqv$YGeuxt)dU#V`uvzzW$KQm3eocd5#hdG_1jxZLx}d8{^!>%H^j{G8+e2_4hN#^4B~?wW@*LK_O$r zJR`^wXu!H(&<5Ze39JB}`6>uvFFO{8b0?$H7XJ0c#VB>HZ$i&;2y}uZ+?(n5ot6$cOd9=vAofyIkqK!&)DVnWEmNX zT~(X3Uy|Jp<8B_=LA8pLt~oHFWA6T|%sI1@VPKw-j6V=NkHQEi>+w{&h~$(2P({oH z?X??UhXf5UVdwPhjl0)Fyn$d~Lac@nJ+p5M(4 z{@gBW?7GaWmM?vAdC+5gZv6xC0vUVv9WZLn3E0+lxE^09CJ+O^s&AWN<1&^%j% zYbvf{tzGuvGwYYs+s=YD50L*Z&ng>Tzlj8bZ`2&-8075)lYkW5`8PCDW_OOXAil4j z8o8B@r92Nervb2#iAmCQaQM&v2DXU+LV?p4XH?XTBeYT4J-v6Rcn98RC3wMmV&msAzfqVUQ+t;4+Gb-M_|bBRFbt$tnc+#ydp6c4WrWOm*wx~>K! zV!SU$E#gLZJtZtAvAF~W#ORoXI+^B8aQ>$raE50o&MZ_Ka{#XbG;k5oJW|Ey2N}l^ z_Ql|6C2udF?0B2u*2u6#O|&+~-r!C0p1Lc7EdK0t04T3`ecOk;e|i`XAcQ!70hexK z-IYjm((C^qmWQH)Nl6?L#t2P(ATvp+Q5^Vm+u;+O^doA`9Cm+52+(rb!Zhrre4HGN zM?Vr=tzVD74NaAUwU$w=RlEEdqy?4-Z~UNGuH(E{4+ym3%sM;&wb)o=R)8i(oOqLg zdkejzuOiqm05d0eJNvcjXM($@EKVQNUv@n9-%aVbT)$m6c28E*t%ITQAG-y~#wiAM zTWDCESw-J`i*yAzC#<66rf?)DOwbh$dc6{9_E%)@X@VM;t3n<3$Aj;kW8rL!8#};U zOq8$gBUuB2sMKFZ_1eR0VxuIV3`~fYTBm5K2UJJW0s|j3l|Z)l$9Pp&oc$qE^5w~# zbUcZa+ysnXXooL+SC z71&@J`%tB10ajhh@dJ~24gWfzMjcK^zeW2{uhzlTuFCs^BNx1WuO7`Mf&cuB03GI- zrw1YV)K{b$Lw*R6I~+gz(A`ie>sw#m@U+MFLX}isacqPSYm=%Xr;dlw+J)Cvi!AZF zt0IE z+EjH?3Ww1Afo+l4c$0Y@rX%&K=$*|Wi~IG$+Gw~jIZ=hD;%F7W#B_*^r62LWpCh6- zYT1_Bq!JfbK(J5qacZfN^ySgC>j5;k>!PtUC*gj$Q*=U-oqA#fqbzM0h#_CaV6AXtMruJ{gn| zw(nBq-!hgv!?NrDj049cFtpS)#@7UvIBii<{8tp&64-W|*jG1)0A%J_^EpuhA`&1> z*cCb`2S$9a5I@~S0=prB*)&9doy{$`KP0-k`?SRdwizEOXW$U5bnUw!!UBXGnAxcR zH|p_k%NwjkWnx;0rUrpAh4Fd@OvvqT|1z{(nM<^XtHt=6u<&NZdhZeB?2?=+-ESd! zI}208*cgX=6WH)H{Phc}`v$`RYT=rTvN<=^HIi7opThF|i!jiv&H)pQ`-i^_NtxNj zwJBHR_tA8IMPMAmWVTJHbP_Pn)rDgB^1(HtO=R%AbP+H^agT7Iza`Itx_Xk+R~AM( zTs4(g{6Bze|Nr7CLw?(gKoxK-@O<{P4_d##{|9gdxZ_6t_|Eq1fO*{lkB*Us4kMlw z(AY6K*!KS>S4T*h7R?`BXlrm+a8%T!KmDyOA5;{UR@Z;s+wxQfH0PG2j>f44{av6d zL&+5p*(bn$j2vvcqE>i{E8vF@Du(iS|KCs$^W11B9t!KA;EM1I!0|h^)i0I8G(_(N zWog??zy#^)J3jL@KqjS%%6k_8(UfH8{M_7E03e>38Npj_<103l$npR7&gXc${0|m@ z2mnloKtBw9Be%rI8W0y7g!I)xbYBY|kZEA0>5Gd?q1(b}ZqGnJ-XmS?Yv}eYY^57jNkXh%~rroma5`I_q441ONb?1mtU+K-oYCa1ZCZEQu zA>ljA;rz4uAPZ@La*RrCuL39{6ML_<~QHpGZz_N$H0{kPF(DW}W4Bolo5H?yJL$I4#Flku#R z2h~N#HPl%4e^$Wv;cIH>TwW*HQ2!SI02XPhP2y5yg#Wx+V-59eQtmm$zQ~ik5*FwG zE?C1sap+!o3}rll^^7hit5ufHXsgTPg+lA>pF4FpD6f$&t3dC#t*$hW&R*mw#%yoFv@s6y!7x>+X}V`Y}Hq%==Djs=e;k9VWNK&e^fwd&_8P zM7ff`Uh85MIOKL16EEE_uX`{0z!Fc}xc5iFmmK@b@4bKVgIki!gJ)BYc6eCtQj*kP z&e{@3aN<;9F*yid7=W`oa8Fb)2)yoI#20#+mV;ee=xeg^egpf7{&=5yI}?@*&KO-r zr`D&Zu~(aE)X^j2!o>Fy`pQF3@$2T#9olzRfs^~m1v8)SB?ku)x{YPGNYpFi34wUX z{nmY`Dc_d#|Hj8mln?+XQlNGjxpfSDVz3O0El202#ibY<=9JAAM>4Gl?;YWtXdi$9= z)icel+|?6>h_Ui?xm;hRRHK{v2PP0!@rRJ6W0W>ySw%4&2qa9l>Ur>PT~b)(oU-L_EQsU{AM;McZX-gKOs$&%MiERmR& zGHd>Nw*4w%DQr3&#w06P1A5C#RdE`2xrSC_j)^mKTZ{+Z)SL5JEJgnfuDFsH*VWsP*44)a`K>aEbhZACx>AU1 zB1$!FMR_*RUkCdVu?gO5XkaVhLWahC>Xqs*^n(KkM%XfR{l*I?+f`C|zz03tRm<}X z%Z?n<8{C0eta}~Lwn8~0u@$2Nju+GhmknNZhu;H^;ahAo&>7cz52))cm+G%v#Jj1C z+NB4=;F$vNaOzu&B~>XoIi4x_KWsJew;aYM3xvzF_dvPV*xO@L?aUF|$*|FAI@}I; z^?uEG_DKC^Y@Rwamv!X%GS+07VjXXM47i}&ZQw;H8S9z(KTxd;Ho#JrvnNq23#7Jv zvAH#bJp_uLAG4gU)aa<99Q$(Nj&?nshba~OxS6cpEXQK{HmJe8H$8no9LCkyY-`;b zRV{36rJ4$DhA3GDZj~yTqJx&&LsdIEWgw)UG5Cww_$55bG}w>`(!Aa_N_~~0E~WLU z#mUu!0z%63Hr%Qvu)M^znunAtW~KW2Eu}PMz7E2y>#$g#Ckk$#H2h%q`mq1A9IH^x zHV9NhBz8aM)BUVcMt$V&*lNk|p3y}+mjn7Y&?@2${l5UM6V<2J1{#`?A^L49e_;#H z91U58l`*h;>Z{&3f|5smCI#=sc63LCcC;#E$oN|oIgg=TArYs+x9i>B)UhGdqFv&x z{LvIPuFmL;41C}h{k^d-Jdb;XueTP6duUXG9X&=NUrsukRU~pxHvdD0^7P>k3a$b$f)OMl6kUNCIZ6(RnEPtjDNJn z$K0J2ZAnac+jE&u+_yPP$oE|@dIjr6;h9h^elpBBs+5=iiT3a>ke^8YsR(u3Y1Z1X z@8Y=jwl9XOIX4i0Bj5hGsQWh|OVyUQd~th3MsbEZk2dMy%jKT4u}NTthG;#C5i%be+?6hBPca@)=%DizQYk zZEY8FCk7%R8aT4t%KuhEzwf;h!>zaEp`gRKgiC+0z1Uh?u~S(mxTI%4UHZptrIK5G z=-!AL&qrtsksX^pnmXV5m(_Zne^_oVST>Z?#nQ}n;?mP+dDT4pZpdMZu@5Yh0B$)y z4&c8TvQTH&S<{BVY!Jmn+I)&!DokYmmIhkvI#ue zdlo8fu?A3;=)aP7-BOd);7LbBNTHsU+1^r(h4Ci*pj}q%(Cd;bwwNV)7J)sMCsb`C zrt6r5TNX)l9J(isMNVehve;K{*-daMQT?5zksHW1F^q9*B%wML_jqyTvR_Hd9q;^N{5 zk0@BX;SzmeGZzN}TPPtDK56En+ZAm+2Kso}MtMj#(L))R>HM*qVHxS4*Y4#}_}~9s zP$gT1S?X}UjI3pIJ~DAY{WOebsjncX=%&5Hx5e!*D9G@A!I1PHL$qkT0aN40uB7xJ zS#+&ZEfh{gTTD2eqg-1~@rM0lr9Mc~CP7zQX%AvN6&AYAIjW!xIVh_-SCzea#}xaH z#L@F~hGLSpyU<-WM7i3ueS$g=huX)d#w96vbL~cDk$W@y`ofE`b8U#Xn1tNlca{SdEI$-I>)(M5aCdE0G_=taQ@N{&3y^mvD1$A|gO!UELM+Q)))b z%P}}B|34X;>D$t9hmxI+R1DPI6YfZ^7zblpmTglK>vq~4B+*7YcO=SQ_(wQPmCJ6X z-r3@OH5;wr(p^%3l;5c4eahQ~VTG8n#gu%x`jZ8QRD{c56o@l`DwMAW38uenv3uYK zuQS#cyB;2EYBSe4S1Mk%b40At+0SPqOVDU3)E49F zu~1X=P5Kv&6PlCxEEgFp6}3}s@T;(*4&NfN+~glzSK8(FbzEFKx~!kuw$|;aNsU5` zrYdlpeZj72@0EAa>G}t!A)gRvUgtHMJJK9jpADP&{1+`17){*G% ztB*bmi|Mm3<56TwV;m(|he%nl2||{7qch@Dau$u?^X0mQTN@~Pf{UE_d5jXgbYbMv z93Mw07d5neMIPVJYDQ+7d=G+*(V@)6IzNiWlzOg_b1f(xNuxVuvfYfFid^bA-B3VD z6_Ig3PGE}$Gr+WeNwSlUX1yMhkvVr~9y5AMq`5J-_0&}W^3&+vti2eAp!mW0+ZF;Z zVem){YHNl|n|tMiGPJPjMO#1(600uTp>s`tLeD>(qc;>Q1D!2@DYq9{$N$6wU9K@a z)-|`-yO=^LF#5-`a`Cs_kAVRAe07 z``fc#jBfT0?5JbK$PRLjT_I8EYAE)}HY8jrEuYgh<&Cv!OFh%)u(p?U+DQ(6I$a*E zqQJLj<%sa{F1sMC9yn093A|2RT-!ry;`nw%KI~TaRw6?s_(?A!^QmyHINL8VEnvFw zU@4bpP%SODou|FNb|8~aT`i8r7I3mxwJs|ywjT=#ADkalP81Qg^_a%n*t}S%WcnAb zG4?htylXJO#|LlT4V6EoDKm{`|Y2#Gp_pOBLM;9vi{G3*)6C#rfU8=th zi2ArVHWi#ZEkPcs8!M*{k9t&bVHP_9bg8sVTC1H7B#Rt=97lSh z)s_FIzm2Bb)?v6hHXY7`5;UDnuFCLWxd=@@#mpJAaZZWtrdkHRC*PX8x3yd^aSz=$ zm&3-p#$8a`eBOdt%6ZD9E-hNF-81PKgUFPnXD5w1=maAnp`31+D#o~NEM$pPt%NUF zA$DAk*e)8$xf7UBlS=0T26$>+^Hk)b%96Oz(5@Qh+*LyGbrA=0H&UYGbTas%%POcI zW@l$D9vSg%;)liyDJe-Ri6NveyB5=}vn_b#b)hQa+cDf13VM27YaB5I7yU;z#dQ1< z$@pu!ZQZg(Qf3Sf6C25*qLI2M~9(F}Y5W43V|Loq3H%!f*o&ytd4siGn_eBod zF~o|nauRLPeO{`Oqo`|PD!aa_lcNX)BBLPYPR`#gJnA_rH0HNFLK+32{nmzbREJ%Q zhAxc}$gzpxlF|hXQX0~Xtg>c@+4y^MRZ$9}$e*CrE;?AqIeblEOJTAq-?xl&vz(kn z>A-O5NDW>=^Aqs=2ppBa3UNqlu56W(8!6~4DDDx}&AE%Ttrl-GlKPzRA3R8*&_pb0 z=K13BmQ?t|t)uJlG;s58yYggwe3&MS!NLrqE{O}-rSojpleR0>4Vi?$9_Wy>_`Sa* zLm9dXWwMqGYdI6~@iVj@Abo-I-1mrMTFvH@HCwF&TBAJ;NbkMuc8Y=dG;2%4L!ieJ zrU>T_)}`PtDjZ+JaY_`!rIO)9OxoK`hZ7yTQ&zM@r-74}uL%MM1l8vmRhEmPdIBFQ zo#+}S$C;My7pK3a#Kk{EkXCqH?v7-kR6I3Yrq`c`_HOVq)V8H~pAiynDs@QBcjb80 zmfl9`{Df?}-Os@|mEDA$@oHV5vccYM{)e4V?(67 zK*jjI%~{*Q#D;)}T0-;#+wrLNXhXszHXk>#ga_J6F!Rj(X{i+f=Zb(Y64>&N3& zx8;Vh;?of5t$pyB!K;tM(EMa`?PGWIg}+>zzg%hEUli%BiV#6BQ~6ch`Z3&QH#!ng ziC=pgHU*1h09(N>+gQLMmNpN%oy;7(?u4LYtwT%4Av)mH;Ju4?!gtXsLHDMM)}Uad z*hU4vd+Uv91m4dOm`oy(PPkgpIQ!%KMd^b}$f#esn_aWb6W;&B+j6Uj25RoX6M0BGwdhcz74AFZxMjxY$Hrin9$M4<0&wI{$ z_UF8NpTEwZSkH2=weDv<_qy)uzLq{ciTsUg((gtqN2dQg<1_W+@7@WRMxgFo*IV1da^Q}6C zH@TnE67*ew6;>h$-;vcPEarkadUEw+P1sch{|EGjm4vHOYm9wYQw7hZ@(OfBgC&Rt zB*27`=$Hs`K9Op zU=?aAm=(0bke|>w`Nh`$eFq6i()<6Q1_sRZ2tLVGV$R?MG!S;>%K8niNFE6A(#OW> z=Oy&LeCH5J5GT?4Oht9YgO+i|+{oA3&5eg;7~9$}zioGaM^RB)$^=W2i4}L(@3r|a zOu~;EGh4q8JhA85*ze!?nD9TvLY)}68&jIvOipT5dm0Mt6tezTB*VvYk^jjtv?Aa7 zm{%ozDQ>at`NlRqy6T3HEPC>{hL5n+g^If(TGmB677oEjGhU_>Xa<4_H9EM zx7fn$WOA&9>my>$w-$$ohxh&zVw;=&AH$R?X9lm3w934o!1Nf7sP^zaxn`q*+Hx&& z;omA=Q10<&aQM2tgbL|Dy?HZ&rX*W?%fEOtT5%V^NvD~48@V5u!(V~n8UbwEtkR}E zgMJRN=T#4}b(Ly-)fHSRb*emfm7@}kxYcirGz+z0^bO!J? zo)YkzAA(J|P`Ah(5j#HivbB(AD{8hI0gJcLGceaS z{`XeR`;X$`Fo3`Ox_hW_$&AQo$%@{ym>s$Mbp=xPk53+)Tdn` zC6Sl=t840&QhV=^T%F5UwUX4LaA)#kd|L49}`pbeZwcs zJ7&j2mr-*3NQaGt1RrAguJ8?BQ853@iNSymCuu39fv@l2vnG>>8DP6SwTRk=ajwwl zSpF~w6$!e(Q!rwtP&Lv0w^sc?85r9~Ry(eyjkXqh9t1K0gp34)71rU6i#i7rNXEaF zrVIL4b0UCdo}QE(O*KO?6-wBcaPX48>FWtbDEGX6w!a6`4QYpYRakMYT-t z8+MbDe4MkR9SC3X5%`N`q-nW>eyiVGo3L9tIHp&K)O))G*#A+$TaajLCYh{TeHAeEqm7o9j;T(j zj;GGY?smQMM#+)iAD?~h)9-s*c9}hjYQQZlr+4F>7=&0CEx5Qx!z(lYYt zwOCPHT!pKjt42wn^_JcGn_O^jI<7Ps{VfMCjn>etIk)+dwYx_2J z3!6hgVt!w_>XeW<4x((sB~u#SrrRw9bau#!@(2DM=~temK$nAek&i>|0fDCWAUjIq z=2{f&W2wIEQ)d{#CfJy@bmiO8WtX(byrydwGwGU*#vv00n!bX5NQ)IvCuMHPtxG0( z6<2Xk>9z>G3fo+B;)WH?%)U0T?ruhm6d9@?@~%??nhYAZzbSU~GyG!Kfit?%;_^fW zNb`^se~i%c~x$(6LYT2pvUT-em;b zDexkZ;9i;~Fx|_u2$%?dFYG8{N01(70gTiap(!Qr>&prS)_rf}rmxHuhc!~5wYeGQ zgiE`}(=Zt1cfxWPXetk1)}DDBYJ#{XXyL!nLId>aniN-PBJ&{@t*%inLsAc{MLI_~ z3=^AEb~wrcrVj-YZyycZKewwy5_gf)A+Dq6r?MMb&!83g~mB~TjZv^B7_nc^%z;rMSz=Q6?= zT!Y_O;@NbvfB)WGN5|N;@woueVPVVCFTbeh>_{f8kn<-o(En1F=+vZ<>bNShNRFBX zldG~G-^t^1Yiy*;2div~$ z^~<8m2PLv2hBU}%sWMO^UQHJ0S3dx;DTpc)j?te`+LY4K=DBpgqw+)Mo%mAIo<6>J z6&0s=rH-k$Ciw|d)7`l5>nREJVTa_8 zX*!%~2JDuf0GfhpD(1OviaM#p4-6dS0lU~`_m(9gfo8QQ!EKpmZS11)yme-#T5^>h zU<$y4T@em&QnbQkeex?q7vposIZHv)RjwybdKDg> zeasy1_h^uC9-_f;958V$2biy`SNu%6j2HR%kWvu2^oGoqvb<#sn##3($OK$-Upi0l z(&p%D^vCTFZE4TF?}?lFH2R=cEtUj0MVonKWN4rgD>LedWro?+)ZJZg;h&UX;0af> z(DzZ5S22z7h_fF=3*9h%L&K2^yBbUF(APRkOSr$djJyj=;x|doi!sH?`snD!vdWyC zobNMw1o8LG)Z?XAbhzTt&#_fQaz+FCVRo59$!-75qn{S+#D=7w9l+AyRJWSL&9%)T?-$25 z>>0)PZ-wXSr`8liL{%p{f~m!Asl^!t&IXX2I&NvnX#?Vrv!NR@X46g~!1N|Hi0k87 zc;?4EiHmgI$Hr5b%t+{7xiTOMcR8TII&sp{u&Xtvr+%TD_q)c%fJ$`}Fs?BX)_M7l zxe2~X^xel{?TW4=bab&M-kULKC_V6IKnCahha8L3(!^!DXO^~!hrq{~gyqW|xpa)R zwEpOY?=iw?gj;gb>pk%MBg#N3AFjeeINPPiqz&zV{Fi4voCoZ~{{s}R05Q=2(GM&d zk^29}0{*`||9|$3{r#PM?9}DPJ1zd}Up9a5Al+Vf0?HIf)Nr}3AtDtIm-EVa5E)^-@PQT(7Ub3 zk}E`Sp3?)w`qgJ+`gegTOt;PZ>$gOIUKV5cs6$#z;N#Jn)>8j!(fOcqYnpPwiMye` z5oh-X(C{MfapO_s@^)R)1gjA1vi;xbFoU^o)5bM21%A64&n`b3I6m3{Rmh#~v)YE5 zz-#aL;^(s#9lg&?ijO0c&HCPz8dJP4&iZcT`Engl@soX=|Mc&ZcSdC7+$DQDv@Vqd zUA^k4(BF1YR!7HT#vQi_M}zI+pBD~Je^^-`Fm6~_P2&83^(C35W|9lqB zcD8?XNwueBJ75EjndVeA#d-V8Z{2}8-W~Y+g?e4g8i&8C)@4+5M0c}gK^DxrPG?oF zUS-VP=r{$|(7*rbvUAANyFgpxXY@0#3uEUCAA!3!zr8f20+#uR1^Ll15-B$1zj*PEa-{)_UjDGCp9-_)i1-E|LWeNuA)8jX%Xa!WaNys33;Yj3W=@1B)s0E zoE^fB@((=axnBcg=fBou{AX-4{^IsgifG>0VF88Y!@86ga^zu4w^^CAq@3-dwEgR| z9sr*6@LE7m35Ka?*49Tjt@@^(c#=UnA9{$YB6h`|@v1$s zC2@eAYvfm2$i5~z9WlZlJu8k|CkLY4k5uX5Eo7Z{Z##MkPd_L=EWJfO5Vo$*AGq3A zw3#BEv}VcS>4qz@?Dt?;baZfV`ZO+Mnv&4}0kdo~*DLn)>Gho>YsnZepPURw3|C}i zB!NJ9O3896X#9xRV{k?wo_m_B>;DXPn9 zE9pY4R(!9Nt>#RP1}0^)HF;=e%h$8I8n9J-#Mj-^&h@F~qMupKmg=14pszMLGAimq zrXn6oPSy@jD{TmD{F3Y3aGisrMwrrhvW`H=9Z)Af0%otsrZ@@m}aD zhXCqDAA+(u;K)0N5{#7baRiG`u*#&^vp;_P54MC!WrzQ9;fDrYy@IsnwZ7iIZj~PP zBQ_=}zdx;{q-tzAIcT4w5KbPRe3A2GJP(o+dCGo~Swlij(g3i>F0h?mjEsqr&ZrUU z$G_1WL>Wr)rs1xs!YBc*A(c(MIua5F#l^+?`ugGb4(;$pdTT3N^~+1(Mu|ybGaXxQS19$Ncg;7{ z{j~|li4g%a724Q1zq-bQ{iB?$_a1z3KfP&tthi90y1G5w*RPI|>E1Gi!CZ47-S8^m zB;WUC0TE5E3rh3g%l?;2d5<@~s=DACpB;eQMbkZ;E>pZXuq|t>`hex-mF@RA8`9=r zJ>H2C93IYg+;p%lytl)xi3~X3QY@h|`et0b+I$u~9D}CESkx|bE?vNWAw-T2!1Z6# zYKpQHpCNO2yZP4G=J570;LS6unL`VusQcqRJt6ilN1`sQ43|5$Yw2idyVKmjV6$?k zXS&!m1owE!OiC)`6*02Be7EiyhegtPWH>G;Wr*X|XDY@&;^Pa&KgQ5EX3_1sm8|}R zu1-6`yoJ)Tpv3b@1fhGso$cPN=ea)zbqTs^#b6Frl3Fzq7uc{i8+wdXjTdwarl9ro^32vE!6o4CS7?&9;&4i=1mYj=MCa z_*6sX(I5js{eY~!@NfnTNQA65x9$jn9cqu)^#9$+hOTq-_&fi?Lg4(1*ZsWAiDDw| zbJ{3eY7AX6%PAXR-iBkE7**v)l(v+AR|QYSfHm+(Y-gtjC)*xMoHvOrf&RCyt%?Nh zEl*9AHhCF&cNe{Zo%lC2+`jkE{Q7zuztDp+wsRFZ^?@I%sy%CZghY7iKR1i96M_Z- z9Qi}(!M{EU#|D~&P3lNlp_Q8~8EZ?PI41>78*A&4PHA_% zPgY{B%Y|1LhOgdq!J8>C0IP92uj`i6QOxT=bk0Kz@CfH>_cR3BvfQ~6J45u9v;j78??>vd)1-CTd7UNOp+j&Ul)YtJ-4MVS zB8D*u`8<&6FjGrkf-f>z4s;HksTs@izzyjvx|`zSK~gn&Nxrz{gsd$F$JTVj1$zMAa^Neyn!P_V5C=d?`5EE4C!nTYeQ|Ad$S7i{ zCl0D`VLTTI?TStwe`|bQBnjGo>%ywSyuzaBIEiabEsp3WRvWsq0#sP<$77^VceyPd zJ$giJ+K*<8R)6m>=(&{dvJY(NBcGz9k7hu92cFx?BXqHJ2x3coD!f}VXZtQgTA61( zUU!gyX*ml(v;-z>(h_Us4k7znxhb2bl5H;2Wz%I*l703KG|xM~DH$5-^IIGawGz+k zN!Cs+d@AF~0k5T>;$Z1>EIXHsiBuMluqpXWMZ0K67Tpm(SmOGyBC9@;) zU_`?|V44Hen_T?XY&MBar9IH4P5fjYB@PtzFD(jazoM3jaa&sb9A#o>34GNlC@9}a zeg*}hVnDy)@$t#YeCqcl-K&OF^>XDPiz4cgY*N#cfAjQZX}26Gj1Y_}Zphe_C<&!# z;k1PA4>`Wb`2N4E+3eSU6!~Nhe>{ z3^c$(uJZCD{jw7EzUAe^h<=_JHYWn+4Ls*}1vEyxQ)ARY6rs3gcZ{1U9U980$XxW8 z;;C^+a=8r?F>MJ5V zHt9KJ@sZ;#V<-oa7&z_oL-Tn8pJd^NXs~rc=-N_SHIf`2V6pKnuUWT48_mKV+i2N_7$V%dx=6 zXZUzEZfx-t83mb;eO9Z{i7?(vx92)tVy+xhzw_6o=5%BB1(lr;YgMl&*M0i%ZVM9N z*bXuDIqh9C6c?q_&may8upUw2&(?Uq+C<$Opdt79GI zkkntwBS>9~ttf%o_Wx02eO}~eqb|NWdlE6b|FAtcxnIqB`TSRu7PHBPfT^P?haSUl zX{l%a=&0v7eHBsh*CA$GU}H!<+=an|W-nUK;rOaLMtpHMn4%i8@OC4RINFOH6;kiZ z+=f<(tOHVyy^Z@8&VKhnUdQybSc1tt2Fafw%a=4z)-#jclUGWaYeNI2wc&hrRmWPh zDS8<{-Lgt1Y=S@3eZj@{UEI5}4R%5F5Ni;~^28ze7Hq>1NDyWoYKYRe7` zeq=uj!JZ+d{&dpd@X5^U?fy{7G}WVVXRzT*qg!s~bNqhUFFibD3{j}{a0cJ{6B++H zJ4v~b*;@mB(tewWWbw)t;;IxuDKj&qA(uHuurNqmNXVgNy?08v%k3eeWezg=m%?a2 zJY4my$smDwVfWXW$10_9Q19=1AJd?0u>;+Lj7+I-Q!ap4aUm{^lq`9VQ( z?a-ozl!=ka#lIRz1N2o(^+42ZLhN_f&s3{Uh%~vt)Cr31Y^z((-mp4x?cH zkMUk*Vd695Ai-T)eX!KDVdQp$`jL&RVXm>5TyU1W){)NFH`&ND<8+%Q@G7GF!_q{F zd8IirCCNpte3PwMq1{}A5+e@6nHfJCKHQ(suVW$EnAShLW!S*$!oz!1YQD?k$f~&&5p5D*g1D2R<(H5f!|!0K=NDAn#8gj* z>XW@#Pu_MJHOvt(BOVYyafNH3G2mn*lDPp2x;s(h7~eE&5*B@bg}mxyV@KQX{vDy$ z?_6>%Uu?;a&Zm&BNjFD2$hI$eYoXlU}gsU>1SrYW$AwY zo#mxbsfapeV!Ed?O~P#tU)*#STR1^Rju+MO_5>t5trc!2$(>Dy{-gS+qQQ^j zDkN|!@PutK5Welz2k-~p4bAGC&)P9lQ60*BfENPWlPK?66Bjd0NH;0syu3E1VnI*@ zmCyq5ivM#KxQxyf))nTSs2YDGchLYo+5W?54PtMOkam=6ASzxVoFw*yzm|fc#_(fx z$Di(5OKk}N8}hB2H|0zklDImeSVTp91~)NjnfBcuZ&7wW93l(2<$knja-CW3Gi(0s zf56Xzm}v*5>iwbCwsPTBr&{B%;yO`_FA<1;xG8;*GnQ^qyLi$8voA~L!`M87hLDd4 zJ|#gF*(sy=-6D0z)s@YyhHtS4${GJO|CsW5UUQ+5`c0PS-1h0#P*`2~3w6x)2jdBm zw+80FMMNC_Tx}1d%=nt-edh8(6r4R9G(DT0O;9RK}x_a`yKEv0Nj*oos{b(>>i=HXF@!p9_ zE~ z_OG0tj{GTyYK~eEWxM60a;i=-z14M{7Ao0yrS%_^lh5*GdGzf7r>~_Yn#3a6G%vO5 z$Bmo=$A{l>DZZsm@)u0`huD*N^V5@fxjI}HmNBug#T+pYi?)}1&`w&AG) znQRCN|BDwi&0>~A>`vcz5a#QJ)ZeuwJ9Drt}pL<7?#Ev>NyeJP63=CsWIWW zx?a%O1f1JGE-cuel`HE&v68A;7hv5#OJ<#8Ee^6da&@Vk(FX!Yk%O~J;d;j)gA#)G z?>1yr>6+~pVcYf$-l29rF|I^sUOc?amlC{|uk#PFB`pQ$I*22nP-WMrh-40mnwZiPzuPt&Cu`o%6 z838f#RNO>~nPwAv^H&D&%aJ=7lr3ZitK|H1)i9yd=_U1JwGmHvtT0PDG>k8f9}-AB z)tjm&Y)}G`>-OTXj6{7&SD7YT8YdgS-u+MdSto&hz9+{%BXS59sf% zcS_86vB@C8?!KPC{#LUIw&y{i!PL`_*a zO7f5mY%LsfU}$`{5Zv4Q#3evWJ)bx;XqTp2&Aakg{WcZra~r(tiOC>(U=wqp)PswX ze#7|``NLv+5Adu1oWH7q*g`~KPpo;?8%Gx$(LKuUXrMkUf<~0owS7X|*^=#_$?fj3 z4@qk?wcv=_REJuvU{H{wVKup{)LrhA{h|(Qu&7}PndVVy@m-g(T1*Lm-PWnx}RwQ$A^Ot!5tqozDIGwTe=qB1F_rN4d(z?t@(!1csJXr zUmKpT`NjE(vd(+qg0f;_VmiA5$>YVD;EbjGH+p`=0BIJgPh#U7O44PJt?*ncOSDxI z?wb10Gq?TE`upaAKN>myhP=13NE64v*(NBNGXvk}ApdprJ}-QGhK(1w+Sg(BF8}e_ zLIWZ#rw7pxYmrWDbj;v@+$zd38%jlxjcCA@8IYk-)cVjDTSN(J7SmeTtiDJ1^1zzq zpA7#FdGgPOV^&~g$r$826*u)e;z*_4?%W7ar5J?;I>uK5JSK!3IKRaRL5u?-1vSH7eX+UBAQzhgg=R?>8J5khwXkYcV1Y!x z78a~EHOGAYnWdRjG(0@jrM*GG&|ipoHVk;}#!uZrkc|(Qthu6tC8tm1F#fkm(O1Iy zt92<i*=e2IDTtp2HExOTyb?M@1o}X%wNG*Le!kN-PKu_II~Zo zt<;EuM75BO?;@_(9Rb&PEHPGSvc{bGwYeTKhD=!!r65Oc*5PL;oq5yDaRBi=?% z*Iav7=}${h(dG)@gos~kL8#mXKE(TZM_TIdT9Ss(9}RDzzsNi*viTVHd&nn*`Q$%< z?@H0@YKgiGtB;FV7ECs>vsX#H2W6C`B96^wYr!E_?NJzaglgaq~C|9PWRhQUTxAL=H|qw&|j;Cb4m zf!AI%Cj@Om5@R4vqc!H8-6eA+_zq#T8da4 zCl~Y6D&gn9vLqChiuWjwoEav)x_`-6~lODXa8la*r+jZw#4*6ca|>u$iRcZN(9s(LzN$yiuUuuTreBj0=%n z^RgEhH(s7wmgeT|`=36uQjrIm`8LC5P@z^0TdPWJb+y6*UoI1b6W?2amjAmdegB(c ze*dLeY0%=&;gs37ioNiPz3z2~uZlfPjJv&R>b+_}(M5Gl)l*x*hK5fc4I^Ib#6UPO z9evWd{E`nJ3-Dy6ZO#VcP)=qkn*cTeWb{9}0JJGCUVhD{By)3Z z*J{LI*f5PdC4dTUoc^H09YCfqog$Fpt16tTQ{6l>-%aQz#F%`Kg>5g4!|Vl?I{K20fSYMVgoG+Krjc_k zg?FMSJbyTRU5*(rWRZe6O#f0Alok#Nswv|pO@FoKLuz4QzB_|!51}~l0()6D7#ef& ze*l+bdyQkG27g{jb)1-J1Ks(t(K3^X=cJ*DAq@&-OM33DGkFh*8GuD!_+kW--j@5x zaO&FfsgfK2PQCV#DkDUHh#~%$%UliLi80|Dn%Y#g=R<>`fk5B8TQB&;<2;JDXS+=d zt*uvfFEkJb{fpG}f`$QeJtKX^w$w>J@75k{3E7|ao0&tX2Q_ov_TsF-2yRjmTo9E( zFhgt{9WDLHr?;jD`yi;Sn00_AgHo>QU1drc-ePUr|AU4H(l4g&G@=9^B5$ zD{4ye+_DT<1fws0#l`}fr6}1s))BVAFaEJMGpC)=6C*;ire^nM$u^aNE6OC_-e^f~ z-m=o|U}RPuDX-8`V@!+tft1gU`TEr&&0JHB8eMbZ=;&yl+}6QXGr`;2DlGDvtNJGJ zu-%2EIdhYeCI%ZFiP}B=T~NT=ee8^QEqgMVjYBmEQS(~KK% zz-oy}9$47vG5*Kt(Z2I;dqL%Icz;S(XNg&3U4sZt$$i1{rGi3EVq!iBw5=#;rru)k z_U#8JC))Y#9ugAc;fMZ1;@!vmQiuIX#0Ns=+7=dUE{iq>HPZ780>*x#Jl5UIUsYvI z)1U9}(%8m9PAHqRkF()nGfARhbpO%D^Lf8J53mO)~d*kF@ z#frypee>O@o&pYIOwBz=)vqALk-fW0!D5W3%I@6E{%0!I)}$A{C&Nu(Rh8FSiqd7? z2XJ-U^vW1`s(*2My6f^z#`$SrE}^}k{&$Z-Q553WbGvt~aZ!bI41#=u(8c_CZ0Ypq zC?3E2rllxXcS_D{=T0=dO-?w3ONr1!J5_g2^YjxY_ew){Fq|~LQ?eFUOO>6m{7YzNj=<>r3oU51{XH0B{7Xkxp#E%DUjAU>kF=n0T|ne#c#3T~SL zH4)m5HVmbo1q#*D#y-Fr5;AH?a*K_Pwm-5UHt!mP&1-G2KdvIUQlcgOcEoXGllu$| zT_so2DQ6DPlc3Z}o0An{k`4pOrG2^Fl@;#hf%_pz(^4$AWz7!9wq_K@$6-)Z%lna9 zix!D(WNeSDbQy-*)>bLJSJ1H3u$+@x?y}#Zo$n-nj zP>*e&JiHHR>$;3g4zjrwrnJE)S z8h~tv-Lz(uL*)Q0-au=>e?=mw-YCn^R{HR|DCgj(CKGu;;`WH*d(6x+-evG3giRnI zgo#K=spnObEMzn-{LulK&tymY})KA zsQcmv2%6!i=?#m%rP76#M!vglPHV0?!T_e)Rul0Z`x8L-N4V=hLxtEsxQ-a+r^}@y z*q?-igs1k=pRR@vD6t+VvjVAW-e#Qq2BpnG zHGZ@R(oCHGM8lnfJPNvcW}oIEdJ{mU_Zb9Y|F)%?+$51_VSzj${MrzQpuFC&|9Fah zTzvK~&J{|@E5Yj&5XRY^Eov$M?a1>W+BjK7`6>h>`))z)P2m_kD3g$>Feg) z%Wx1yD)@h`aBQEB%gG^&LEQ)K6XKitkbjL1IRd1ak|Ca%q&p!WEwRwyzetS{Q$>opIx;uHpgFa$Jm2;b+XTVgm2ew z$}OY4v&)Z;HvWrwGGgr*3g=PM)fv&F7EtA1iD66H+4{_OA$k7*`1;)~eKcZET8Q|f z!NA-rI;mTt3+e18thph?N}Tws24=y{6^3l{_CH^Geq$w|^{sEicS;w|c|JLiO^ zqD=E|_&OZl(-gmbyQDlQh&cP{Y_C``?#a0WIxS3L9VskMXkL8a;*JscBdmV=_GYL0 zeHr>Re`~+{6;9I!stJxT-Fl zo>}eFIIKRlGbJM8Ym`-mNkt-G{f%KKRDn~@3C(d=S+}#b z^+CYm-%I|lh>~?5g>`)Ec@+n{%#ux(VRYK_$`!Z;`t8mTTjP<(Ktj^E*VK|mF_YWY zLly%WqRwL1=X0X_{+=P^oMq%wrEcx6RZjC*i_yg^1Mel$o5CO)%@k=q&qX}yl*)Yo z$WuOX-Ko1l-S?&`Y1q!@hQX%uhP$rUoqP zUcb-~Jp)oSJr;{e3xa<*2Mg6QT&YRYbE)WeI5R8QAk$_#I^E}z_H8?tjA^?KSgkp3 zy871GUAe>M%{~)vS5yoH1=VhNMrvZ{d`h)t3-DAv0?lCHf?=MG9J?WoM?P_1vrDmR^Jwf1^rp7j92z zKe1j916@)y7$ES1(R0lOg*n2~7sDn>7sY(9blb(6Pb=sg?Hj@(bl;uN3m3T2?cu+< zG0-G1onxwJ-bs|i5&sS?A(5OR_gbk)M8D@s|{=GS{xQ-0i_#13ArhoTf2FiwEqJt+0=&3Yro7!pE2i zCr4e~{axSb)&NS=c#$zXV!VG~A`J5Q1OSC&AZv-hhm)$H^mp#pPIwpyedh)I76?)M znn+JY<;~V~Iz36jW}CF;;8^K<4scJ5zQbUu)z{e|dpYrNW>JM6B|D3{dHoYnD}c6y zr@zGzm>Lsv)TX-M=y^v{O2S;df$Ofa=C%9-zY`2w9&4C}i<8~opE-s0GHM2Pm(V1* z{Rt7>9XQn7$1LHD(9T;BqlBn6l?)1|Mznm^YgI@Ll0-5Zwr0o zbUA<`y9#QhPqU0aVd3!bLSsB`LsiyqMtz(*McAeHOL20G`=-r6)pVIfO>x@EF)hF_ z`+0Y0D&ZDw9PM0H|CU?{Yl{op6Im`4!-v%RBw z5N*@rS4)XpKr|$ALR@A-(RHQ0IF}}|`z_DToRu8T6dsMgNRk|G`Hh!LDt@c?@W<$J zom9oCvV-w>RI)E{c{E$;_+}>qRHAyvTlvVPrbJ*GU7F*iuWtw-iZRLHp1)rvW;#_B z;!E0Q6d1)_3=G2asf@5=hkA0Fe3{{H#exgEdH}W<8w=185y>IVXWn}%+DIRF;Pz|6 z?gv_s98@qL@tedIs`7tfb&rzUe)#ag?(vqefG$`{3#lX#b#n!vCjN>w>@cr0HZj?l zX|%QNG5Esw)8cK)cOO_w4T&7Jt}alBOmYU1QR@KF3eJ51^C6veIr zBAg%pJKFMph_C&(?B@SJG^3=A|FybI9~Wx~ESrI$s)+IU-!HZ{4wg34T_uIpIiV7l zSP3UEQICEm0W&G?vii(<=*9~-WybRl7<$ibn~lW}wsv-Z0r1E3Dk)k>+unC^48Iqy zl7w?`1TNJmtDxP95}ol{ELhL9)PC_^*~R=J>@iT5vFi!Gn~)4h*^#iwx7I${9(Ps& zTUl{{G%@{gS90kjAC^^P)#NGYv?Nl+HfV{!uD9}!h^^x8nVWcwv^f6qRjy6TAZ2(;Qv5OV2}R**WeO+ z=_n;-V#N_q>{n>aezLr;-}x;qNz8iq)5d&+qvqY{R{Mv;TKLKtx7h)+2Z>h`n+^;d~nivM3LFSE(xkj2R-0jIt zt{c~vr#J>;4CdA?Etld-&klcdrbcMiwWW(Xq3e5kwn+*3v=K(hdwZT98&e@%toJ0Z zW2s1ZJmnCrhSu99{p6-|PEcrJ)7c%?##$j#fOQ%(F_a~5AG*BwEiAy=z z)>MsXNF@a*tCbZV10AMeUfe1F#sZG*JK6FlMudecS)qG5&S>b?1f1b&;0ueRIXOsE zYTUx=Iv^C9H1S(y2es+UmMqji`8MfWY^-HBP&4#|Tu3ind+u`;Xk+6wzn4p;4YsXTo!?P-IkxPLF?NSGm3VoS^9AyZ$fW9 zK2lBF-hSKMJkZZSF_G8ad||FOIRvJAD1U851UQSFY4|0xwv zKJG2OzPW0tb<6E!QRDJ(vKQ@K!+(B8&!ygF&3%4RdEp;0 zn{da&Jdj)bi2g`gf4J#@u*sd~Q)SFm-_wvamPyL1M%g#BP7PA&v&6KG$IZcb*4)EnU&Qp1!@M`-#glfC~Z2| z9EBF$DBwQw-0o7hX!`X=l(UN`KU{dwx7Qyuz%1!Q;>fCBa+`5iOZlta=ogCd5@Hqh zwx@xJ6Mi{3xa~)K802)!Hk=vl$z6D|n*$RT;G|-@S7yEBfJF9m_fSw#WSLS zss9GIbd_~AfHJHmaR%)M-Rz;W@$q3tP9fn+I~fWpmX+0AS1`+c=~h%4ZC#gOEk6WUf0x6Nbaf>t}p_8}|o z$0+;71?8m#m38RZLVGawhl6e&QQnObK9Gv(Pw46Csc)dKk7O1HXtwOjLGJ)pe@(%< z_E`ury-dys6*f67UpyH8KHspol=G=@kDJGR?$niMtXqrh6bM%s4kor|pvSBD-E)gl zQ+8To-IU(IrSr_iyJP#heZSWQ8BC0f;^N|(cMp}wLTjhYp8Fi<0f6+7w!imzMIwYa zyRXY;M7PVphsXiQHV^TCgDj5D4%-o79FSv|SS+ZS4*3PHcAX-VYBAC=b zsA!-U0083O@Uck*dpPj5- z{WDog?UCrPNW({<@n$o=Zk1FG|98zUHQn^^u=u3R6gPUPn+!6HBVp|Jemz2b1%C%mr zYO7MHzh-?tyT-{oazW!2+@*0vkJ>zYs1q(Yr0wlJ{1};~3CmF`2zoa>d{+NiP#J^Y zKPWFOeNFoDu(X|8UzPDnG@yxZsRP3x0ho}P6v>efg75NFg=ePnv$5*d@cc?sfuDtpmx{FWD^lm`+kep&I$W1HbAuyw+1dV2cuxWR6$=_fA8sTI0| z4bnfdzWh@oT1`zYp{lf<6p7)WK2wh-JrB^gK&2x)F%H=LxJAGJLEc-3McJs(bc5t5-QB4oA|N6$bl1=*4MRvvcQXtPGsF->4Ye5q6 z>)7x69((_>|MO6Zx#PO8`*VK2=XpGIhDlyJ2unz`KTzH_#QZaN0leO;-oN5u%|fuu zEO3;(z%pWURJHQ;`TZ2LTenW~(6?w-6@y;Am}1fO)}+$tO;@?^MzSGUEwmzC!p~nW zG^wKf|ydz0uB;q+~3yISxO$WS~Enm37=4Sc(%b zMR|F7W$laDfflh_CCZ@Gk!2OvzJl1L^)%WYm<(5qUBYP5#y(Nsnbq<<`Zvypye{94 zF#~0gpN0%Oxl%0f?xrtMYR0x|d*F>(t}ub{?QWhy)N~;nb#zcJT3Jx%S-W{FM1I-W zrXyMJnZ7PcV1m=>43vFE*ktJFIy{n`+{qy_B8$hzLou(HLDBD~5pobq+dQ>PSBG91 zi93X`iZbVbMTz#Nz(H^N__w<2Q3Ja`n`MLV7@R zkD_=Bi$a**W4A!5G~IEr?H||8)Q)0`DJo(rweA#Pg$W$*(o~%D;St2bp?g8i{f_W5 zkbnA&otX@NceWsiTo6EyaDgQpELMN)*%q*q*Xzg8wrAqdbTDRlNWW}3W9@TFu zMMU)KEVZMcimr@{4H+N6;EV@ST+eR7yo=WlBP>QVxK1mY`4lI|$Ho@t=hsB{A&_L^ z5g+f)YiF-^n2=*k1H*Z&Lf-priv2TWiBJ z+jUPN@naz|qCq7>5kZJg#}_XhHg=lIOgY-QVez=b0?c=il|o;Xzm<~qv5lw^txs>o z1ur|uZ5xRgu7Xx-K_cWRG&|gbwjm93QY#4_z zSIK&3zR;qMj%=QzqQpVgrMz11#P_GNoo?$Hl7tgy#12O`&;ClJ`>%OCzi*a$`}XY* z3U|gj24L^bvLZw`2W2Q`Is0(H@Wd6`&>9!9&Cx~Z_U{gS`Gor%7fddMx8Zd`4}x@@ zEu=T?W=i0}zk|ez-LKbdXnj~hS4tS7;-c!dR1zcsT`+46mac>{$=#kR4`D)t^rajO#yH@_-&LJXhhoduJ)OJb=9q-*he|~G4KR~YiDo4~ zfpU-j1sc0VcIPc)lU8&RVk0-vMTJoJ9bLv6^&C_l6D_Rgv|F32V+mDlLb}VS=X)gr?i9a@80>@RwKbNQ1V8hZllUSF86!4^gC>KQU`G( zmv4X zTe8x%l3m-XQXkK(5(uPT8@|AmEovWn$$)klrLp890D1g4CntwoLv1@)+W{J2$f$cOAblx$(6Q!dn?#l5 z8Qk;_Mthr*6Oe>4XzzM#SDnpHWt zyH%dz2R_DxC~*I#nILl%hz9$L^+RH|4@J(n%xx8WhwUU0hcEp|5EkiN{<`>FmyY`YK4+pfVF37k!hq40M{Z-Wbs?zg%&$%`0rb-wQ3b>0Qoi z_#5j47toeM6JHfun5Zw_?d`Rkv?Yw^9;y4>*i;lefulAe)FszA!+ANWAMl8|7n8jze!&}%lpq$U;ht%&Hu$h z+Uj6ilccGYiHU{f;Jdovx)53}78WPWRKAZWbog4YcV>;%>(>t-_9m77S6S_sQ!&Q? zF7aj?1PKZ4;0SUk0Ig>hQ}PwroXKOM_V}61W!C~-=#@H&=LLt>G7g1+Kv3U!WGL+# z?PS6>+?S_UyxBe!@q*6n8yKQH|E?~o@Mw5+^ohvgMGN|+?$*<42MW2oS2c-`YKvhE zgaoEiM7gP4oGi#{D~+vE98DcvMPy`~V_}|7Y(4pVb!+w|EmS3}yefM1NqhPWS`SW< znajRkdj2M`fq{Kl*`TH)kzsV+ubKBAxyJF)L{f+xC2F8K6dm?lSv*8ih}J^wzv^lg zx~lQumF@9jgM#46%bLW*n3$dYa4xIE6N@^Ln%jf3Y>|U!b|u(|a9o zSSqxu)dsC_0$lWwb1Rkz)RdU#%8zdz%o~JPxvaD&C#Jls_rHRg-gKQPJ52}3o&4^rP6g=*^_aFAnH8k z-J@pe7|lwz1CR`+<&^h2_7sST&Wf%}E!vt#zhY&+(%I$V<^i7HysvWxA4yU>aPV<( z9Dg)`5ZQ3KP%N$IP`oM9%91I{yfuEWL_4C}fq`XVcTJz3p5E=nIco^8*m;kCmQccb z;$?b%f*u6B>kC8h@~9ZIIr0p|DJ>;|BQH%6!YS=Ds>lGFhbFl{NA2cvqGSHKE6 z1Zsw?B4d@sLmgZvA?8ma3Qm`x&R)lBdj|*Sw@k7YJQ^X;Z^k-+AePeqB8UoAySCog zH8*i0lGj~n)#=A7%J-@GX5W?OidqSXt2ync^wg+>LN9pSog9nICC)p~MYP?D@~jZE zTNHos#jDa>IKhND59Qk5#BEdaSo?d>0@5esDuF=k7k3(=s7)cwfhRCg<~f_mPNU?v zms@|yWC2ZVZBoPzroU9SIvhDgf4N8$U%AA_7J!4uZ z`d{y!uF2Hx`)1+PhDTkNYpsDJGUD%70>h$iu16TLcmwcf1{$-f*`4lgyD0e_*B<-Z z$kU-tciI`ArGSd_BxH(JkY8xLNEiFm5Q{0@3Jk3P8 z!%8{A=lEp)dyVSdOv+k4L`a0=U&=Xv!_`TV7BRbmA?eOAa`n6mxBMX(88KPD@52wG0bFe?e zxvVq#eX|R^PZ35Fdlo0ccb*CYKaa%fv2Y9wwvCCS8ypm)ElX; z`7NgGZ-+bW3X)f;WfwHoW6&WYxKULz1u<4eP($gAh4)5EfMk6+mCrawP`sooZ+)vzRQ@a5ZNQimV&Why${~# zSi{wh+H+%bffP62%E3VKo7?r1{>ANLQ_vSw8n-9;6|i`t?euTl!N%lTF6;dgFK?BT zK8lmxrkLXz0GamgB3Mn%r|xGJ!{;OhCx5IB#ZR`Fg!^8=9oo)Nt28t&ANgkU8rk0t zU#pTFx^zf#q^rq7L-Pg`L8QhmKZITCma!OIs@aPFF`3tw%R}q&f$EXz>@U$*p{)Ja zHSkH~vxLG6ZD0Hx3t4;x+sHd9tdh1I-vsX)^YH+Wk1KL=Eg!FGR9)N?f(0xfTPwzO zSxuk{b@jpyv*{(H5Zkw+4EHr|!Zel=>uj^1li!?FwnrK@w@L!A*Yc2=on61HSKk+w zT4s`CS;ruFz@}Dlo`CO}!>zOzBE60*wcqUqZkW4${CIqH*xO{|vpTWg*yE;^pxA%l zACM<=3d$X%Ng+ZT5aA2BZ8fiVZ#~OD1B!@K8*eysoDr804;n-o=6Z$@^uBZ4|GunJ zfZBH&xfk&K*#INsA0l6hCgIawnW%734-m#v)j z;1nDHG2b5f_P}$Fi8i6PYbx?-&4;F{TBkBy%-Pyk!<1b)2Q%^<9PF4y_Ux51$&6Q= zgcXm+wa{c1@Mzwf=}vPbS3}ij68Sye#l=`uEZ{B6FLOMO&RJ;{<(&&YPnWM(Y}cVs z2mW0Ilq>oZ+VN#OOak^2MHfp-N=&Vf$;qXy@4ft9e%xvU+5s(kXW$6~F@JXlFK1pT z2tNv@h8SQFg;=D|C)%#Au7;Kn^%_e%FZi<|X;OD|`5L$e_wrtKEhv<=G{qMZU zY?{qqRq7`$2FY(%3MAC(y)Yebbd)2R5duNbGiPKOT;>PS~8zjB>u z%Z@`>I^xc}J5l9K$83UdMuZ>OaTcrRj|@5ba_LFOAL0*5myie-58G#^8WWt>VA7Xm z9@2d`Sv_9qRwkcTe2_Dl+t{S`-sUFWXrk)qeFG0Sg=vza@H^anUL`bSrB<^A7BizTS@8i(%2aVp130~JfK&paei*d<$LHZecB(eQQiF)Yz&j7@S`=+ z5$9SsL$haK~XB|F6Ou|@qv zG;jfc4}!j&y2LtrNSkW~(RcJ0 z#2xj104db{k(sQ$sl*pH&rL4mo!l1~nvYupdZXFtg^ckHk8^K5M#-M{{euM*imUf6 zEl^mGeJ_`Frq?h}NcasR8y)`vB4v!yVwt}n$$1~Xje9cMx$$UndoZgLS^Js3WL@ZG z+3U{AC*~f;mo-L<@sc{1Kl5-eRYp+}e{zQKBBwiL&HRr*7A7uJkng35351q7+vhDE zWOJ$BC$>O{X^(tF5&2TiibKLRjS0 zT@xP)?6#9NVxFaZQv)aGtmcBVwYB%aO0P!#K>-@?0rrey&J3dP{1CvNJ?O=!d(jU`T5+be{?7VGrwE!Pd$@y5VjsX|BETg$R($GkT2GI%K_0BeLs}Kw-{)3%+qVo>atRNZhPo`(^_N;u0qpT0#`LJ6uli8Ne(vU9vFJ*3or!&v_ z8bS4Z5oib=RRSH_ML?s}tT~#?oGVcbdNf4q(3nUB{6k)u;L^!atm<68Ye=|yO5X*A zxJPCqiG(HGg5G0fJ2oY`tLFCOt9g0xK$lDs@cLr0r2af(Mh)tD)V_j6R;h`tKo5po z^b)O0yjc+{e!KhJ^vgO=?Yun%CrGBetY%VsfcR{Bsxnbm96mRcZgD>pR~?>n9V7wX zVV*9N1``u&7CG|e2ew`A>Ow*bvJ1){gAlgsChYv+`bNw95L0@y;_NjYk@R1N`{SCQ z`M+<8)?d-AVpy|^f{@{xHzMw?ii*=U6@D3&F^-?2`yZ8ZdMYQqd^~))d~3MBvKWSl zTLE=_3a(f>r)8H6ba%=w8tOCtaC?(Q)jmHbXSN|sy6qplQLe>$?(@ZLYN`Z_JhcZt zk}r0uFgCVKx5AyETnQpOGx7-nN?A#tM8riw1gmZb9}hleP2~;=wSeiw9@N2i2vkPi z#D;BU#|%97Ebe@zDTs^M_$IfaZtGjuZ+2$HCo$8E80?yp`%34GGc&h>W*g|JdcbCQ z0eIwQ<-G?wQUS}Bo#)4I3e4Pw7&qo zliOp*5BNA%TDqz^A18RY2^0^5ez|{1l^ExD!+s#S9S3o^Y=bH*Uy*j|!<3wqaqK`U zo~yQ#NxBK?0sEr4%9QMRhLLI&2OAswS*5Sn70BIx;zq@`3XAZSRcvtVxRyX%8v=$3 zeq0q?1|0gRukmejlvUipgw}dZ4%o~q8VEJ>MD@D(cHfRiOiab8 zzfiGJ$c3Q<|M|14>V(a2yO2+f;2~g{y3c-CynRpkt8XmL+5Z(Gx^F{DvG)-6!%*#LLm@0OwL@S3H$dCjAZ{OOS8Oj<+t4Zi>FB)=h z=?i$Tt8q`x&}gYx{iehEY&Or*GCZ{?tdzuuPPo2dgJ-K0c?=9kbJ^gCFymzGy+G zUN~0qdWPwS$H~06@E>+1u#(jC^n4Im(WTkWrQB7?dvwT3^pCW`u0q2(vimK#S88fq>slNJ9-wV$0C?1H zqx%cxpC?s@#tb3*-j(u1lE1I;F&S_6Ylk9NHQ`LQmwCG+x#e%R>vIBs=j z5;p|eUa1tq0k_1MTgS$2FLAbUeT2V>K%-9$+F@fll(FiXjBPXY%rar%a_=vz%g=R}&Uy>38 zg{FWsSuM(w7#j%^JrdyJpllMhK0s@|t6qG2Je*j|j3t9D=8@ZM7zqWlh|f_|Oa|0joQp+7s`Q41I;WkT_2ju*Nwy2e zA(4G(zu9nbkJcQ`o*Ijsd^(DOLA~~X(6|Ln@}6f0SDnFw}3VKcQ-Q06=Q^lo0yxs<6R#>)e{(BP{$-D@_UX>?^s0sKBha5_&Mj? ziZbn3Wffacz?2NN@zj_U0V`f&LuDhmHkO3`m+t2!dVP%^S zc%FgEJM;#dA#E=fGUqkneIP+rij|gQ$3=gHtZ=;S`Jmtt%l4u@;a?#p!)xi-e?rWT zCEUNOi%FRhLz2|nM=~}n)}Q_S95;M@LXu)P>ojJKjFu(MEi9I5DnIonJWflhD=aO= zy$|Z_%!^v$5VBp)nvEYRfQt$q%5ft7uTkz#4k*aph6F~Y=6Qj=SHv;vTQq+Mb`H^C=lD`T50*5eOXj6T|9F8hK?L9S?6ZJM6!HW90yzWu(-^1PkfJ-mc;23l!$ghaF z9AW-vtXQ7H`+puQp6tX0fP}Gudzdts(0J6HZE)ypeeAqfh)NPFiwex=Z5*+HsI=Jf z)cuR$n4AtpzmV7y&!Bd|@1GQEaNf9_&myu^yXmcDCzX}~WJ%Zd(v_8AcHtdtEsgeY z;^*cvzeDs-dnb7*sy9=0{roL%uyVZZXnoC0v(X8zJ1>;QR zCwtCJ3a!iq5AgE|&@=@;S9BfTJpr_80@ttwjYl%IO$aS9k2lH-wi)5sst}(U&__@A zRh06vHK{N;MU>)z)!BEN{ z6xs82k7KHzj`aR`t+TvASF0_tbI#4}VAA9PXy`y{UsEkCa=gFxf;RCk^ipXp*MaF7 zmu=dEPOW5VvkYn;@&?I3qjfXWRyqlTO{4?x@ePHr2HK^R-Z6TDoA^3dd=wh!IR>rmMH~>>rOD+yrD@@ zTa2S68)t^9Jb-;CzYuNkxqlHZD@>O2^w;CzF2_ZhC!gbct3byL>PVdDdkwif^W(&;#;`Ki6!__rOCh1 z6iklLa*Dqc%<*`Ut7a=v(ada`$b&0>jkJ`mxy7cfiwCG@oMce^}TJKEXGjX&hGm#L*m&H|erFxc;GL(Z-~ZU#OM z)Q!Rle*2QT^AW=bf`UUk#O&MvD5(CBQ^D~Yf-8pzgk?EfpvIT|Bq~968sc4-aCr~x z>O2?QS|d2Si5-SX)i#v%85p2xvrZNqLw5?;WtL2I%ANUOuqZlyJk(v1(P(LbO-l7) zS6f?dcI8BI6*;7(qqrbCG2Edetrknmt*p*qZJ2IonEr26_K(Q63%)j%JR6oOaMgV3 z-=J)j|1T)}J+Ioj@i&xZ`C=jXgjwrK`c>=bA6@9N3L`g*PqU#w*50b~_ z6>i%B4Nm%8O2cZ}h>Tbj_LXnO8Es-Ys^TIiDU>$s`=&dw!P?&VozAgsO+Y@^RjbQN zOW(MpGzWh#`IZ$|oc_VgFU;mJ1clpK={lB%ogp0xBIhExlyEdO-nBqRhROS|^1x@V zMeab?v!Xr#oqLH|RIB-YbF;Zs*(~JeKP^yk*WVVXR=sYF+v4hZYvTfuk1HM|1Zz+K z4dE(n{E2Y)hy(`Lr(C`@k7ZTzip)sU(G_NL!5&xdO5Jcl(zv+2%4HwA!zni;%2eUX zVz<76Rf%`OP6fx_s~UH4c-oWcjp*4Bitw38->!DSj%VtNJ)4_Q^ z6MasAfS>VQ?_cRP9HGnvp&<8zR*nMD|FgS0l9l6kEFAOp&sezF5HU&R3R8CNn?FP5 zcVIC^M?avaiuJn6D&o{Sf1>2P`zB(^q6tGvzRg{Eckol71&>Kq5|OEbfcX!TrA3>u z?}bIm?hLnS!hVaRX@Urwcp$e5Rwr=UCl(oO9$A9_xFtpsyJ`J z^c2FUvI~QPzm-OsUxPR}IqiUIJ!Y`~w3aQbKY=P`Bu}TmqobxTw}kfhhZWGyi7O7e zkfg*yow8HWJ2Ph(jBjR09a-cOI6;}UE15f++1Y9)g7Lurq_$D63^CnTUmZ(0=Aa_l zM3O;kiya%aAO9+q%KR-~o>BO5E75$1lAwfyrYKN^tIoFLON~(xb)|9|dT@g~(Ryzr zdScRao7AZ|(KUj~F7D*2&t2C~mWI5s#nPHv8F~sD0+t>1;x8(9SAV>%%`a7TxNrgA zL7^eg_z%l883sUZ2%z)7KyK+B6BE?X%NO7cL)GT$o)BL=WaLJQ1Yc<>=}d59Ny+t2 zw-Xj?0TzC>gdN2nJYx(&s`w>=8pN(Gt!mwIS7_2j+CO6KfZ-~eB4e~2z={|B%8aD_ zUcHOt8EPl9az^(@F3^o|?J!Vt32YXfIs)d-N4*bF8Y8uF#u2 z-246a@1Hey#FKjMbY)6vc#@G$omg)x@Xo9+3Z%z`s+4L=v#`DpVMa`^!D()wDIwG~ z?nh0O=0@X#}HsZY3;)7w=q-`sNN7!o@XT$~u4 zip)PxLc>q~#C7t6zwrY-IWt_C=MPUlw$p@!s`JE{o^*rNqYmAZlU`o~;=xzuN3YEG zs%(Z&zYfhCGXLeT+Kl5G|7U4-a7SL*zo|4vBD%)O!m{97U2p(ZcN6X)yz$?3CZA3iJ`hMJ2!O{sk1Up;D53 zlE74$tD2PK!^6g1ISiQz80ndTOxf|$B{9&u3b0~{CCbT{`-A3RK?#2!x1j>>vCHoZ zJo5Bf_E+BU&lg1dC;lpKCmWj=XA5Z6a{rA@$4&jorpa4V&AxzG46t0wZ2Ok@`P~5C zPNLfS%TYDSRptNw%Tc}hY~<%??^gyHje(r#yvfPQ;{_`8U!i@mE=pCtXG>CmN)MLZ zr&IQxd9M+tH@~=ud4`Ckt`%`roMUu0cU-b2?iKx^u&KvK(7X8G0%bY?lzDZfI|i#h zNO|2Kb7h}w=etjr7}=mL^4Q#g@pHI(o4UHX{nEK$&$4~w2-K^-=>r`QygSfuy=y_w zPoR@#>L-kIWSr&80*31aX;T5C?0=^9!35Pq5(_e{+IU-&A#y|puHaPx91>CtQ)*9d z&)P(@O^wKsuM1S8%05RPTDjVI+3xD8&xUWsC1OSPzP&zKRR zpNCB;`o7Gz_|!P%f(J@ZI$Ta1G&g#h*3sG}E4Kief{OC$9iK-N{R0xmJVzNP)1Ht`y?#3cF&^culPx)7fJs zJF_;i>#Pg**QM-bY~o~dZ7d@}nAY%=2D=di;yqLltk8~O5x?62c*R)~{5WR6#~r1cA?waO?eeYcWad@N?0ShQ)_DqY zm8yXeW7Li{S4EWvX%E;>BOo%_l4OH}hEuo;8*-W#JNdj^#$N}^KOaQhmQ%`jUk<0X zuoxT$z$wxDHo-E>-!L|D{BMk1a;HI7=}jmzi^RA^m4A4`ZyooKZhn%#TLk>gvgL#R z_m-`#j2u9!WB{pNy?PbDYo|~bDjvK^+N1LfMJ!-oyKZgrx;Ky*0hlN8-RYr*Im)Vk zdbX)~)nSNCO)oGiIcE*Rvt~Fl6w6BRYGQM34w(`3&HowJ5eeEO5m=qC`8`vT1(ynP z>jWJC`?xc3e*g2Vxc}crwf&!OX7KT9a&W{a>7G{Is?Zp2UUd=*sqt%juHadbim^+WR_tzJpw1 z)WCKyb@t56o1K**>&b^jR&gG@<{^S&+@$2)(Z?s)3D9V09es~b&p7#kAd|~t{OAt# zx|Dm*p0>+Dv(+lhDw#^E|h&;z;;9ezvo*^F9vF>$XliTO;D#45ur=3qc?n zyXrd_HItUlYooP%+YdZ;Pqyvr%J;VltfY=HIxM`;EgggxjQ8}Eva_4qF7*F{1(=;VLxvg7c3R%x)*4&e^e68QezX3~R;i)r zLkLZ|*+A7otXdFgd!S9j4@>XM@@2)Fsj`-8>!@i*Q)C5$iB>tO!)b_Rn@QO< zQN#Jv3YZYGv4OSEry_J`1(!!@1DbU@M!%Z`5`g-}$rFXup^``%(FP1RQr(I@>VZyC-C|(5*f3^IZO1Z{- z?rxaQO8OTH>5~;w*#os}HAU9Db4&{G45Rou+kmA+YEhU<_+)J{Lzot6s@68v3#9S^gOy4%=8J1feocA`6|nCtPanSVdfP* zgIcN~p5IfYn{>-;ypF~+cuZO!36^=*l{x1>>S{EdWDZM&cp?r;HQWc1TH5mac^-{0 zS(8FsR_FMjx>b(+51v#=6f<5WnEo=Ka;DC%*v&AZ$f3O{^jfTw=}6$Ct=<`fK?5%0 zeW2$mBnm{?YmGm7@L)fGYYQVySTyP*AFH)OW>VJH!zs3?US8){%6qFeeZUzr<{QpGPQ2$z97 ze=*qk{^DdH!vV48v${UTmQ!Hs*%)MBqldD2xtSy=Dw>p-<{z@;Aln@;oD?7btd4U$ z9!z4F65^h|65P_IUDp4s^;&**pwp!5@zSLtzQa>~-sv5s2wvHXPC3Z!t*vh8OKBMy zxb-RS^VLANW?i|M6Iw8pOHDEOWt>Vv0t{ATIF^$;5@sSt(>lTXDK8GHC?@5A!D-G= zm(3iv=pR@s%({qvNfHWT(uA?j4CShUqb6%?JY2ShxJJhxdL2@zIUrdiC(AhSsZYgw ztO|)jCDq;}eg#M<1B0%cMN`x0!2q4h{iUe{5fLsfl(X=TxMFav3+i3P0^QijV_L6e z?+Kpa=QnP=*`2a4vd$C_Bw6f9u4^6%h%0!Nl*K4qHS4_2N*j$GOPffyqn~sZI!iD; z1P%a~j%*d^rpZyE2v^2`p@Ia@YQhKP5`?NWLaaT#^t?|d4D^}VDVp;=7qeSkN6H7w zsmm2D_dH5_zP{t~|9FmPMhIE$VXq)tRa7e~qi96CI;K4b9g_NC8^0}6GPX=#^PGyQ{OWoZ^cEVw`4`@~6*th9r? z2R)cVd`e0c5X~(Zsoou;yD0l(Thp@4ba@6Bvu#l)t5dX^_GN9Nq_(^gr;91qSgmrQ zr_ytC8F$50CC@#mnfjUpeaP(2OQV&qQ!8f4!|Z;QZ1a*G_5hDxb{zkScj6|yM)1Qe z@ktwJscFj{SVvxjy}iAMqffQe+=b%I;9CO;y~~H4*#>SVTsun>)-TcW;tg|>b#379 zpNg#>nGySGIoA_y`pI{$75Td_vcSZ}#b@mFz#Rij!tpd1r{4K{rZ zlq8O84`{`4ZYMDm(B-FBC^#R`2zv*@>OY)bv%0Ps@`YbAI4(9evipRXbkuSF`3vfN z?b6o`cLcP^>5f7qZ2BJYiB}O4LnsD}hR>tq+h~1$gBw#KF*H&}odW?h=)LCHg15eM$6dSJNS&@iGmkYF4GEoZz=b~EJg|h zMSNnR-rbS%xf#jAU_maOCtVD)Xd8*Kt$b=1TO*tHG4j#zcq!>+T{~gXGYXQqLl5`d zYL`@eR!6rRL+aQ+1;gw28Rg^OF{W0zjsBD>TgkRwyhZv1-)t>?)Ko@!9PGS0?t$-g z^Q~7@Og3pa*tFYho+B+uOuVIDu(_Ec`o7G&W*qqM>hYcXqm6rXqTl4I7E`QivOgs~ zvQq_m$}6czu9y| zYVkrTsmCZ^>I4xF@1|vzBAyHAi|o#u{zZ{8456rRPmjUcLRxr7k^J^F5kcX6z!|!m zcb*%e&^$|JrgnEtsY$GM(Ggn=iS_|Dkbe1RP>hMQ6 zXWhIk=y5m$A7YUPvon{(G=K={rPa*r4lFWZnviJdFWUnQ-Z6ESZV2 zi1e7&J$HscDA-?bc`=}s_EojxP-q$xD334;2FS2-iJl_eg8KXWle{t9v>Pk8Aj(yT zcs!@xlYz3vm_0n}EQGBX23kfGMzig*MUbPuir|~Fc>-&2gGz7AC>Lj6MBF$|1#yQ* z9#i_5T=sSIaCpvqfsTZxuV(vrO|*1>?*mHra+1e~@5KZ`O&f zjwl}x{ILNg_?&>v9^IDX(Za+ z(F)R!dN^z*GBd2I;29>PyAwfK-olRa6>IK+w?te~nXn+p6LfC@tb(oif~OaFBCd52 zRuJQB`VVV4*UaARdITwG_3Stx8XK@N<}P-@QWYlOj|x6DG-D35Cy)1H6d>PRm_buH zWm>8YCyNo!?VXY6uL!VZOki{j>+swhD!-yX*A=`n=$^c6ZSPqv#DDOy4fI5! z@$hxq;w}6R1-ZAuP|{){Nb0nQ~r`utS{0-q6Xi;eRMWUwV&pR zBMwYB9ni*wT|SPMN^3H$hA$xF9-qqkmU8nfD$t6)FXZZ7F#yvD4=4hzi4-Vj^rFhv zq6HjIzAc}DJrmE`K0TBZZ7$r8Kxr6{3mT+ryd=Yx6|v8RpD1~qJxb+7)ZNe?u=@Oi@Z!DQVD4>XbCX-@CgX?`BYT7lQ2Z7L?q zm2n6~@oz z&Ms+%bz{%t9xhcWFZOu*pCOnW6M{^$#LY!@X58B)MjeUu?N2pilv!mtCkY#zg;~tT zPW1>UfQ>6vHT2Nv{`tpsQJ0(ubt>)iZIVn})~0N*>*gdUa311tmDvLAQ?EJ6P>_|| z9K#we4%!vD5pcvpGKhu}=)AVh3!8RfNDP__T(upWuGbk(O+#9HNuG%#w^2~NLTe7Y z<>SQ2E`3zoVoO|YMV{A$hri?=l(c+nrAZE_XgN1+ZIAO$EIp>h4#n#RVm%scwN%`YFX%y_qYSo?wwO)xWxh>(0vAoHz{*=*9-&9&FTpaO0kXv3#oU10SDL zfl`ZFoPG}<9Y<(F$_uU$?;>3Dl(6|o&eN_eZmX@`-lyPoIzE||l#zSW&2X0I*rMd2 z!fB>YmZqe--kX%~W`;5A=hq)$jNw~*?(M-Fh=v@ETxI>k&OA$R#H(OQ@u7Q30r^=T zg(K-ME^=}*qIO$XgNsJ;l;o;8YlH{)XEQoL{!T8A*Ky;9vb*oh)&fv|%+&5T(BEHg zr~y9uI`0d41~Xnva-cUAEU;Z8UtNYTZ@l5r+$%ggtD4e!r7rG~h=6V|Mvbg+Du?-- zK7rGd;{G&67jJQMo!O^vKZ6G*r?p4TB!Dv3O4h&3H-dQoU%dr4p8aMRTp!+=fSdZ- zm0VT0vm97fra7)}SPl=`fe-!zarf6)`|96b;EyZ6nNIcB;xmO?Z`m@yiFOUvrpaR< z5=sT*;-|?go$jryI$0e+l1;+fn!wNb!9bd(pFVCe7dfcGwysoU5pJ1LulTEV;tvKP z$!5gQi(}?t?1*6GWj%(k-sxH#=R8wF!OwduQX42KtMo5EA{-Tsw*|)*qQUEH)}-zolcAmxDO6( zvMRGcxQ%h|S-+1YF~&vSh__wsCQR+QeWjqM@xQqU+`)B|1B_i1GceATGhD^no{?ihik zY|*Ka7xc~@+vm{))zbYw>nE4>428#S&>2faG`L{qxgm48cT=|e^BG_S{I7%m_))Qa zNPLwcGkf~g{Ap}sv91w12_ofCwi>{h#v0M-54mLe4r5>Yk|fP9;LFnwK5{tb2a+oC z1+~e^Z`IWUzct z9CpF$YClG7jCEwB;8*!vIu7yshcN@Xs~5QfZB&%ZnvdnDSBOyXD;70%yOPvN@^#b^6`TF1D9l zKf8bOLO(~2EJu74$k(FR8UIL9c|{}mmfm;-R=;IJ5`IOAmBjUXl%A|>;!5>^o=&8Z zknj@4?d5yBYbtE&jum%xzjAB(@PgZHNknf-MJish<$Cd0@cxz&ps)s*d+o*em<} z*Rx!HUmp`8lw0EJxbk~1iNXq%I%J&9X7otc)I|dW?t!-GKL)a+8#u<&oyuI-s8Sw0 z-duONH%HcAv#fhSiSCp?SRdyWyF^y~FuPmFXM59W#)5m|vqoR)fiAHP%aNt|OuXp! zi4nIApIr#DNSp%vZrX2`O81qk@6uq`$Q!g94YXF>qcRY;mpxmmsC&H1@rjZd@(vTB zt`0JGtGc({xv0V*vFU`nk#25`XhY$Xr?UX66Nnu!>P2Mkds}uY*T?Z_J71!na9on8 zwmhk>*+O=a2^Aun6<9GDCe>8%^D~b8Xe z@nrA6s;QJoa_P7N9W@Pb?&uW}2ZN}@+!zHXohm&| z7}Pgp_1d>f9=|}ObC!RAh?*rnPF5T-<@I#%zWAE*WBKa28n7Hp6K5f`bjWj^TLOD5 z%5kG?!HAB_E_;#K&qUSwH+u3+24#2>YafzWwy_g#U-x~oUcf5t?#`mR@p&t;T>Jnm zgbNAmpNE?LDu!G=`#J^fDs=B5$y`h|HOt64c3er)&CXqmOJc175fcYLoZ zmc^Vhex0@N$I_DGBUZp#Mn04Ed{^@BA9pN2F3o+YSF3q{?US2d-=|GIGATW}>+aVx zR?lYs2{JocYU2dTg`K6Md6U*|=`Bku?u~wW*K6MCFJDu3W+(OO$z`vfl78*_mclzi zz&gPChUW3L>*^kFSbE9s?!Xeo=H;yKE|+!uFjrrvj<`>ER(6zJb8=DeAc ze)FQ5M=czhq`lZ2i>SgV_>qHpOpIm=4d2bNcO5o8Z<$R$trFVp{WR43- zVy&ND4-5ka|Ihkv3tuzpw{ihP?p?vWuxq>2ABZk&0vhsT`<+7#pc0~<8`NrmRsSe$ u0c@PVz&#WH{|7$R6b72l2C6BU8J<63yZNhRIdE*2fx*+&&t;ucLK6VcQRu}0 literal 55339 zcmb@tRajeHyssNdfdU1JmtqA96faQRTBNwU7kBsIZSmr6!QI`V#XUf92oAx6yPSM$ zt#6+#XRoVsk&7{(`6L;0{)f!>_s%dS1xYN7cNhQw083g*Tm=Alk&XB)zj}c<($tyw z5de4tkQV={=9zH_Mc0eJq(nQReBICW<;&a9fKamB_ZukI8$rb8Mo%+xN1e=LtQFEg`%7dAnr#V)NW@5;zZnE!0`u z_<&YVA1LzD(%zvWe)z606bS$bSo!(~835R&dMSu#P>BBj+OWP20FSVZjxjN_uvC@D zsi~{0Yi|0T0|3|QIXQtfHL>Wc^P{8U-;K=eXsbW*m`%jKou00j188b!6j&?|4-ZvU zR+<9<6aDiZ$6K@NQeNO}6U)GWB60BOxNMhKnGAJ~;hx~+Z2#2olqm4b(%9DW`yT*c z?Wwe~q@=hwKUdQzws;#i9_3kCnEUkEpe_S5Q!pwjvu3 zr>ZbAAfU0dzIxMam)}ygp{%9FO4*5le3WFD!H&_Q*je~-hb1lB z{n~uwm~dlwibF@#U0P6q5Q+bTn3xz1jhG1yjSHu6!xM+4o$Kz^scU45CyUT#(!@$| zG@AsamFf>g`H?~mGI~jYnU4KpyRPcy&pcJd`Sp6tm7=Z4u38u1EbJGqAG48PkQ05n zQ`h}&WWWEhK3=L+72@)CmnIUqvs5N7UiZ)D>9XE0M)N!lZ-wJbV`UO#fYO(cAl)X+ zy*Gce8zzl17&Uie6wusJfs&g6U8)~TOG@@^E#w>Q7|ofOh&S0#0STq$<+)-nf6n&v zaOeKyBcIy)GyVl`Np^zb5xzG$tTOWoop6IO0gChmg1g}~0Mr;6`T}z=olKyPXzml7@2+!+BMRuDKAoi~Ov-#XfU)&s1Eh)( zE$#^{kMC$gd0u}sosp{c)52w@+mXJwFf!quR75jXYL63y(oBe#Ei46ee@;<6ehefatNem184r6lWRM~@# z;(|IP!GC|=U%Rkd0PZl6suFlb_U^D^52^J#E0UWc0_J*u=VpvZFHGIuL>a7f(^<4# zA4#|P<;AQF^o~OZ#?tmed3pHQf8Nj2xmQA=wp=9;0+^n#*XcKsBMhVOj+FGAsE*HS zg!%%0H`n+J+ty<&L-J8ei5Z?&C!vzT?oGYQZ!QR)>JxEcWOwe9ix$8$zBz?ijW{8X%=i`ABwB#RX3)i`s^Z>@WDGV<5Xj^W96p)wT} zQ}wTaE@QP$qFA#^DG#tYL-KJ8xe5P3kE~A?sE%2on7Pm4%Y?eUpH-b6djlyYXbPkE ztfF_kCM0!Ma5^9H4WIn{28+@5EUtoICjK-gCR?iA)@l@vPG?aNs5w2--0@*i^!T3k z5VV`lsBB;!sFT&)zNQgX+)!m!#TY(A2esMmf2upGvO#HnMRuVag5@c1DrvXu%xWky zu=S>h;^r(BCIZFNfB!hPDB*GWJi(d((+hiW0ndtHXSObk&KJ<~n7BXJIE-WsjKk_T zZWYy!gZ!_o(~rr9Zw4b!5?_B=eZQ7YW1|7)ueLfLdQs@#i{hkA-~6KuGNE182^3f+ zO-v-$S{QrA&QxH|4_n^6k0MjF;nuT=*|VKhNv^aPylhRIR0Ep!^N45(!~(lY2fmty4;+)t;2%Cv)s zKr~`MGj79O%=P7)GvYw%gD)FJ>90Y7E8ISbHugY2?T`i^Wo!4NBiz20A@)f^ABwvA z>l0U^X~S4Yt!Bl2xN-?I{l>u2*G@J|$Z+L)e*`9ElT}Z8jMeB0>V1ECp;qS=zi&e0j)CdmdrR+zPxCZNpr|Pa)r2HRmaK!Ud8mAaZ|6^@HGtzDj^7U!0 zSI8O;KWxUV!SMK6w%EIM|Qc@$?nH;@!z@O**kZ<5AM~+t#g3b}!v7 zJ>L)dS3f>2^W?Lx^_58a8Qh!nmiz`roI%mRe#a$N$fVc4Hug_#%y&;0;(-QAd(#>r3U6`hdt89wXl;<4hy#Yw!uo?|6F&y9t~f1 z$k|OREorU_oaoIhXcGjyY^gTDO2g|#DQbjN3d9yD=^hdY+WZ}%$~|IQ5s2wY>8oy< zWky%eTgtxkr?Q57DL-6YcM8)B89HL?*ZQn{8ffE$Njm7kq;9Xd_*tEwS)8>PkNrl8mBQ8mV-PqLCn(Bz9mDR*p&Y zWSO&ziTAoT!ndgHCoxPu4lZYg0d1{IHf;8iSqonB0!toXQ!2$9>uZ!~;{*ax7?i{t zvp$x@MW81dYW}fWSb`+Q$X#ErvDL*?4m) zBI!thXm#Yl+E%-!m(Em1EBo*!>FsGxqb#)>@rDYW{kt>rIQ#(~oUQHSU-*+u*S@_4MP`Jm|IPsn=Q=iVXoozg2uA(Cu90 z?x=PH8!=tpU-blu%*uMixjBz?7vRo`w^~uneg{LOhej8W3p}9aBq7}Pn!Dgwf2XDE zT33sQKURuC-mA%;R;b|0x$2?3eSQKIdUm^aY`7;V!udZT0cQ)obyhG7qZv02`*{q3x`QP~*`>6Rp9uKLN*TI-i^p zlT6MO?RCyN%9neX1qbBQg{&O2IYroLuatVPj+FO|lU#0=sxtIM{OGc;s*6`1;EI0s zB})X#`+;s{(GwyZJD<;jZZ}(<39BQctBlz<+puv+-;sy~c{-h4QC_3?3pOOb8!*D+ zF~|T~LQ18M2?lbLZJ$=gAIfj=V|AOv^}>IvJ<)BH7sHbs!V)_om?d`g$*fB9aCQBn z+8NE`E(WXSF85E}Q*3OKFu5KnY|IAimvoG$*bYZSzWa8r#v2U#}5#ss^wKyLf{ttp~O?{3c< z-(>Mk;V^}V-57bt*%JCeK&e}k=B*+phdv?l=Fdk@_dtqA4Q)^RXQQEcTqI_yv+vy% zi*@*ctHqOfIyJo7`e})|hov6c{dEj^X4^MToC|?jil&-e>BlOBRt!xM-rCyxtoa9=clnhj@zkWhD$?}KPe zM>l5>F^|8$6flgB&>r;kedsmi@jT-RrdR)*$i!)nW)rd*Ehi7$#raDUze_&Ro=JR?`Pw^XnXVu@KVQhA*&26i-BxB?eT+o|``J*L8N2|$$ zJ)9)P^YwQx1kr-WuFswBL#=9_i+q!i{k+Hm0t-g{+e?unpIipzf!Vx~yT^ z>n)))b7G(qtA^T~!ZuL_mG@_$h6l0R_@6y=LEro?cFyAKnPfI{uNb)2ZK8h49>yht5pcHru=5DQJ;8Q$(4JGiKVyd+tHc zJQE8oaP{9(h`x-P()&{5R?6Cy-jdZ_?ZYeZT=a~dyG@1wB1 z^Rpfw4`=~LhNOEEY_HR~Dhyg7P6AI`C7%}(Tn6i%F3-a(AOg0cG3D6GWd78Q66Jjl z`*DeyH$vSzqx)>SMZD(sg`xT8v)QNp^qCRsrB&o&g&}v-Hak4$uQG9WO3K#_T^p|S zUm{zKrEV!ZFdPU&viwqX8Ba$S)EY>Mbe4sD*tmPTMfW9yS7~|cMdrqo6Vg?g@2$l> zJoHa4oFYA-ri$dR*@|aCFz;ZYKK1E{TpDglMcziCjfDE()K!~d$a<$8(~6m=yRaBt z2yl^$SL!XsU2v4$wyQ;L+hB3=l16zMCBOaM#12Hiw7&R8SpQU#M8tS@{6IsEPEnb}V^Od6DS9m)p3B(*d}epUw$nGusIyk$!(MWg zib+x7xlMS~IH$#Re8pFSw%Y-*lF~}dDZfp-$GdC$X=TGT;rA2j3vGJaNgLiMHv(LY z?yoYufliq%9F?mdZ7Y}(;p^V)E~m~8yyldvi?eaM4yjVJjjRfZaQ;;!8TZUG{}=%q ztHon4PU6zys47SMNS?SFgD-SzSju6i<3QHe`rDRVElQ?W2JX+LLaZCT{7Ix6F36EI}Pwd59o zn7+}7N|l_)kI&m^(qlErjbHlc^XUCA3*ezR^=BKExXnm&@Nx39`wFfMyUnz{E&qz7 zsS=kw!a^Ih@QL0P*(OdaVO59LQ{Dr`rRCn^&nD*0*i6z26n%84qpbFFXU%Jv;6xMw7P_ zPOktmfF3Zu`z^qC@4cueP~<$yFShc?a`u+*l3XaB{K@OtZSOs)Ito2Cbs5Dwo>2We zUrjxYqhJ}xV@{`($HcdE^4)KGRFy&>bukhswr_pv7GZrGGIW!!euXH3@L$P=j&?OD zQ+G3ZPO^6G#f?QgT|>9Gk&(h7;+kf6`V;vC5Y|abt-eR}u^IS$ zk8E7wDdKu9hI`V*pd~J$t_^$0duAq<03_gg<0->#qaW-OIDBlb@Hik(xd81CRbLqz zYgO(0UG5_pEWhWFx8L47-Fx9ji5q#yu(`c`Q~HC`|KV;1v7|n|LEOe!bGDMLsJW>h z`ZZ@G8NGdG4Pe>mH9>ipg%0ioMizNF2KU3{MfPb_`RFO9wxm6l|-u^X~UtFxnEW%0twvUl==HUJoY!$ zHf_}CZ5RFWfCya=SFS#XnL#PjI9jthm^Zbz;PMHZ@)fqWI_v2%X6@_iSu|C1l+2K2 zk;9yjyZQIfuQqmEYhFYOQPbIsk3YdOEevs<^W3}_5tu6R&Zeq90+PC&h3A}h(rrpX zSwI15^=>>52N7F%H;n5Y<+t<5rgGAIW-bOk#ly*JZOw%E#pcEU3%zSrV{2>d*C$pH zCZqdz-Z__T7&dcR2}$%#*3cpA+G%u}UO;;r~H2rxtV~;0ZEZPzZtq#o%NOLFppH+!P-gQK5 z;7B+(xoo$*1ghf7KyDi>NZ$xs#FbxmoGkCGnw)=NsW}yDopZ;I7Ix(=FuHW`dk9PU z-4CaBJUbfikhOL#k5ll+Q}+Az)n@fTc5W53qN|9ssT4B=o1SalZDTqdsDfQf3r0#cWp`%5)JSD0afFpWUKB6j8{9gRE0VC&RA5}~yES^AA(uns+qn^SJK zLO&xZW0jf|F2Eae;Gv&X?bRdPXSCRBrA%s5MdNV6>Stu+H`Uj7ss>s5{)u-l)WO9Z zj7@sJb^(4GwyvP_9PeZ(AH)veXn0>@le+aUygB2v6 zPlZ!5evAU)%`T-m2z(N3r}UUv2HVi!y~~`X6@R+f_LiNq6M?Md;_%yqX?0vcwne_t z5|y@uqRQC!i&KP-m9P169xR*yJ@y)05>6W)Uobf{Y^Ha>Gon(^+wKMCy!#8UEw}f^ zOR`RJt}8vDEwObLlsV`&@(HIjpp>gWVh}niXpThvx>4kqV4)BXr+J{OCyDY!A)kv$ zkLXWtfpmf*Jwf+fCAmghiu=E8LPG708X9%Cx9*j!jm&`?da%=buZ(y21)2YR ztFWu1d>F;gVW(sO>)Ua!bUq(iJt|hj7RKImC*8VK4enTYoleHa(yR1wD>R~LM=H|3 zq*!NjhO0R5AKca{2Fqg}z|HNLS=&kQ2}yAK^u?GC2?hU@5HbaDK?&3FZsh#$)>R#z zlcch^wR z9KGziUD2{n{q4;h(_r}mM z+%yAmWI}C==ScbZqWi%blf>WZ^yJ7E&XM`idGGZe`3`I~UI2JE_F>hAZ z;VgJ8w}(wBqKt!}h?^(9UmGJ=kFa(TkNR$T*yps>SqHh4>l_x%y_i%#+k;jU*Db6X ztP4yhm8z^{yOVkgQIlk{VXK@-SX-pGkx_p*Z5Ms0_Rrhf4s${BwA07^kF=7^NF5{h zxwNtc@Hj&97XH@tlt%kab0Pfl743*|%R3=!nKz&8hH{5#nP^yLk&8Ysm0S&b?vT~4 zRX8^K#%ds~jv9u3^M115ZvW$dg`aa)Y4rk*4*r$p>1M;B>4N`}5=C1jPSb-;fR1r6 z&OpwP_#}u=+YM!>eK`YhZ*0tQu~K-kJpYKeP$sU835G;dER~f^+U9T0D3%I0-dkGd zg!xV&cj)Vu?Aq*2I+XkGH_o>fv$l8I$X>0^6qFu|d?9&Oy<+c~dJ*JgZ})%}+`Oq^ zm+i24_qb+KCPoeJsLp}^uiL0Bg z0&io6jHU69f*R)gAsB{wt+$)nc^!oP4>i~5-d=kHoDVGN!bjCdJT?oO5wKskJiJ^r zmsqI{mY0ijqB?aq29glCvY1a%j$*~i&8;`5=!-`m;O#9ADX}oDBD$%{8clM`bR^0iUA*3Y>*PhY6e6f@r)TEs&<`=nK z@Y_D?Q>V0NOywFF+z3+8R6tB3aCzcr{U$p%qc`8SCN9zn7~5D{7Ej)0VMa2!)+*S96t_45nNlVrQpEF;I_0XeX^*3J5q z3sD%Z?QZPtb}w?scS&A`p2u%;yzF>qA7fRVv@Lw{79}>isicY~=z1qOx{SQi#kqabm!;vrdws>?v+IsoXOa3#hMb zaCp9AvUsj0Y$H&r{n3?+wokMbB`b(?qVP#pM0|Q>zh7iR{m+fv(`JCiZvpQ}@A|U2 z7L(Y4Dp)CG^M}K>i0jS#lfE)14zT=DZ4&vTMB+(SSIfhzIpkRQ)|`lCw!ee7`(}4o zk8+LM<0SJBgIk}W{6^mIdT4Xh>KB&@#Cj1OjvI%G2l8CKS^}upuikE~LMeDOs(vy8 zeS;vHmav=d>g3fSV&B@+->#M|<+AkDyG2iAAk`JEx52LPw{mvvs8J{TBD_38G%QWo z??s;7jjZ@M_e|}~Ol(a4A??N{v$OX^$n~#Z3fBA23fBqi;k)h}mfZZZk=`p|m{UD( z@oqr(#==6!%zC@CG)#=q{b+7!44;LrL?XGG@}ql-iS_L7-+LIE0s5Ox$@qi)-qusP zW`74{bMoJ!ncJ2hL}UT7p*?{wz7)CQo%oncKOleMbj$`!Fl4@LZ_y5+;CcZ_GyDGi zyHQlsA%H(Woe@X_N~A?~M-8CU)=ncioj}FO7HhpjGiUh3`R$Pu@KFp6El@&$M4mVs zI;H-H^wZA7LYgrM3Ggwy=LI?0>$ia2By7xu3!M4IspaY3=6X3jZHZE+BeE|8rk0kL zrlyv*rl$7&JnJ@Is)#r(blhfgkCO9A2od}(TUgSeA&!Z?@iG3n7m&>YG5Rz2NkdIfhndj?a2Kke)n|NH!pOkVM392$iph;Sz*4}K@I=iV z+(lDb8uuvxJ3zs7go)9voW(KP1z<_z>Q&!ky&Yv(m%y?I40RY(jRCv)Tsuz^z zwHvSt2JKhA1$-gRjt^jCDfG&kzoaA1uPP}q0+8dOdIJKuUnE~3`uD%ZocdU<$PFJh9)6R>8eFwaZAPO4CZ2L$ zR*7x=E}nr`hRT_YI-NY=7~;VHS}fxJS59K$^Pf3M!8w7Ru=DOj!B)8*?&@OSSd+h{ zr9Tf6B$nvj5)lEBzVal;(--pQkmpYHJy!Ek(83{RF{%D^3$E(o&j6=nKfizr8;xTb z5Lsj{clvBQu-~3p7%#*QvWNhGb@5)OD&ZhSH#Gm(myy?n8~EJb-%{mK^j~SzGonrKz4fj17$U9WbP}=-Q$fVOQ}pkvUc{Y zroMqACKe7L8%^oQ995^wVE0V-8Yf>P(%-;we)PW&n+Hj@y!4nJov=Zx_02n!wxu1~ z%t-!vm-|>(_RL{h!_Re45x4f|(y15qQ8BF8O~BfsZA2dMydouA z-h`l#8cURKO$QcF$CQA~%gy$#@*1*h)1S%tGqt2tTL!MlOWyG~7nhy+D#sDk9elAh zM`4M(yQb=d(unEl0*jCU%RC4ekEgspvn5!{!{u_ZPnEz;7=eg$n%^etTfvSg3D$Ba zJekK8Tkweeg=CEnc8(zF>Dnc=Kc@4yn)6*_d%MRMW*}{C=@rI&zh_+@zjc1((p9_n zws)3uMaddqJ`xhlM8V>LtJoUrC}@zZ4ngyh5wV?(Up!@?!@)KS^tVzpXzwq9|{wt=tm!Vx*zNauhA7Jm`vr?;57qhsk|(F4KXFJ zJe`by#xk836b$O2`iuXv0Jp5%$pHcjT77Wbir8T9cuQNl(DN~x=ILY_G|-GMOnRXY z&kW9lYeq|Jkti(^s)`eR_lVJVD?R5BYD&6U+JDU9vJV|NTAWnd1C~L8~V=3YwAgYHykLsSAqs)J-l*@28KED=m5CIu<ut?>~lmEgtsA|;K9^FhT3_xr=tB8%W#j0B&T0~55A z(L+mj+xs+owZy;HJE^`tv}&R}5|`^QXS-zRke0t&rE{E8)8*H!xq9Vno8aPuDSOOU zQ`{^E#Gcv$I)m+eJXC*wmKOqPKb|tL24}+iNF+789%o8K_g>d^-rSI2-1w+d%0tPu zQmSwB2wgF#^^f+Wvy?pzoph$p=H{e%!WMoTT-r(dcOo{6(EqdX2sl==k3b^Uuc&?kKb+51cpgwJ`}fT?*#*TQ>h!y|m!O?d0|ZFXk9y!NTFAzggt34J*%J3h;w z2aELrws4D`KKiuuczr2&S5bSi{L~XyL-RsQbnEXg-3IzMFS?ZTByZgj(nSD;B~1uN z&Gv+stO4eF6#VP@`SQyRzATCDx*z2}=|)v7epTH2w%)tNGp0n! z3QLu!ip}wwtkI5AO>XBdWDWe)@oil1qfA!aPDW^AZ)STOvCQq?Cb#PvH{x`?Y||K2 z!T$&Xz)&)l_F7-r1ZEM$K27h=!1G9A3-os#)2D5T^~rLCmYqqE*l7!R)Do0SVKgG_ zM>S}$p1MpYT!BhDTECQ464Gf%L{+BnMk*ba-a)X!@czTZY45sif1JWM+MsI;rD7Iv zs1OmG&0f z?T=>9%Cz3Xxj&%BH2n=l5)sols(5oBuFP))pw*`H_6G?u?biGE2rERfK9Ug#8rZG& z3pX;K>&YV}_MR0IyJH|SMKM5rgqo@vD+_zHaIDrS&f}ja`8GJ6=dxdpB>S{cKr>BA z-VcurX>KxFPR_&^nQk_{LLE=zEO~mvKI>a3@>pGTnA*!}p-QS@irHf>UzU6>aWmvAf4|xC-Z$_jtcL zDH5~PzWggCp%oNOQsXrBjU;_i@fSi*>6_cEoSof|IIrr>AEdMMM)h9$6nT2+6D)^) zS#NU^;_z{ol%Hr18*rCz_p&`TQuSx0iVvo6GL|{f57erYNE^erPfn_vu?d8x1s@Ef zgmFnoGKa@#O3E$$PVk&&)hq9k;e>0e%@@p$$9sK|$8k=N-;5q_xbT6kI-e@6TK>v} zvOZo>aIKF}FR<9IJV;Ym&%8K!*&&ANVxdrCky}ML%)<(6Ry^GoetWkaqs#xI{IxJk;Fc(l0 zc=?Wn>_rIHX{|V-)`hJE2I}dIrH=Tuoczv8HtCI7KlJK_%Cnd*#w2WQI|oTQjRy1O zkgBzl%ur1G2M@r`KbI*w1Y+5XyK)&1N$MJ#+SHNXb$f%cG`ivpCrnO0!9!UzNo4sv z7_F?oi&(LA@NVi&t83%6T~Qv*>4j;hlMi}eo_H+9WiZ;gw8Uxd(5w;m>PscL-+5fa zkM^x$Os3L&x0+RY_(3nx#phT*IOg3cZFXcP9TCTMZ>99W4vtQBVb22FpMb?^929_y z5CgJ_54j__2T8t^iHq3^=?{3kZW=x*M%r`J>{8%ubUj*^r&#YP(t)veY1YD2!5LBs>ZqQmXx`d9UFbT8 zUjhXPAv7uw%X|Edvs6+MK04{eE%?q7MB%&19?YaofL=s^idBqY3&_c8u;}t5)eUFb z-Dmk z1dsT>Gtsli>_`CrtH?ee!V^_=|`KjM#B*N@$d`Rim&_=AA8=H zUPY+{cZK@XGomRn<7*IfH1}*|ip`MaO)9NnlK!V556W!lP4m0TbD;dZ;c4r#CPT47Kd9> zN3AGRe#bB7{s1U5e@m?VAZ0dWyzgC%)*##I1`9lNG?}AVXB^j>k>5vSSBLT$bWa&8 z(uTE{nw&Fg4>UsavIBAffGCzk#^k)@Z1bB8WJ zvLD0C!Q2byR9j`V)f+vLUUb-1-1l5@?}=j5odW;E7pq6@fY2!FNT;4D)iX0RV^^@ z%lPXYd@1ks$!CZ$PF8|G5`3R>t5W;^l}9x1p1x`RD3H5-MIU%XX69p8At}LX_E3^O z=n1e~UGzsJ1^sm)G5Wb;{tCTKs{*IyL1?cKGL#c>E{?>L7q5X8_W6;XzHMr~i2H1g zd|A26kHfxEH&3kqtOm4@E?!RazlCp=hf1noU||w&mh!IjhMMLRb2&9raRQ#&@@mZ! z0DXmtS~`~fkB?p>7FjYOQR@l%(ONAZYfo(jzrs(5cYeK^(J5*G?|x4nT!m;ahV|6a z+ujGg6ewLKHY_9mNIIq9_>du$L4)Pz*CFisLi2fL9Jho7MY|RRSMYo6_&j_aUS9Xy zUpNHu-I}kF=`W3s3gm40rXpbAD{*}4zu78Bv1Z+kFh@(SC{Ly?(zx%oF!ny$S}EHQ zi&u2qr%9~kSBHzmCX*8O+dlUH@}i70z@t+TX>^0K%f!A}`qK4=o}1l!n~N(g(zX3gdS<|#Ql8~=4Gu7y2Vu)DHe4A>D6X%Oo$U`ejK0(H-*UIf zvWgHk#9M)?SiRM{m-F8aniM+5mZy=C9xrX{9%)=HH#1}b;m zzL45B?V@vs&OFNgSTyh*JM%w?G6|})yf_1a7Ovyr)qLckXX5G7GB)0upMfaf%Wmpe z|6C#=hyQ6TLBK?0OOa{5QZes*O&X6=JAL3nt7U!YpUJ#r6A0V+%?n9lMai+*5@8nZ z=FG`c?3aLm!ta&}|2M$H-y%0Yp+s5Pi9GS*AG8uVG4ywEzPW*I8`YBbW)m%dTa+FN z%=2wb#8v6vrh|R(SK%BQj!&Qd5w{V{CcwUQH_}rhY3FtJ&zjoLoEte<6bLAzPyU-3 z#k{|`>{ryUr!^F!w|@~wG4xT|kxZ~ND;Rc2zMy^a-@ia}_=6})4058{z3&!wR`%A$ zdOCEK<CB08snwo^WLX5o3~7itSm%{?10_*-7N#=!mQG`DQDTh)Wib5;7gPV zE`1ci#D#NsXldz(*MKibnHR~LYKvOBCr%=a0R5?%G4tW!J}D1?QfX~%I5zHUfU7h; zk|9;4=$Ig&_)EyEQkcm+c`Yj+p=IwXsCzO9#z+2=mMUJV6cM1MCS$}Hg3lCsey7!iZ zkJ_~ofn925S^h?x$5*bt;c6vHvM{z{a;c;(pA0 z0jS48;FgUHu~k+b@0=lACOhv79Fpsk!)oEnsGI+AB7wYF><54075?7!LN;w__W`3i z^EPWK3w0FO&i16Kg?pVH_ed;140P*0$Q9q2gjRxtQt8r%g*_OB>B~bfyZ+u|+_7o3 z@s6e<0saVCL)0&BrD4>ae%E__UHYu1*AX{o*XLs2grr33cs}gNNBS_d73&2i;bkB6)I^*nt^KXNs zkCTyt_3&l$F8;s<=I-1Br>@51amU@B@QYc$nfm}ay|^qV&f`%-Tnp#?E_1TQoBOpt z#P^ti>Ak|u?hl(R|cq&lxwS1eppaDFzH9PapsDA3C=jXFoe1ys1~x0E!u zNeur_P&W1!P|sj@%fT0DVd=RWIRDDJfu-G_{;Z~~`UIF3>Zd~im zGC&O~{CSMbWp7mA()1V$0;2iR7$&5#ls*da@X@vY0GlLTQGmu@$ZHf(bbhjw@%%pB zn!;hF@2ioM!nNWozgm!b%k}VEF5b5c`%(ZB=8RWG*Gs$2X_J#)<)2;lWoGfFmNih2 zPNvOszk8-!6cZeqbJ@z3K$uTQJ3w0y@qx&Fyb`n$d56s1QEHD2TudUCy_cTtm>z_J zf|JIf>5CE@-50$HKI#Xtp>=VU7KuYZW_}NkI)_MzHfPa_?{X!%JWI}A__FFfb`5$? zBxmP;*}+UU$)|@1{vfSbYD;<0+ zt1io`Rl>xxBdzP@|F7B${vT>@kdM>X>0pU6@Uk6nl)u(~9e3}S>dgSDp@!{yOM7)W zeIJ_~e7hps%|1LVo)jzLF4QdLJl`^IH-1Q%i*aM6?$cuna}X>ecwFb?tS1nQL$Q^e=gp*o%H+EwVEH)BAo0Ow7H}q zvn*P9DPN{Y@Nvr1pC=uXB`$Z`+bS}UhoqjBa z+!EVreH;aa@Tpwgz6vF%?^5lD++HXX5rUD$x%rHAd+=lq+Zi)BeH~3Abc^*#-tBfc zhxxS@Ap8$vsmR6rho7Hy2*EkELjkJ=PEen?DPAft2?0WP{|KKipcY<}q(;iW_ zwU9QkLjTZg&oz0uu~6$k-2s>F*~g~Ey5`{rmwOyCd4?T7CTYIQ5aZV9cM+~=mUW9) zUGmajHNGM7SlQV0I4G4dghM+s9p(@|>Gx7F0f7a52LIVyP1)42#A%R7Q|4=JJjN~a zQIQs_p=+3Fh#Dr?31Y7Jj%;@nEE^_7P~+=OK>p~0?SG#be{dh4rMu59kpTP--KUvy zcPffy8>O5}EbC07w4c$P834ch>>oe`Gx&XT3KrMCQA%{qK7uBH_9bqBHK8kSa$46r z=xS+;_S)ao`gU8$VN&j!&<}-$h0nLsGS>VKi>FSu+wHs>V^@fjZM=n1=jLAu^@yUP zp}H1L6^1conPq9UIb#y9+tXMGaWXVFmBp|zNOioq9ZP!!H1OF2k179^?cUeKD1w~pc=Y9mM68L{U!_&OO19~yp)LdpZZuOLa8YFxE8pVs! zhyYz~rH6Ckns>JzVnucN=|8qN-`w7hN$H#ZGho;kk1DqZH$W z`0#U0=-WC68YBl({-@*G!K3b>es8G`x{R8nEg7KUHrJgtpi@eU2Qpl##T_mO(UV>E zE^8KDv@Crr+iSD@+|?Fcu@5eu?3_Va`g@+-MR7cCm+*bQp65kJ5a!C$QEkdLwa7HB_8`Vt`@cug>hpAia#tptQ!PTtrxVZi5-4f9P_$st`(Uth-SJxG4LEFYq1Y*qopi~Ofxz|9u>F6#BZkfa64P5OV z5^He~5!x}Wtv#p=GO8;?ndw3egwN9-hIx&2E;f5jrre zEm$A3`%}U>gwb%YQND}sRJ)3T^!IDj*miA&|Lzx~_=DJn;Q1@k6?4}2TMM_ZQ_1$N z=GNXD{TBzDxN3;?&!=VA70z_|qviJ;$3|Cn zSkQ_=`$L?2IFUsky(3oZKaWrEF0nV4u1R)moWd~*<1R)tU3xnitwCJ+>K$ifiHXp| z1L5p^4iOr@2<(&GU!maD-w#5jPw8yGyfEv5#E7s%J$`zzseJoX@1369NAIbB5akaV zddrXkgN`)Xt^T#|nxG z)zh4lbA^}aTZjbyt|We0>MQqG8Z=(6HnIEzlEX#;>O?LrMFlAE*I%k91v^XLm!N+z znpaaJs7+uxL2Rv>${iD{r zp|he+X{bTkC&Iq6QBLQac|6{Inz(Vflpt@K+HrOX>zgy7nVw+%V@N~n&_+V>Hasa* z*w6Q!S$iRz8h5!zgG)Zsw+z#qTVYmaWp2EMsgGitiD?v!Ul)u7-aPk`*UL!C^4Y%$ zOTk2ECpK1{A;GB$Q%48B#y(w1eamLf08^lq$4cPB4~69BZJ4zjE{jZqzeP64&T)}rHI0%uzaw~^tHy8cufd?&yAA*M1L%?%OPXGFF~aI8uk3#ZaL#tn}IJ)U*r1@ z2Xn85iw}a(&HYR0@WB}!%(@Y}j#3V~m$UyeypGF!5MS)avaIXZ*jH0`c;e(ArTN+p zV%jzJ$)(p@#6nWnch`@TUIP}Zx$#b9Fq&C@VZOGyZP3cUh+$=AE%OC|c{E7;(yB@q zf~^sotL5)SG_l%Kf!Fx<30RF>kPCgC6XZrD<5*jpTNw~c_*ZHx7pAuI!OA0dc-ius z=4%{s60%(u*IExZmj)wg+;fb`3Kq=F91b@uWSW2*=4IdL{c0h+Nc#4kA?XI^jCa8Dlft+ z5h2E3f33%ZO{DCK$?N;S=gb*oHX|C^3_OV!U_9b{x*^nG76`jE@tVQzuR6nq?(}S# ziQYVHApQ-%c4emO)H%@hc^=60gu>44zgD z>ztVl-wMXHQ6RMCdXP)4tOWCCgXr%$RK*?ZX|c*syT1(CvQ=&Og%`E$D+<@UjlV(7!^$aPZXl3(H1A|$8%q0kvw5&b6q=#tfYRpdG?pQ9F)aOUya9ZiK|0Rwbj{a{x&FtOvn|?AH#k zn=XEMUTg&-N^i45<(8x&e+zkbT>u3PbW4i{^7J$~)hR^l@zb+1GBeK)C^&N-dqU;i z3Sb{qd+tk`Vtq)#6r%17nWZnOJ0DlVc$fsgd>ogLYJ21R@eJH^s`E1Icf&yS_vp}i z(2FlqwBMz{#AQJ({+1i0K$rv%5RgX`K<~=RDUW zy0K<|Mz=={U!ALeEYbD;?Pq`5ub71~m0v#Uf$ep<$zzUH;ScR<0M|=ov7y85OO9q< z`pm7pS#4Es#i2MVGiwOB=)OY)kxl63b`=&rUF+c<*|-;PgZ{FvN{j=fk>LYPZmuVFJ?`H3o-ywC$NA%o!59v3t+{5O?|k0peO~F|LlfZyDe6hU z`I|VJHxHuRTj&odnYU-wN+hlY+@!ifGxQ*YYpqjI6m;vE^Q*^VcDK-MzB3;|J;Sekn5*9A}D?xGI(nJ&rI~TIC{q~J{_4!=2%4130 z(Lh+>{O~F3eYC!}+QY^@o6#TPv!~L%B&kP>FNg1aZ`UcrHQ)4BI0(Qf6L0eH>V$vz ziKHX3xp(uf;}t!_<(pfn*1|VEDP6Hs4C!}tmVFbGJ}xMcy#KoKg}+agp|aXcgS$Yo zG$>{G#e$=R!N~G{+WkRuy;S88QgeB++R>LCsg?J0|oDbv3lLUkAHMlnM<=GEy`|-d48}WPT~U zy~a;h!SMfL77p1W_-i9M8sWmsBhKey7_Biketl1SMt1!c+%=>VKI?s z0{pakx{-Fqk`zPFH2m)~FfcMPBqZ&ro_0{pkZ8O!0QoA@-FNOH%+0o~(|JOy!8X!amO^z&Vau@e-@kvCf3df1 z^sVQHDOSu5T_tJudqsiaog7h8>ID=!1WdlZ(5;ECp4iQ_L{L_>og8BoFn(ub@_Tw( zdB=?k$BG%J0N>G(I%aN})@dkhb}V{lb2L2Ip21Kpyd19kgc%ZRo24-Eh1N&h;BlU) znAp(~&dRC>{1kYrk~zzgPOmsCHa1r45q~O#M(BsZNIDhH>sxG=bF)}HqP%>=r8WGq zMqXfGV8+lyRl%(cEdZw$S?b9jJKRb(B6I7@DM!G;5G`8NbFBZ<_ZQuN`_2`i2IE_nDYPxJF4yn(?o6_RO5=m}A32mG>z_fpJxl2zcn~ z?C}X_25$QkPGT4s*kfu$*dDunn#hq&r=#<3M99g~3M0~VPi<2dz{hQFYjf_bf7o2H z3I6O8Ho64zC0A9cDYUu@g4uuE*q%Yd=v7015Sw~YBh>Grh?AfS?Xe|v7ofpVj{bkwN)t+OTB31V2S{iu9jDRChMSS_NfOvBt%u%=JePXW1*m(cDz@6YAvrdF5o z_d}HgupxONk+%n5K3ij=U)32KM=O68W!Hhs2eP>r) zX`e`tkhodgjYuE4p^+Ew0$)OPbq)1JgPZNRSS_(2EhMa|`v*8MV3KE!0k3DMfE7ry z=IcAvy{h#_5@>Dkor==h!b)Sq#2n3rItF;bm{al|InTGwy5Jw+=L?&`5(NbjCEL&R z40LpKLG5(QlC%HhW(5NM|I$y}1P;l0qw68|R4D7%o~>9AG-ocv02RCf*3W2hcLv-D zhXP;d%)C>-T_a6{u>;OJl9$|CwB|RILX~f*hN^`W-Y|ZonS>1l{TXW+&HXVg}1T0CmZH0Fz>p<^5L%-%P1DWcp{ja{JQT*0al zc}sqQwgjGvEiz?T{dFJlMX=If6 z3@G?L6Fuy1M!CPkxI6z|;dJPEEMLo{Q3>Bno$75pC7*#&j-}8Sz;og6-82I4C9{z&kWt7PraLcH_v^Lo4c(d_PyXjj5g&M%&cnz zlO;Eiusd7^tfZI9cQf|iI_BR(Kdw5=7l_j0Ya0FXMzk& z#B>fk(z5@g{GMmZqxwmpNShF|=+?^o{CvX8N^<`BS)5bzBo}LZwXTWKE9!_z-%cP@ zmE?V>nKtNiN#10RNl}aacuoU-<5J0f%`*9D3z-Y>|AtW$&6DnlS~G{B(Zkw9Mh(r+ z)>U-^P=&;Gl#L{c4S2++$Uk#Jw2`+>!2G1>nyF+g3$Wn^+-sK4Z-{N0SLO$bS1)6K z>F=W9y2E)Fc!Aj%|F)5-{N&RCgq6v{cb7AoXAjL!y;Paj-o1A=u9$oces*RDF zQ8vO2SeQ1qRoe<)X&u<4b>C^Ytb7fM2w?R7`?TJySChur^SPJ>CR6|5H^8Gq++Jg% zZx>?)TY4ww%Xh8;pG)po-MB|%unLLNa-exx418w&yBWsIlDkmay%Q$?2$(jh@+kOQ z5j&5c)wCOs8)4>xoL1<1Kgk_65P_M}Rmk4Hmjx%_hxaSwdKgC{3Q32tu2D=p^xrhvI{c5+<4ZDDC^t6^;X8=Au< ziZg71J@(G4tlWy23odx_+uzR{n0*01i&QCm?Yt)la-DUyw6uhv<=2LoojwP1$9D%q z$-=7gXF|iyf5nqX?Gaa?mt$T|k8J{wQKhaG2b9~6!Q@A)*%^Xu|4~vnx$nowbt{FN zs=J;IsRVyJfpKJsV81#oAPlu{DZTTzj@hD&yERT2SK6_2r;kqAYnsBG{e!AG*_Qum zc0N!9Zu_cJ>x@!rw+jR#crWHZ{|@5djMT31`LkR#hXdTMB=r*tq)ky(>|z?JAGPXz z{fiZ)f&T6sQwXb5`&l)&c0hUK;Kq${V;-WKhW}h&u?g(&cqonoZ&f(v2&mmeRh~~a zv>P|Hs_GjWzHqDl2o%b!GwYa(TU~BZO%AV1j&VgypMmEF;v&F8x$t_u31I!LXH_%p zl3w*O=rvs8C$ z=dAs@Pk7?q=KJ})sJP(TK&~S*)Ow*+729L8HNlRYyu7@xG$OfxHX8f>mYT7b{T+=*C+iFf3?x0Sg$~*D60Ko_~ab!-d;X*hviwN^3ZVH3R0zK-#z8;ws7bo^;7 z$O#61nCJ-@bK2b6!Tv!E)8Hxk3(l#ix&`Qi@Hsfo`SIOdyZTR99!uZwEmw^WS;G1g zdTT(Zjl_ltr{27|7_fcCe}0ix(Z&79%y~6-+efIvmErH;ro$l?X+NMZ9IlC(fIwwl zv!FA)HBcjo&(-r`AbVh~uWQV+KzC|#{uZWqD7uiqx15*mPh2Egsl(TwZ1n+Ekf8Fr z>B&)0ki!ZbZ9^^VUVp{++*JO}NF3lXhH%T{|H1`f8GoN=N_ykTL!TXXBR>pxM^2c38C$b$wjyApaoDAffgf z(5aPBD_>Gc-k@R+@)ntIq|(&A{Kfo=H}pj|cyt@M0*hPWxJu zk^RjvJm0X~+zQ?@WM{^9@$&CU!o~n_YqCe1SE2oE)gIXalk1iGP;} z3GSu{4NXIm_ucPj?L{b_IpC@1i%#_r*W9#GhQAZ9|Tb14V0=H{}RvfEc6>U zzlx_I3K{UIb}BZ}>GL9(8N0hz!HQJH#OSkyrp0TXKd+#s zqPj|Y89%TxKcK8Un0lR!Eknk?Nky)cAjy3vMgrnIVrF2&eR^*uj3>lmH4&_yB5|^t zxfd~*+>vVg&*?=P81jd`LWNI-y2*F`a2w83oVmFj?soEqaJ0N;YMZXbx#=hio$Q{; z&l5NGJ80Z5FE72Gw$q507)_9aD*7F4pLBF|5Lu@GxCMP)j2hHM*J-^S^?*6Du~k2( zcATme=jOH?30l6*U-S?9wU0A5t_ObG$98GOe7n348!^3_gq)<_g1hu|HOC!`Wsq>3 z8>QiD*}Ro?(OI#Pb%7hzDI_hez`k+c5iTJ1P>s+gnZ^c2&syk~2R1+2!c?QL&wpFG@Ywl^Vj zll$w}b}Rz}s)SykWA8^MRJKXFu}?*nPEXSiBy&+_tNmGBdGHi>0XOyEv(2Up7fl&> zGSF_EdEiay>Z-0z11@3Nh|cEzWxHc(VG$c0>+R!pe7NVZYoNW3U9LLJfYiSb|EtBv z`3Xw%^R*8~K<#kzh$$~lkn_8el9Z3)294{~L`;7Nj zR_Rc0m2>n+FU|`L*wP4SaxF02l{Yg4)C9`rpf+ucb!)8Ee?#kc>BF$+$=HbSm}#$R z7Cw7C(^d0c(=hgvNF+xx;)TQwW^G@tc9ud^u@fpv4@N`hClkxEEje3P|3b_Y>*D*` z>+2M%FPdO0=E*I-+5wZ4@90n#CmF3X5votWtLY-;~&+_axZ3)P;LPokgghWH(Nca!SMnv3!Zysw^EuipQ1vW z=yVB}WD_Iox&qsa65}3(-AU9ry0V2yCrP4yG5ICS?>lM-Q(8rOYMDlpfbILB`)G$?X3 z(!Il5BDgeSa=bD}i}#}-`a8Dxpfo~0Bh}%ctAS*ya0z!@dmR`Q346|~X-&Z4oJh&9 z)gutjVN~nrIR7ko2d0aiJ@0x!8#&@5{CN(zjMx-8g~(5`1(KN?vH z0h>03ywlX|NpFYi>WI`~*gWK$js_G_i>VcjFu188t(Mj~MwJ593HK5g;x#%_`1wFa zI|o~gRr^q`_3peYn%C`1dcpK@SCvL0-ZX0MUE;d0!PpBncd3-93o4hh|hRx~K)zj0{k{|s%X}Xr5l*=KzfsX3c z^LQDk7e%Zl}vbU#)pX{FCpx0VPglt5F z`lJg= zsYio8XLU_}-a^ydmpj01U~P8CwH!Qr`}l&|p2{e1G&x%`&~@vyJHMxgu2=TKREglp z_>cy8HPPK|$`IjC3ybW+WWp3!qq=39eDRf|xsNTj>sgzK@0NM-V`sBNZgAw`l2*=O z$I#iPH5^)p+oVGsND@$fXZv)Co)`UkE7G|l=e^pdh>LsijEHn~BNuaGWSHKFx-J!YMkegrIq zTo8r0_zgOv(_Do}f-e@{wy#d#%M`U9;nP;yqAcT?)ZIgyboVA};y}qw++&7(){N>; ziKkAZgKqZ<2RALjpmJyD`T1?9;fRNsnWv{$HVS4|kd5sa zdiN)WSI>4SBq3sEdRjPM)_3Gu@#o4b`6UQ9>~qzI-7VUCYgW`CJbLAwHiI&4r+Ttk z(W_1HlZUB*0vV2ajaA(2zE~to%Ln}gtEOD5KwDw0X5Zj%H<{_JH!)H{!OTSCmSkpqty?~>jm`bFF4dwPzXX2*^% z$&pbUS&t|Ly6#)AZ)V5d=6SA4G<{LSzJL6gC*%un3r#Hlc+XBG_r7Tp> zAi_!0Gv|BKFX*MlA66SFb--ao_9P=U#8KWXyA z=O#DnaCQ}}E(>sexA>^;eo@%?imBn4AR%~LF9Z$i!0b_-DpaZJ8c*Y8G7-_`_m)to z*~7PA*Rs8fk9TwVK`Zk;oAdpuqh|?gDNv7zVRNFTm6hL7KjbjtjXZ_Bsu+j5E-Bc; zVoZBHp&;z{@@tSuBfd0}raYVO9$m%X2DdJApJDoh?51dhPdr#^2-zNqu5q!*UG+^r zHI0+`*%Ik9lvMFBq=${>CU7ueS(?b?>k0SPR-L{lJwK`{eJaS!E$w>Tpgbv{GQs+pC5ZeuqjTXE9&#Iy zGc%e>P9CRSgR1`o{q}7z;foxb7@3=N17C$$=Ie~Iy|{6$N{}w>jp29G?&SZ%0{TkG z>^gjWT6k4N{kIcKCJW-VM#H&(<1?xX(Y<+u%X_Mg$`x;B{O5f#H^G_O6JGl5=c+2I z`pSqnzxlcfSVQ?nOR4i#Q*+HwKrxc6I7*6+RAA!hgDlr3$lB>65FPy`lniKzc8%EE z*wttBnROtx#`~IvCW9h~Yt+AW+k5RP279hHN#8>=DD9s7e4g^mRy>8FR979M3+cMW zjac}?c4s`L+ocgI0yC8)JttG~{&b0xzBpk$^*PM__2?C8c(~{47Dy~5%!7{D8dDr< z6xxHg*Y$5r?9jScT8_=y1h-A-ddFu+@!J_|dk0oEFxHXH^~waEu>yiB%Fy! ztfgnxpKpx6Ie(lCgQ4a!3 zv}{NVocb~-tO_v{x3@)QVSq#j-P~f)69OFL)YBh%H)FD~mxexP?K$en60VYB;PFIv zJn6-KZb=E7hQ0E~Wc_eA=`80#j^DXMwr4oR82{?Zdg`Y0dL>Ztwu)d1G3Q0IY zE@kBc%KXZke*Rm?D1^sOMhI{mUiz+z?d@Gp@<*Lt3RNWhTr_&`#@a+?#|MAm-$x_s zi09luPJ$BTh%R8%uj<4IR!PI7&oh3xkAkx3=QN5R^Zk6oX--&<*nCmco zUteE-K>_zpo-VvfE;k+g4H0Ar>x^hqI);zdZWXWfh&-0n7j}=K7n}JO6=g0qjm-!2 zJi~8Dl=O78rMff&hxjuc(aW#dOrxF1gqkVbGEh=BRyDqvZF+5*22o1>CLmQlz1BP z6+cUnSvU(TLn%uzk1IiL?e?!{2T@I6dzio8G`IBAwZjmhzh*6n~5i zt_^*qiV+hjaAf4;=e1^J6j=&f{PS(7O>ma*bctd9q61OqLH!#BQQQi3kRs9~L3Jb^ z=<8W`YOrO+@jISl-hVIh6XGswbzJm&NCA_$DA>u_ z*3SOaz)!{=4mAHh*3{f0GitF<<;)=yPEJ~z4bJ9#yD_iPz9!-kQrEuo)#&wL&lV(<~HSh{`G8ZOmRCEb+D&bJdjXRTA3*O(-kvj%q0B`P2O5W$h=4PY=53D_mVVzx*6>s>&yd3eRDDPVn*+ z-ih&I7=xtxJ*s;Rgy(qtTS$A{=D!T>QNYkf(K%ik-51=nJDEf)=FtUo1CH;%9VDf# ztE|qc-`@WCoTtAZH^DsvsXjQ~aK@j9e<>JA@^t1D-o6dML259&?3)wskaf0l1u$Hm z2IAe}&ZpIVb~lIg2POyO-$G~xQ{_6w7}UWR{GSc;y-$u!&KDoIztR^;MAzihl$6k@ zI?NIcWE3NeYG(#4j)dw-6^nX|T1_(dA_sZ4LmmB;+ro zBp>CDK!Ai82&+|2;NqH3<4gQA*rA$y-ii`S@xdPDr1-Eai#i+?9Dp3!3(SP)t|vZU zOe#DxSC$YGYan-JllktzMNWBPL(nLvu#OfoSIbB^{ z4)%AF*M`$J&a7F9cH^9);T;eysDJ*i%hRBmZ#U~CIb0hY_{5J?Z_-fyv)*s$v>X(4 zUUFe44vAHD-*>~AYMDs;&8)=0p%xAfnM)>3rZtK4Uwa+{x7x3i&ShnBj@u3jKRrL- zXJW!T+nNUdc1pVWQZ{t~2DyI~qWFvAPe+p|bU;wHh)ML#MXOQ;l*ta~dLCT15+!Iu zo*0g3*3>xtQw5dn)%Ep~6g0&{CSUtp-qUwQr1L{5t+KQC!nC}o5gc# zxO{Q>eQUR8OGAF<40#mOoE73u=c@DFCA5kj?VOS-Pf;>2M+*LNRp`%bqN4O z&xI;@+G4chvh)$-pM~c<^J!F+m2*0f#RF=uDSWb1HWCw)la0K*&VK%UEwLc#DY728 zCU}Cv_PA;E zhTxLFKjoJHFg93oRLg$nxN8<)yg$eSk8W9JFubnfMNU3;qpXxSCv+SAfvCML;M z#ZaeXuw2fCF+DT^&|LV?za8pv!k?QFPIPS=ytT`i`k@IvP371!X&);h8S%9|@I@tP zSLTHe?lN@T9+vzijJ|O?HRVjx_!3#p8@&?uuzHmy{ii4b&*(>4h=<<(L<9mzwXtZF zWi5Zxg5ReN6*oIO3B1%1iZ?}2ePP4p;P*zram%agH@BdZe~+*gbuznfAL>nxzPiqMl_m90nnw>=Nu!j*+fS&N zFZPqa!S8)``ujFE?Ba?|UVo$Z+TUY1S@bUq0AF#V2Dopp$f!3IWvLA5n#hKj|2LVN z?8?&Y!s&2bE;(QR`T&GO_pF^-4fVpvd^y7qqgb!|OMur}B3bzBX~k_+@T+hg+p;G( zfd)i=rSV^nz;Nd3e0XcIN0IS_V_D6~rUyi)^Ue<*_WL7rz-zah=_EZ?o${oI&1 zlwQo~tlpd0k_f^9gn*&IEvY{U6SosR{Pojf81*@i#bwjMw@Gl7%K?C#H{&Cd%|9)) z&fR*j(oX9!5+~}pzjfcdz3H&mgK=9HtRJ2aIOc~;@47|~f9r+J71d;O`T84g>Y3N9 z+jLI&tSxj!uL-M3g}O0Mlt9wpypF!$bbHlzGZ^RDe5bt~{9{jg&u2m@Br#`W#oeZt%hy_vTh+s?#1AbZ|Ejb|I1QXC*j(+Xqo)h;Werw z7%-r_)o9xhH~Pa2{I=L~!h&8KLpK>6_Se_I@^n?mC@?UpC@m-I6)OZJI4KHQjCVqu z4O8G&Ln)Vlir~aD1^+(ze;@;weQIv)6O8UFAYGNMfxJ%4n+(hFAD(Mg9BWqDuPK;# zl_`NiPF4QLv+C`Waa%E0C#$vRj>Feq0ZF9r7U-UxnfCd9c^jLlZ#bTRfIcO^f|ddZ ze63ZL<@+}hJxXiJs>&*>@9c()%(?^ow${fQ{;&3mP*){1xN5bw#{bBF_}BrAg&WBg zbOUM@!ZjBj9`4&K{$w?j31>xP}Sth`&A8`TD4(z! zjx7Viy#IQOUP^AtquYlG!`#c&c<0jc^78c8Dh#r&cJWDJw3{DBz*bgPtHPcmU0rY2 zho*;zUtzItW8UoVSr-7@RB6YaObk4w`=!xT6v>dl{kL{@>(KG>@z97v;)Y>ietsxH zv4Sq7C-24P?4N|H>NmD@jl#>eGi_gprx{TIWB5b;-cGl^x9`I#cvYp3!9jjWlhMhX zRhD2vd^`Y@V$wp)IlqQ$_!1lr+Y{8A`c&ZrvGS-YI?|#K>Q|ekL)Cj0_Na=kWlNEg z0ulB+DGZFy{}}#YB3IqhP|Gkp@t6*quRv@bDt0h3DcjfOJwSTRrX(fQ-0#xX)_y?T z=}Q6&dO^Eyv|}0@rKIX186gzkZjJ~*R za5{;OgK*iox2h+fAm*QFN;$8jn%HzswrF*zCrQO}+Jo1g%Lo}=lr0?vP445OH7byJ&M+z(FPne zGV{_XV+7+<9e~;!w_Gyv1;7qWlD{Zn7G-4oRsg&|5nsCDu#2t041WfMFaI;AAa=MV ztpbsx926%2;K)b|S63k!EwUP0RImD`7OYjLO>pSQejPl$lOKx~D9*V)@S z8>OV1KviS?Ix{&g<8f#_?GgMkD<=gSo|KwsSHd!PrT5^W}H6oegIjVWO}?riR|E-s|AT zi+7qXp-WM2N_#k?gW#Ji&519)&PFaFp<(iXyQkEnpEKM#wIYf$#ZN>Q`C(-@4S(*R zfBq-GuBBJ6I2@7u)aJv&TDbjPdSKV^*$RmR$SwVSeFG07R(ib?x`sWnvn;7tMLqG8 zy@2$n>*2>-L!M)X`(v@AfSN~%@y@~+l74$YngR|xAdkaEm*B7B$*y8k8xB=YD|2eg zv#n`PT3SfGJ!@UVu2CH2m|_*>Kh_(d#1zQZb4)#9%8=X;3sC>Bf3-7IKS(2)NANGOPJ3KXu3|~A;o^Fs#(-PxAGNRdpNmEz1W8AAN z3*DCqI1YYMd}bgCV4U&0E_2q=&n!u!K_?w$@?25pP_1>K@K2OtcE)?1PC2C}h^)Rs z46F7dVhf_gb-Y#kBVlqe_eA!*p|o`Us73~bzlbP7?n^}-r4v74>4jghzwMFt09(Xa zmpdZ2GhZKq*Yp?bVaJzX=GpE;!KH| z7ITd!B?%E~PP-fPe!CYUGX&yN3-ig5yLnK-(IIrxpTvxKKY^f}O!Ll-hG(vfc zS5~mDhi}JeR16bkO^NK-WP*RwYl>v#)d0g8=Vogw458c{uFt0m=?PKH`LVM$^VQw6 z=3qZh^IYlmV^!G~kF?t#BE)N);4-vww7?Due!$culfoWGcuY`TnbbnbW z$AyUv{5<#f+uA!)HFrq@BxdZJt^Gwi?@vvtW8EnX z!B3;cM@HF1SW&qM(Zx1y+daR90FoJuaroy3LqcnNZ+m$uCiW`Hdqspp&|p9BRD+{> z-j+hKwp$XTOh<1<5GcBju7xSp?+#(;RG!lGnUIK18K2&KR>G?E;*Kn-C7FHxmj#Z? z^Kk95Em-U0vqSrXl(3&6StG}PV;*R90#5c0vX(B|03D04vG8fP^6Y9yo{}Au>nB{8 zx-$Sd6Mpd3u_nIIJz6q!*j-2^Tn+sCR@-H1rOv5%#C24wyu@XFAy7qE6B!%td+tC5 zGcT*p_u=IHxNMIhAxRt|DD9GcZI^YLx2}}!O zxlZHbKJTh{bL({FPYqvR5_Sost*sI<;Rr6(ar%>}Q#gc${RVHUqYw9X+VP2zk@B{U zp539phPq9Q=d^V}^IJ2uYWrefD}_mSQ*_17Eonpj_~3BXenan|vyKkqSXakwkstUA zv@J*Y@k4Ll58o?!2wQbws6Jy8%E=QJl9#I6h1X2^c<_61ChhI)sFElSs-4l(fAUuw&(XSDD;bj8yZ<$^X1I|-WT_RWG zO;zpv{(9EmC20MMCARE4fEI-fJSqyYvw%hgh#C{mo@L1KSx!<{pOS0EvYu|T^3*El z7uW_--oVw?x?vwNt@^(tlJKB8*>fzcR`m^U448g5&xKQvPy^N{Mj&`u<^I7-q>OaJ zPX;C?9bMfJ-h$H({<@O3a>*7ZrkXXvjsvHoX-R%Qa6IGZ?Xg}`wvM+ZdD8=bpX>RE z^$tvYn|+EA_-O(YLC`nfByr(344u}KI1WCDOpm}dDaX<)W4@TRX34V1U8J%i8u)v-w>Xf|Vym!TjL(`ud zqH9to*Ti7)(XEMcSJWeFoaVCAWha;C8k063ehnKo`V$#TaR z(k5Me75wYr=>0ZtR6;RnqSZShQTtNI~~TKS2*?R z%^T(xo~3TxsWq*Z&&;wG^*lNasYrrO@13{O5K&bTJ{^69$8KLX=cfXE#IU6s&Hx*2 zeCGth3n2A+=x3_6^==HZx-&-GNk_6)mSPRJKPgxpw{=&@ajK!KP9C20rLlFM)3Asw zrX^gT{LR$I$1009)D4^8x*!Mc>9kPdfgl8ssi65O@}Ym!Eoim&@x|A$IPR{zZ?ZNY zWY3h1g)ZBtJiTMM@8YhIjAhcujc-H`wM;ZOKNLjns%eB(>0s#Y(xJFTg@xVRY*wEg zp#2XlDS`*Il`q$q1)XLZ!Z+7U*dq(i)-JqCkjkUdQYfOB*JCjuF#&0VleySrqnbR6 z5>NBfXBn?+L(aegKd1ZxtWwu@{U{;;%+WrD1=qnCD}y$8Iyf=G0a#2MeVDv^Y5B#r z9HO`$;MmoG5&M%2<~H+Dc<-aa{NDq+C}l7UzNVT=m3sCN2N+dZSSKd|{3ak}6JGEu z2lAuw?%>$EY{?vXuXEKQkmga4hlfSDw8RYgHcieNodODZH<{;^LePF1z)WJ3KS!fe zU=LhSodjB$Y^SeJjx2!~`FtRLa49Lq zUi6T99To$N65t)0ot^b-1d>AdJ}?apdy=%n<;iO4vd4A(^mec}L#u);k3(!D>zpHeDltzd~9?*T!js z;Br#i;=+P+8oSY4Wq*yvZmLZ!90%MhhTkAx5RPDmAO5M4vcNZsFL(Ty+Q-KYm^?_( zWjdZ6+_dhGH?y=fFy@n>_ls=(-I_E}ca&2_O&$)v!*YzTk3pT5)POOrc#N$#U_?t+ zJH03FJG%-Aoyj{d(u7+l4%q~)u3SXfyXifFk{=zAq>_<_IQ($pvE!2Y%PW6(K|V^f zseY_c_eOIYxWu|k9kz@*t)cq*EcpWm?i(X+)Hz`s6)kmitgHr#P_qgO4WOoZo_aT6 zuB#vu3^X2POIT#-&1&JLioWx7R5g83*Kk)=)zwwQZ8r$0{oJ4J=9Q;ge%CE_W3wYl zqXB=3&m@qOzU;gUkA8Lg1N+lehWqcCk|QG{)6(3go+Zr82J*=C*xm)C`Kj;H#jT)t zxcGU2tO5&+e&dRH@2c?s9Ux&I$6xoXY_Sjc%rFf^C2U{)_w?od2c`M{)?Y;4Ya9P| zEl8~_Y^W?u&sRzxE>}>HauuR=71Bxz3XjPm1JJD@_G=A>PkwJyCW(s)xh7Pve*ti% zX#aBXDrDPiXYH}Du&@Py&C~}5fKzfa`4$Zg4ZO%yC8uWphA^{V>vtFJ%naYz ziWl9x0-$gbpADC+?%s>}Byu3#h^kbB$cs(@a8v4aL;i7UApC%Y`DL?Mklh$|Si{EN zaokLLdHv0+^$*Il2Gd@D!|Nz!Oq=6kW5Dy(V%+SoIePZ2k=Gv92(?1_>1o4Zw#j1P z8$(Mo2F>(zaSrER)+0xij?f3SDTys^C6y|PEwP{PIq_i((RDFEw^Y`8+}ln6J#zW^ zapJ8oUMSv==-1^Ll9|X7?kP2qu5#LOsBd7<4%Esm6?T-qvt&bDk9G#|Cg87sXY>!a zxJX}rdx-l}teB8cg$tvUt(~2jwLRP2878L1rGFZA*du)}r#H+y)zy=pW6yG|pOXY| zR3e}3Zs8>Gk!AZoh-Wojovg62sxZ>cxBd~|jZfy*vO(MQ>#~n6x}tZVCaFzO9rm74 zIwPIX?*I|1&;Nx5(DF_e0;a!(BT&0&+qlN{x*uYqu@f#@9YEJ$tk(F+-P6s@^a{_9 zBNgG{VaT3Tc89s9(OKe^^SoPO1_k@a`@8G&;T$aYCH?_e=scB^^~M6rHMl9k$hSSc zyj;uH>d?}RnC0$i;<1sz1PBJrDdpn5n5bJ1LpodtttuEQC`|n5G(A5HF1hqMu}BqM z-<&_dsEcWiN~7k0tM=&3p8Ia}-Y7@JYIi--nE{?qgxBBm4(M@}ZuIF(-0NyGk(HI$ z{>V`@pX<3fr*7Cdbe%u!FB6v{z^ZCzUSB3 zHKrisF#8Ijam&Fmai*2AV<1@?9-H!rhZ_rIn1Bd^U4_`=UbyVcw!d2+siMRu#wWWx z6K&FevVq+ePlb}GFUq|9Z=jMA-4liKh^@(4Md$v*rb_GLoXnBr0h46k2A|qG55TZU z9dtLC`0+aF6;p;AixcU(>c!EK7RobA(f}3#J>T;31{la&xV4dmtgyHxEIP8TF2Pg~ zPA+JoTn~Ex-p0YqC_Bs$;Py4Bsu z;H zRr&C{Mcj)YLl0yRR(?2}EA)A-ZX4A&xehWhF(J=p!XjjkkpMS-JdUZ_0UuDrI9RA5MBq1q60J=BXvI28dNfKwZ_|T?t z{Q%nj8nP^Y1ok+5t)?vUr(Qg89o!WEw9X|K@&5p3Nb>&x%s|hZ{Moh>=+O%!e(S#i z2W5`#Z+jR%a_k1IG|l6J(*+J+8M3FU4P0k#+Td z!CzDs->yyGV-@T)jgoyAd4Qwn&20_hnSv6J5V=Ug)cLZQ_0OFPyKzk;Bc{+Oz~a`^ z*Dmz-&llG}Xuo4`U-0|)$RzswDRSW^f`WpE^=N1Az+wysLpr9z@dzlEzu+;!cf2Ng zm6r1hi+HK|$&M_+=fx5LBh3P`;?SuE7?XTFt?S~*5<9QW=X;mHW@$U%m^3+Z1MPVv z@BN&YH(2dqzGaL~D4_oMLgZuNh4(ZTdNOjElYZ=bI?sd}XD}@^=WZ7c&|B6!!AYt_RPIOq3C`6IQDB8DEuth-Bxs9je@Eru2;Tc{jd27?uh^vf zB4%8q0Uqgo6qn(ZeWpV zUGW-!xDw(E|3P@*)%VZ1En@~`1>9b=^N;hbuB|c4I)9rBT3Y%YA*;^?@U=&uSKS?I zn|7toeR6)5vm*|1UIE=;8H>0R$Dy=gSh6WIRx?62HwT#gR=`CY6;;`44Nra*b0(}B zGeWU>W7S1_i(oh2$@Yyp`?v5(-yu=@a9!J$_=cwx007z&-*^w!x z;XA|VWhAy2LzWfAWXj&ZQPxnVP<_Ml0=2--GfJd&|J<#1RhtHsIoz2eIBekIG4ilo zJw-+_LYuTDGwbZ&$n^IBb_c`j);ulr5;6RfR7ObhB#!x_&CIr5D{m8U903fXkEy9z zoc6`|Z+6H!>+*6iEOIE8fch?X@ z!!UFWFfis@<)Svx*#KdJmg!I}HM?&CcE|C5o54~E$sZPg+#2y6+VY>?GA zG$>h8U=XSBw*&0%quw9v&O^%i?R@=3BAJ*+>)|iT=2S=u4o~Xwp>{&V8FDTP&2yUW zCx3xE%HzgLSN52LqyNV3N-5TPW=gCUEvCz(5tb>@E;Rf-PxU>X-LzXdasU>gxLD zCNZrm%xhmcAYQqgeY2N`wey;bY`2JK*Hx_B#(=Tjpmmc_V%{i$@|f*&yIsUbVaz(0 zA2H7Zee3zi!JJCFkLe54M7m$qOW153ve&uZDk!wYim_$d-HJUt?X9DRp73BCg$M5@ z(1O9(V-tu!eqgU8?O_}(2(V<=SHBDj>m43YW^WFu&c&CD|4NR$a^q^URYb1h7xhj^ zrE}F=@`FhwyguF1&dvqfT|!=~31wEZkFcG=p{*ynw3UzE61ZgA9~qcvzl?Bwfg_kKL*}A5U5I>5Rx-u%$aE_>yx7%>p1#}i(H^39863K@ zvrdmX%J#&{kRB)Q*@wb5qQ>((rAlDtk!=yzffm5rjmOR@Pe!Q3F0X3R{(<$}Pa0l= z!Naxitc9j_yD4p$QA?)&KDXEvV*TQ;$7M|mgGPESovd7ye{;QLb~7l$;m2QdbQK%q z0qHbeEO&k}g|2~6_luZAUqrpbL4p~6{p%68o@&&6x%@}$X3LK_)QoWD$*)tSlL?zU zsV(F^eM!h-6vM2kp`8w>c(th2E+qNecHYRqd0-i- zJfSXxZ62|WPK;tJl13L7DdI!wouA`Y!BK1=sP7d6G7o$I=s1LjP1w|th_pg9#Y0YR zquvKznHpM-J;?1e*6pw^)NXlcvugXesG#XKw9ZVwJ zvlB!jrw-3nrz)11v}IGd@YS4d>6C1Ca-SV)`v@)aFFFP1h0&_JFY|sP+{O~qrWDsy zRcSal@GJ@quX5oTt0OeXJebTnnP}bG1_nOtZ6zn;FnVn=*X&G~3co6qv1$%8v9d%I zYEuM?Gk{qfL3DPBq2L3ku<^TleEo;9Pnwsr@5j^_jQ_-4$XSL|uXWa8i97veW?KRk z@5;z-oHRenpvK2y78yfn1+wigvj#j(08B9Ds@2xR1jTNb4FXI4CoJL#`wBm~G%5&K zPwj-Jr)sKhw8|{1W_GsqRC+sg2%|Z-DY1U&JW+c(3CnubV+F zws=RPta?1$$7Ys@-PuLo-Cr*OKu~tmnCuTAIG44C8zbS=39geFuc54OBR3)8hD8k$PS}jeQ0hBM%iP$*qati1|4rh~U4s3cWog!{n(KG_ zpH^9CW5Zu%3zvi1{0o<<1Y*UL9vCZ#Fw%G~LkcVwQ?9h;3?3<F(n zGFrvYz;hb02&voa5Rh@rS3!=4oyrTJO<2`GN`ek9Sxla&-foYzs!zfk*KkiYHl9Kw zm~6SiD9L`wc0uiInl|vkKuNii+hR<)7rum=wahC~ni06RWYf4Mn{XsJ%&aoZ1DXnS zV)pk0bJ{CixN@;Vlisqz)41x*@;?7ms%smx9-eisYN~IL=&I=H^g(({u!JZhtk!)| zGj?NXX#j4y5MyXVwo`gq6g?M1b-KJ*iape3KMhZ74GIjrLbPV~-VYt_5Tlt(GkeR7w~d}Z zuiDeG-!Mn7&bhO1SHFI^enm=lRQps6*fuxu-n@FL0tS1K{d@L-EuTI;(kcI>)~pYr z6C0eP-yP|YjZ-0-7b*|F&AcRv8_Vt&!UgWJ277wrh%ATk0SJ@Y>P91)6RA4c*mCFQ zlnWSP$R5sx>Nb;fQSF#GCx7y=Ah=v^Dw(5=>8zrNfJ1S{uf4we_|cDaZ#t|H!%#ga z)RbN;C$%AYG|~>z!D=ctUK^0VzV$xTv%EXu{#ii)x^Y%fA7Dq1=XII zDM$-Kx>%t6t!!iupTRK&?54Kz;T@_a`2HbA_Kz4x!_4h z)ythS)fx?bP|&XvenNSEkyk#pt{KC62|FXYKC>IG28yhX>>{!E6!aZ#yIpO;|2D z5e`}zs;PX=zN}Rw7iZcW@zsiSgorWCxfhF-$)uyh(`-7e(s^`I7hk-Y;duq2RA+~D zCu?Pt`o7`=B@1{}Om<&GOUJ;+3!s+50eX?v;#`810KE(^YP|lhwz>ZA7DD{r`q};g zY_oE{8kgpQimb`5rpYdqm3MjuCJpDrjo?BdIM?v68}@W}X=kwW-)Cm!fF-SI9qH7J z)l^+2A|m=L`VVel(v?waYPv56ZyfNJ0}Q5ivA)Q#MowEp_3gtBPUiYZtrtv$piidG zwesqtuHQW~P#F;IhP?r+DJlvNi#B6oyD&(YaC2}~Hee#M*oV*{W{ z>)b5t^FE;1f*CBvRjkWOy)nXwzsWBBGBsX6Vy5U=uC~`!hW?90f)_=c=X8v{ki`Vu zm4Zye$5U+V5r#it$$r$GRU=N8i{RVBUXXC97CxXln;bF9#92_<%1PlTZ8M)l&nNer)?%m@bP&_jRaEEA3$`^J#*(+s< zNQAmFg2|#7R{CP^M!_H*C0p-d5;VyDr2mah&9fh&3z*Ms4oC~j)nRbCp%?umLqJ@D z((gvZ@j$F2Itw2K_>|{j%IgdM2 z=OA_YX<}#<2#ow?t_=l%0lJLqLch`cT;WsWv)X@&Yv(%_V-aRL9MRiaPHWMxA1*GE zecLX{6dCL9*j`wJV)GxF752cD-+qhqKx^+cL&{HMZ0XtQ>CIZ^IZsa-)p2!hPmOz5 z*#4bodb$2jJk#+%^Gw#J50}^P_V(Qbbd|~kDK>oU?3fme#4R^e+n!914>CF0lp4{* zrFb`73DV6}PD-l4g}a}&EI~Y>2kn$n%fZ6XfR1BuN%6ap;D*^jO?Q_yTtC0-OM+?P zh9w8kzMNSS532qX`=j{XbE^%C=!2P2xUxKXzWBl1z3BDO;Dj9*X(xVinly3rA#2vI zwCAEnt63((ex}C7Nz*|g$|NLYyI>(sJU@xpB?E6iabU`T3EyRzNU9cNJ-{h5GN$Y| z<`(9s8oSGKSH-`tNqy-o&LBbDFV*_iW5@I4s3+k8Jw3gPQ1H0JXP~^>CO&X zx4FfR4kIlG}u?Cg4AsEmf|mK$$Bb&dWL6PmcnFFX zyzx8L(BwNg?UP}Qur@7pF?KE@fnNiD@+(56F~$BAjw|2IwSu;Fc1DYcu_LMLkK%b| z2Nr+Jp?M=Er|3Qa#@#hm-E{oUcxF_K4C_gAANsRy5$EabzL}?F&CN-4J{UeZ`3T_4 z0UFB!BKp*sGKrOYK7N5*bo{n!;P8PG6nlT#62TbivO7#cR`Yfmi)q74uIu+tF(o3( zZqwAV&dJWMv!%(h7JNU+9Q(R5_S;(#f5(mIhhU6r`yREj(#P3{R2unmwz)mXl@y;l z#$$C((1M?Xms3KZ*)zM1i?EBb-y$RXa|1cg4KkJFbAxPAeq?B<3##`7CUEHuV1Crp zs5UQ3N)66li2Y2T;>g{7zVGqyJA7D_i*~hg)|EY!tbv&;62K=BocaDJ+S9lew~stK zX=sI5qvSGaN-`C=b_^!}<#{Dw2~u-fxI@ zc#_d3?EHKp@y^;&B-CH>#WQDcZ9XB;_osg9{xA@Vf+@POSCMtV*w1EK?WOJ3l$t ziOPp^Pp8XALEmIvvyUy-Lx0+YpU#CGapq~_8oa0AmDT)%^~a*+ykxYV)^{t^oiLo$16~gH!@^$CQKIT;WmTxbg=Ngox53lg`bdy`=4+Y%A;gJE_v=acsm0e2MhP{I+ zd4iP!+X+WNma9ofo=YJhiiiI=NzfydHhZBX9rp8gT=wSuo9=}jrtBZs;hZqZ>(nxf z>KierGq;ug?14lt6`5LFo&X-%G@=Ycsz7aRJc*(OC;ih>n{F>pk4mQO{RCcY zg5R!j?CJvX$Z%-s5auf0`fGt3hh1xv5XUu=AQ(!nx$IBh&ii6c^3sF+tgLd@XJ9Hu zsR7Mx&G6?Fwgx`pU0&|b?V65@7kJE9?lI=dNA*gurL3AEmO;5shdvp6CuiwA`h8?0 z-M;@jx-$|AcJJ-4^|tf|m}z0P0g$dA+Id z*rCIRl{|A5vrCcAv%0%1%=Y84)z)g4Bwfm<>#>JSt0G4c>^njiUkD87;tONdrk5<- z*jUpkytbWdO(I&I?a>{{!loh_u@rVJSlLD?ilAA zu(a)sf5yOmKy>%!i-5MsSBt|{6dbx7QGUNweA8ApVrV3&seWcha_N#^9)YI$52c|4 znaK4DE9tbl^mG}VAdjdWNt&cED2}Z!vYEeS>hkH+f7SVxR!$mUjliJGiT^-=FJ9DZ zN%&s3JYlt%_3|9(mXoT#4=on|;}veec|2MBv3ug+TZiR>lmRdt^=bvJ1Ag2Fw$c(K z$Y)g&6!g6j=+2dNf(1Fd4M%~5qNST_ z5|8Swsr-HigM~7eUh&o@B}MFRq#4TJ6plSSQrh;I^X+R{G=XJhcq7WQYwPWL8>%>k zn}y!MTneh^Kqx?!lcUgg3(cq0Yz|Uo3xj|D-~GGrCx8#SW&bq(yq|6plzE`n1V%5r zhv#v{It(@@fQI6c9u4gYix8(2dg z%Uhb}k5xy*pvFt+Ya-ga`z_t@H4w-WRa3hG6NubjN6XnS5E|SvHZT|;I%Y>-CRBM< zRI#6Fb$p1K^MoDa2d*|ttNHrM;cVA4ig#=?F8_ltz6v8JUwS_;nX6l#RiK<=+Durt zr-gC*%?n$Y5IGYh4imu@=T=twVjTv2XFXiqo)}*o)d|Y^=r$VJSegDv&C!8ek~U(5 zFh-KndZrMX^^+;Pp#CnjEO{n0NIIIfxWE6(9&xhmebq1{!$k%1MEK2C%~DdB%}0ToVrdyK0Xs zo?A9=-oo2}0|#Mp(K?<$k9K8Laycyz%s>B|PKdTXgTTWjB<*6a((uR#>v|Xon20?6 zlQ@37C3g513xHt&eWY)>#h;R`kXBKTX2a zscW))&*;Sv_n|M&ghK`ssM1SHsHYu%K$1oHiq2+4LevxO(7dAxQ!gB3iNu|Km{5;Q zd+g+`2Ls;ZxSq5t0$8d3@369s_4*nzIu3aG=>wEm_offq)lO(H%;5eDo&0!CCuv3m z1SI1U2UztDr=kjLn-#}Ti0a|6GyPC` z+i1mZPxC;*Y*1nB0r%89?>t-VNPcb0Xi6dOxTXcYIo-W~ zVLb93NFbQj;;i7lAIzh`{Vq7Ez44`tWtiY$*VKC%4P+O-Olsas*!_SVQ z&E#EH8j89@4SU(20mkVzb*E&%e|`Z~%3XT6t&o z?wz&3COGBaGP@7T>cKNLco3(d*>LD`=a)$mc1!fkO0L?R38yPJhZ^=!&oc?NsA`J{ z+pX3{CtCh!1Hh2~nSF*ULXr*|zO>A*2_7k+#V5JZx-R~23gcD1q~; zGax-06o+C?(GrO!$f20t!MPn`YHBBgk-^=pou#Gj zyp51p0?qC7t5e<-(p+M+t6OGL+m~;kn4|#a;#RG2dZC8zl3!|*zRB~#xS+nSF5juR zWr$|-o(mgWCm+PaW|dy*vUG|of(Yp@H~WgGG06kB50nNcC#T2?eQ?08Gi;U&X*Ee9 zH^>oM`Xoe5JM_aOips322$|iYwN1;!E}BM^$ZIgrGj+vSul%%}3p71#6z8^^l#~?P z8p;rhcq|Ey_T+z-YRnZmGu|-UoUTuhM?>}(ou+kZOFda@l>H74pU|&pzqIiL(^2eZ zZS^0xvGgo^9XZ^5q&eph{u+Ua$hoQJeo(*qa)mU6h)AQ_oG2fh{JLeQAO%mZxYfv_ z)$2iyrA(l$l4eC=2HlyCC}J1qq?K~0=(ZEolny_e&vJ^;|?u7ET-=V$&s{{j1D1?*lZgtsg9 ziJw$KWMriFTO}6I!DR#;`!P`7KV}hs>wcM7nq5d);6m?8mah6K5iidZ4a{&cN|}zA zhX%RGS^jYCaA1{DRuX<1d#MHQkAB|a&`%QQQ9y>TrbybJy!jO3L`SY=LqiTT0{fO3 zglgM-8E#zlca2i6AweKi^h!>UTIPO*LpHpjIrVnI?(h2K<%pE8MPg~_wau{ASStRw_PT^oKi=xdav&sA{F_Y~1gwp7oAMPW zWed@#{PS*K^LsP@@CiSf`Kcy_-wHFuc6ZD8-QZP=A_u^WKL<;)W$ZJGcZsVQFgV1e z{}5aLU&y`!EVgq0|LITtzZAGNZaYVq`2T<0_J54qUOVInJqVMdG%|lA+Zsst!~isx zljFC5#w31^1Hsd8>ZOsI-T+1-tCsIs+`*WEux-Ntr$lH{H4dAkVP>XGop#Oj3~YMQ zST7{{Gu_(3g7-QRkv24e>YM?Va> zPXN9FG)h1Mn>1D95O;L?u*6sKx=n#iNv(eZ9)0+oTQ;YhzSCa1Xd-eZ1UAj`woi06 zrn&LOI=@>S{x;D;v~DeuE!Auki=&$2Zj=A>PAc>EpIgl4^EB-Lx${$o%lu& zh@qC1kJHc>c*bf1^*0iqdLkBz1T`>x9P?ZyWpr%yr~Dp_;65Y+>POp&Ww&X387yfY($Ur60gv` zWBGBF>W(w}6Bo=h9Hcm$m3LcPbXeHfoNP&}tL;-DVDI#2xb3>5ZoM5v=1crzUe$!$ zDJ3cO4^~#Ab#Z3%>Oj4estQ-L&g^TL?ip^ba^j@ZOJh6}*5lAl4Gh$(a@orUW9hwZ z3=hu}#dx3t?|=f(Y!kjJNUu1A`)hu8VMSO~Ow2Jgz5R-eRw_^)i9i^ZLkEU^_;2Vk zqW*?12_H!+6@}*Rd5)GB;r3^Y_J<)TIt7XsjKG!CRT8#qO&23<2(S0d5xHm47*n!5 zIKcIafuYXT6|=F}y-p(j-zX}sDkd)OXn)6KYoIJ04W3GY#_WB;^E#fUY7Jdb;!_-y z*dIr}t?uC9U}7>3y2F#)*Y5lGl;`OsXDq^RNcK13i(R$}12L4BM=y_>XcnopN}VYa zeiH;{BSn&%JGl2MMb@7%m^MS*mxikB5}z8Uz`hme|Di-?9iIH*OcK?lA3hwGI6sHS z<=Xi~HZ?;)|JtIxYs#U1rrZb!kSyd;hP5SWfLr+4t5c@4{p@APJY&`z0z9#jQSWX- zjiL&*C*J90F<{sEmU)?P+L<}ej*r_VLgO{q z3#83VU?yLW9XSC{v_CQw_3OFM68_J?Wp*I3^GaJ0r&?jA$Zfw!YWY9(%Tkm+JM^og z=;WgBOMHAjEA6yOXA_NaJ^5N~4Gj}RL&qiOhma96iBR6Bf3w&Yyku2Wqe7XAfWB&M%=rZg`(|Dx&uAi4r}RDGtEhP1 zF%TjiIQ}Ch7a$NQxuGYYUfSyp=9mRb@vEi4kVy$>JB9MC@J-{D4T9_3O8fX= z7~S|$Yax)F1;5VW>F8!E?pO~UhKxV8 zI*a9udaI=caA!Sk#Q*4$Q)LW_qz*SCx%V*g*?;Gsf%$*%&lYPgIId$?BoA^lw%0yc zsFIw19yW%bH!wt% zrQ_4nYy44ordP!MbaVD9VkSbd<}XEaIg)R>FvCutlGV@7%IO>nOUeC>g$oOGjQ|w} zmkKTHjYDda7&xvziA{d%s3q*wO4Q%fD|11>bMCrqFzu1oN&63*w3VW)tnY*v)~GrM z^Z`jpM%{jk^p2*6>7>qXv!pg(T_nWvi;8;1kP@pq2q+&PGe?aS9H~qvOOrhXkKkvA zQ>HmgZQb4T!t^POcL=M1(wpSIH$qP=|E17Z6B+#`J{t`G{_p}kEBh2ime`XtuBou( z+v~LiQ%St((qG&uLqkn}kVdw_HTSnazxT=h(k;Yw3MCfe-+v#QJhv8^`(`qNG~TF3 zH#vZE@Yksu<{Rh6Kf!7x0IN3G=Q}@VFLNr!;F7XPWE^iNr_TTSw}dohUm-E(p{j`> zb|Kh_yeG{hCqm?{I{Jm%PYuVXLw~uIr$7JUR<68Y8ppFx`zLk1l<`-}`JvkZ&77Pi zV<>T?$Qy@#(UiSM{%n)ETSN1M)PiEI$D_I~p^Q5_JMu{ZCJnG}9aRo-ac4!S*%11M z(N;Tn1k!U3pE<9a4smg8Hb=C3#7h4?YKycq61;s3lW7BNyR-F^1fr? zF=H+-7@}E&(#RT7-jB0GEX2HJk5u7F@O$}+Ng@~xZ$B3wbtB>9t2}S|d_T1My%&Sg z2xKX~z+GR5<&J(uB~6^Wms$_3IRDN}msTH8ZH-s#0A*22@qWJF(zY{*R&1|~L^?dy z_PuhjKfk*Cob(p4+?OSxNQ1@5iIAg%JtfU9Dt_nWn7l~-V|R0D_F+<&erxj;YZzBB z9oH}25Zu?H*R=*{xn^x>xyr{Y#4HFb7-#N0|ryHA2EFg2a^fNUv$` zZETVoAMVg>!@@%D)k;^(E61Xrpgw^#DNJySFXEJed40V%9QyOteIIJLR2*M21TRAE z_2d_kcHm_SHHB0M-TK?h-1N(p`=^(=iufm@g{A(EX!$4i>)Tnfqvr}9`~6Ct1Ucz* zYuyj~c?z54d7=mlvTKazksz!6_VzrA=scw)&Ev<`Il$NEV5Y7N?m*#bXE2zNf+Mhk zUtb!GkDpv!bz9dMUuyx3mwfP?@s8|I(MxpXG=&6zn@m{wCyQnM`8$hEs4r|0H-%;0 z@QJPXFDQ0n_8i4NVk?~Z1H}f;BW~PS<-GY86l5^TC8C#Dg}j9sa&1y}pEI&$L!@Pd zJ$Mak*EqlARy*0==B;CfZIh{tfU#;cP%%6h8 zqHS7H2b30vjF^+};)ib1&CAOzca-LVy&iertr_91lKsj3M2rgp%(mD< zK1-ZID^RS9i*1>wvYjogtXel-mQVx9LPNmF=E)!-19Bv(9yN~)!bY;_764FRZJ0%{S>=8xjyrWWOMd~JNZOU3bKW`*IpV$QK| z(sU4-4LUI{2b1EKh6Tc(&~C(d7B2C&3{ zkTw+sw5+1gX+BzN6@pFwT(c2cBbX;1Wl9*Gv6@7pT^;{;vkb%BQ{%WU+I{nHGOJK` zkw+#t_HoFRk0GB#B6>tEN=9o>2RxEj*PeVV>8Ch94^mx4IT#nCuSfiz0Z%g=eG$M$ zicp3%pL?QWG=F)b33@z!HJ)ErssBop3()_^M0jo+WuJ&w&uUf!xCZ#wgCWY?oz>+F zh_C-na5I?(pXlkOb#$=W7?2?=88DG=9hsc) zbrYdATJD-B_T?%9%R+PXA3V~8 zRX&4a;+4r}#ZxUZYodd1=x@j;#lo)I+X)l5S(`RRoP9fhmS?y(tnhn?+^ak#LABqh zxZHiN$o~;Ly96;Y;VM+50m+c{(3)6NnX9Ou_sGwy6V%h>sc-bITzPx|^B zGHOd(ZhdwC>CVG;rgP49S6kEd)=oNgaJW7nJ))tvrYCPrFx6HgXWxfc^qJ|o+~yX> zQ%ExTERSac*T6U~<6b5eF4_BZfzzgYi$ZT6rJA8odBv;z1>L8dVU`r1d~ffD^;!X^ zK<*Xc49$NTs8=jl-Lg5N&8}HZLUnJ^bXQ5|eAB&YWoAaQzu8V4?b)CsrLL>E?e=P6 zPlMBzXPvI@EMwqjpCt z>jd*SRbw9KAMUSes4`3~funqc90i#2zIQ`5(ElBB$7XAtHK?{J?@O$~oJX|JT&lq5 zoBy;B$G_{Msa8*{H($`@3J8MYRBg;~og(!Gb!q6r%64k%9Dwth-;qLWWc>CA>!`@@ z_6f1es7*@zu?wXv>o`NMYC}uIxuplS;ZX_J?A;TCeyhY|bu7%J42;s!=2P0fhK7uq zdERIhgZJ+Xj-92h%z-wFgI73*g%#*fpP4EgI{_y6Sr|zI0a;uen0_C50WHKL{%xGGY&97Pi zSkn|t8xEEgPMYZ#Hh+aq{+xEkGi2jamfp<~Led*}@6xAmhRaM#8 zPM(>+UD))c>p4^@yAQ26iA}Y_{|3gp)=p_U-9!*N!L0Wr0zB1r6_>%oT%mIz6`rvJ z*v(UDM&V}qs4y=tFi5^C_M4{w{0sU)W;mgZf#o!frXUB7KR-}ytocpctl(nfpptWE ztAs^|ugw7KcwivmMtrije01$Df~`01`xdApw|-7DHoA#*U<0SO?6;YY(%CPFRs}rA zUl7P8{@m(UiKVW=Dgp z4}vU567Q#+pQ=1_tgK)=EK}A|7Grwzhc8>+aT%;R-F`z!dI791P4vFNV?_ymP)S`u ze0@LpVm;cT>t&U?HjjtX zcTlKKE??8gxNg9??Z6iJAnRUe#|W!fOJ~$mgR5`7FXnq?F$cb;xwpfwpb+I%jNwQl ztu`81I9*QMbFI=I;3oS135ki2uhdSgNnc-X+{E?nPSWtCwSWOfyqYlUA)9&x9I+)N zgscpwqNP=X>#nyD(NC0DNv0iC;**NKpA8=0JgfIm-&{_leL7=sS*qC1)~F{y2mYQO zI$o)`FsTti#goNp=D5~`dNQAx^vop|zP7&>LDG7IIBTYNa&`{Z2|5GqCNn-Xd)369 z7ceY-$?4PQND7un+l#^RXg>C7cyXps5}a52OH^;LZFP;8wGTb7?tVO*(`#pEXJDmT zsOwCv?;=gaSP(yM3g^y`0TTH$n5cM`KP~FKpJwqc2Ql^*wJaeWSK+X zXjvtPwA!YzHBwZpiFZ`l(s7e4GB%d{rb3Ekf~Nlsy0pkCTBz~t&zF!n)_Vi0yE9HMZ~EmyJecpp8S z;)ks+m8@n%RJqZCG(jt*K%*YF>kHv6L=P3McgJN1MHPJG)hc!;g9+4?Idr<3N`&C! zvsofexM)NH{9q1PcI+SgZidX_>rH^a?$oKVzjLtUwdBONWQ8L71P)z^74J|euH_cF zc#V{gXFeDw!^Hc{Kjxeug&Bo9a7&BJQjTZ)d_wT!fnD}EKG-Gx>r^63`5QuMj%$-< z!{%XCSb~;JSMh9@RLNoM74mz+qZ39r*f<|viqjs)Dk0y2qylb z9&nXnG)rYk_VC45z1-2fpdg3`FflLVS!eF_5qfUod;*Y`8GdK>>)bArSDSe+kez_F zq2xT)&Jq$!2nXaV;?S==V;IcKj^G6}-$k~|L)khd20IjMZ#=kx>&4xA<@!YZ3)NDDr7Jb+WKfsCUF_re!YRnVja04{c4(f}p z4yG(PWA4@X*eKdtv=a1vffk3fIjSL98jUBBa*4v&UT^vs4Gmc;9_HbpUzS3;DRMWO zD~!9`8Y$RvUQHTcM_Q9ScmFRV1%*;kv2L*#$LLQ)88Y|);ZZN)6llVziA$mKH zISCuPR$<-UVVHEZ*he2NZZohQa^p2E)fP2hoa6|LK&H%HRI-M@V?HxIF^#Z<(7}M0 zi2cIhLbe@CCM-lu^dr)>4$0=>*6#S!rX!w&NuGFZ6cf^*C?+X)Y}ZP=%}&J>>U!jt z(tq0g!EW{n0jSFNA4@*F**ThKdGslKKV87RU|E?JFcd_I3eM)H@^x%^;bqo&%Wea^cys2ViPN@hor6IW7VS8Z>) z{7j9`Z9znbzhVN{y0KB0x=Pr}SIaz#-aq|BdRDc&yNi16dgv_Nx&SIg+uK?8(5c;E z#`>*^1i!w|c(T@jjop5&FE;0GYse@x@t#)6S&|sOE}i(BMqhT2nz{AyQrmyscxT3MgA>Z41SzHw*DC6U#? zr=GTY6t#Kq&=WI%*k0oNRW7{kelKxTQ%$9T$O;LW-~^FV8z$S0Db)P#&W^>XvdC}4E5J+rtc43-x0>(w z->4AMlO?@%%W#vO32n%qe)tY|{aDLAp%N9iA7DC=#%8%(Fz0=gC{!&=#rMmil^zdI zx0?hXbn&HA^H~mjyyn0P+sv{VWKMM8pBidUbK75O8C_mnh6^!%`emy)*8J72)4fh!{+#3wu47s4L+@$tk}^-NE<-Am z6>H45TIM_W=LkiHGa7PG||z~C7)Eu!Ia^S#cNHxKB=t=w~}sR5(^8%DvbPLqW^E zIKe3bn%|mwl13D=3@F@hLROk4Ioz_05|y5Fb3f!b(6K4MM^+prJQSHUEbHJhxiegx z&wN789>4u!RBrCctEA;5mu)}VQtMgKf&Tf-x0Eu6n|+tV_gB8_4OM1mo1oT^FT7}-6LmL=1Ld9dy(z@;ir+l;r1mura(Q)z~%S-rzCLgqrHf* zj_Djys@vph0pv=)8yB=r(~jFl6k4%uvpy!?uB49Z)2-UJi>5nZm5j+OOt@FVw-Z|- zP--?@CVfTo5XlMeEEq#%I7m+v?6lH(cyVgi+eSuSpy7TLPeF21!JEImRpxt7M+qJD zI0O>)!oBbHh5Sria#RPn7%5KHS}Zf^$L&gDbPJ#0dD(W7;OoYt6E(i=8AL}W?6w=B zm6f{s6B825CX!7eK9!@S&)>P6!G)VsP_HWe=r0>G-?cNwyb3cPB!;1bOjQa^Co0us zJFg!M4HZXC5v`8Gn zOq>ilRgUY`^ShZxi_7MyQcXfcL}rh+wA_1+swnpaf@o^e%<)ccQ)8CFLLKRpKC;nW zk}dsGO(MIbWjEpd)=(jllf%xBW6o5;R&!01#t(Ah{6pgPYZ6xtgMONJU3?OmB=H&7CUpFl%lP4ij=e+s2brA(7l)pYn;+Kl)mQ^Yko7gEu@V_^Db9zW^D(y#>~3d9DWdYp^InFu~(R z>V=G*Bg!eYo0~qPg-C_TK>pnIwO;q)yKG`kq7o8}LRTi><`xRc29`P!hKx1qhE2gj zjweF^QBKoxE#~%;up-WcD*Hk8v1D-K0|C7+p+7%RK$*>|RBj&;Q4fVBh{$etTrdFR zS-dT-H}8(yj$BnaDCVv}l)@*J+*hGWAe(tLbA8vDi(><)wPg^Z$Nnnc;g6fFU~ z(;Z#a5h-Tk&zkb1q=L>3b(Gq#5oX@ED5YaI^USX3H}3=P4# zkjX-n+Ox{A>dLhEO}w9j&MSVFiOy@@&C=>L&s{%&yLWL!W%|y}E;6BlnVtO8S@KjXMq~UWu<8R`)MT3ol?L_>rHx6;(~w0)z31?J zMcL13I`sK|$ufIJ{V})*)%N8I)I^q_>`lzlx7OHOR(!~YF^LE;MPJlS>wjISMhgEx zbm=4+$GMGd45cAEMa)ze zlOWSs==jHC@KO51-N~JD3r$3Zo2Kh03wYh<)lty$JW-JOY}N;3p;_hZ6LDi*GoVJv z{O728q3-aspw~n)lC5qNJ&;Il2(LIy-`5tY5O{QwnC(b0`rX%!ymK>dM z-^~$l__KytqhjKyye}3GTs-XHWv%%+4^m;5Sw81#bF3;S$HDfdEa%pgpWVSo-jwz1 zoWXdFR>gX9kC9=04Z=<{M1ZL;a->!xB3CUWIVG^7wP|en@@U9M-|(v_{m=MU!usqI z5IpJKhesC&o-N1yCSXG{?WQ?7m900iwbgMQZ$@shsv-zhKb{ZYJj5o6Vb6re>ePpF zIfZ&Ty`&hXyu~D;I0u0`an9_%uo!Ns;1)N{={l3$UhcQlTza^LZTiFGi*>?|+x|(= z@RgZ)R#n1Ni;2)|u4UpNS_KwvU;Z;Va!>grQ2xlnAft{;!qrb@+mfyGwlIornCV{f zN4ZP~>o+w7XEfDjz4Z$V-zd_i?~E00mdK0Tx_#IF;6(gbYKY(^5u&Uv+VjOhAt4b# zBA4D=F8-$kL5EMCZbH=}1!G;)LT>S`SWz`-b%E_-Ut+Jlfc@d&kj7H|@qvZbo47Iy zk6tjbW|EH+F!+^a=)`w?94A{!U{}CqfLn9AgZDF`+YUdm__=4hHq{5@RyQ$e$R@kC z>BJ{f%s3aLLKR~H>U47O{NUPvErT#Bz1ww*QQ-R-$u@d?;Nm#CaeA;(a4-YqAAJ0r zVWWB<$!AIGGW+3n(y5%G91T<4mA+ILWmko%qkbkxpU+4h?y=fhV1>Bk^=;`TB2T;P zr}wyrgw9SE_g6=5`%iD0j6XW4GqJ2i1$81S>YR-2&%|xm;Bu3%h?{wDY%oefud>!i z=fzEwnm%#<*=fJUyFb6rd-lvP;Cu?(5;d$p{7@-m)N4%XVg=oQ+>kx?DU#!E-+5c3~%?u zaR+KwFybQXdljn+N6{|T{{H?UcleD}PcHIbe3y9Nwax70R}n{Ywaf6%C1Me4NC3Me z5#3XxrHA~lcQBYj<(egF&I9e;{@de}u6wrYOwy3GsWiuYs-a-2K}IWLnkKNxgCIxr z{cVyYNk-v8xWu*HJ*#8?SOfhi8r`U+EjMD|Gi^e0Mk? z^--}=Y77qqAIxz~QWJqUjopIESBbP6IV+ip*;($xre!LPIqZ+PLSenBN@RMCf%dnyl~T>sx$@CYB0Rhq@E zu2cfM<-JBLhZ{6)f6^nshb_akD2jV@N28$luDmfa;6jO~E&7C2BBzem@{LE?94$i) zZ@U`Rb-&*~@=H&pHYoT@K4W|F#901}>P3`f&amiD3Mz1x$E);hWe!s@>5&?oN+7Gv zt9em;&xG}^<-#KR&yQwt>oyx`6huE+B4c%avIe_Wnywgk*51`~z8GcZYw(&jp>n=N zT5*8p(ul5WE}^dId%+i(gMD^#iL|?G=l`-77h)r{UR=|(u<>S3z%W|4zt^|w$HTkw z>bx%?m(>|1y-O7lKLS59@yJweKOrIac`PVDsh^49|N{$;TF1n&kJ z=^bWn7FiGXQqr`XR9kKG)vn^5DAldG*Io~2f?QF4mqZ}>YPl()$0gAP)FG7{;DzF) za4#;bf+4!GD(p+(@Gr6KJR|U_?rGcMY;9M&OCRNgdbqo@9-_HTBPI0e zjpH>}Zj4@SuGPG^H_T-MtvcDO8gS}oLvpCa*Ki8aghIV9Db>>9)30plRe@vthKPOz6sm$qHses z`z}}Y2&{wGbIYKer?)rl2c&S>2XX&v1D7Zx_9eN%ccS;5gJw*^km#HwOhKY)ykP|)Qu2~7AtDC4eAIAg+y;w zd>%QF=DHui;7`nmQ@Uzm_k+!#_6R#bn6RaML{(O+A5Fd?-fy{|_WjNdxKIct1hPzi zmDMx~8ZEdb^?_v5lj5oF{i&eo$fWR|wQrjRH2B{X8m>jGcJ1@gK`83UOS+xO*kh5y zTT#DyGst_6xHci=yJ{quF?Ioa@NTNS1x)~71!?QFUkWDmzDwF0{&!X}(MDh8M&{`rZk(?@`erpJZW6fJ+VY63 z_IZgx^p7H0C*7vbrQQiPzHD7ee^cEZiwp%;x2 ziDa$r+XdkL`r;`4|JbHo%XUXiI{VBtEA*pRY2ng!TC;TZ%kElFeV4j$>ztv^^y~NsfDci}v2A z^GlyQ>b`7A-&7KAS(_L&{d9R)66^UVOKtqKi??{cD)O%QJo#BBGgoP^+hOzP?F`cr zD^B}e@CFtK_ZoJsKAO5QD}Bw6J!RhgdoS(Sy{4c%|L3`i1KMIA&s4bqZ_#UJty;8X`E)1N^BV6ft*5+aU~?b(Y*8^3u~rq%jNAJ+w@i#^SAi-0R#%=x0V-d>h{c`k=}o@MxP z@9Dl~-xnu)h0k+82DICJBj3wMr;nXDv^(VDxjR$dopC&1{M@VZrT0;e?Y0V_{PR9% zb@5TQuEh0woM*Qh1>NM1JzlzJY42Yb_i4<)=AK*X|4F8*=VqqA>n=NOC#$m2celKm#;thpbB(?#e$+Am)>qUXFfIdTv#2@SO$iOV9ULi z-g*gsnDb|r?KSPC6Miu;6g&@@y0fu*sul3Yr?3y(f2sq+;DgEkB#~WmAA(i@YxoCz z&ofikRx`y3Y5^y28tPB$@_;6Ber#7juKrQl0$4Z~{sYbZ|KIB5>Q6w;Y@qs-nZfaf VLgYR diff --git a/packages/components/tree/__screenshots__/01-dark.png b/packages/components/tree/__screenshots__/01-dark.png index 5aa7462a393fa0e95eafda7088885e7a6d66b8d1..55708868a88eb3c55e158c7de5390c1089abbb09 100644 GIT binary patch literal 66437 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œ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

WUdj=Ouwzo}Hth8lkC8=ui$3dy15%SY(o-i1r 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 literal 65894 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�tJX`7!$WHWsV*$JYlanx9l}@CYcQW2 z)bxzz${1USJPYs=H}mJNi`*0<#)a9W#b2X}zp>K(YSjVbF?nOQF9s&WA zK1MUAAB8Z-c=7Ejv_~(mnfN-?us362IZLQu3UX-Vkl4z^NI~UqU0Aoy)wYo7@1XwS9zZgsYad zAr8)aT9&i}3L87Kb8rJsx!$igF<;IGT0}$4IVU*TpTM~lQUonj_KR*Y2iS57bB{HdFt>&@RDAEYp*~= zT6%BvqNeR{d~wc^a!3Ogby-a93VXzt}tYL%)n&p|$h z_e8ksOv>8}fWkpT*pVG<5iJkX03|87e%a1Oz8j`Apr8ErABrAZI`qxr&99>XxB&>0Ik%dS6BZlAJZ z4koo?YW! zW7_eq`?j3S(reY|R-ariDTKn-7b5AwYpHl8fm6XoPGC}FMr#e>9F=voH@-odwC9K+8`j*a}ui>_&d{_*_G9cplD zjf;+c%Tf1^Lo793y=MZl(`x3ni-~1u4=*pMP){%uH$^)C`6hGTbct zX#Yk@p=9?+O3tQ|G83_6&nD>Zj^c`&FKcQzl{@MwymmA$11{CbCExUC{C&%}tm~8K z9&r14iWPqX8-GDI4wWer?s+ewn|v+wGFmRl2`yqA-e-Z<@e~^8=L`>BMaa6e^*IH0gvCUT*6)cuTuic+ zUs>*wojbc=s2A5f6j8VJ8fHxYN%d`1Q=Ghu85C0e{DgTJ%zo$~%hBVQm4uR1PtTpl zbBBgT&67FztudNRi)i-MS8<<>rXB8f|l>YmkN6 zXn43THr%HAnN3rKT~AZh0NPfGzPji&{{a>>#F-7*ejzvihC<-dy{p z?Fy{=)NkEV1u4T*avxMt7R*lt(xRFj7XDG>enf@t?x=zh&gl?cb-XFaWlQBfCyhtE zTzh0&R+r0}^U1^uWvwL0DP(T}E+sagzJFjKo;-4BpYg^Pw|$6B?f8SP z=*)BXR;qY7$R^BUMUn!&3_8$R4Y{|{m(6se5exc*-@1M=x;SIFYCRcg&dj?K*{1Ke z)eyxNT(*Gw#0(rjq~6t)Pwp?s?J1nD&-n9orK<1SdDcS)eLPW=p82wZ%IjZ+LI54q z{x~7$nLW<6R2#n%2nZ=><2IX*TTF$kc#4IjoV0UFv5?700!2&-cb!(gR>lDH%N4FQ zC;Vc_pT{3`TsZYf{0#*iDRhf?hmb9-r3nM&>PDzGyu@`*iX0%n7QI{#;<=Ud41H+& zRKk{;{R*9d7QZdo`?qzGfe|D`m*wI{hqdWL^0)N=&dZ=mTE>nXAs-iAzp{HnoyZSP z1mj>vBjS9vh?%tIepQFCVRL#!S>*?Fap0hwDp6ipA&ov>kk8- zz_Vf^B R?#{xZp{lEruWWVi-vCNQ$Z-Gw diff --git a/packages/components/tree/__screenshots__/01-light.png b/packages/components/tree/__screenshots__/01-light.png index e806a39dea4081d58bb8ae369c78887dfa7c7452..4a1b85966b2a5ebf1e148fb028f688fbe82fe3b0 100644 GIT binary patch literal 64347 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 From 6498b3fb31c68cc230ed59432bdbcfa8cc09389c Mon Sep 17 00:00:00 2001 From: lskramarov Date: Mon, 8 Jun 2026 19:33:00 +0300 Subject: [PATCH 12/12] fix: run CI