@dereekb/dbx-web 13.10.6 → 13.10.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/README.md +10 -0
- package/eslint/index.cjs.default.js +1 -0
- package/eslint/index.cjs.js +1096 -0
- package/eslint/index.cjs.mjs +2 -0
- package/eslint/index.d.ts +1 -0
- package/eslint/index.esm.js +1091 -0
- package/eslint/src/index.d.ts +1 -0
- package/eslint/src/lib/index.d.ts +4 -0
- package/eslint/src/lib/no-redundant-on-destroy.rule.d.ts +40 -0
- package/eslint/src/lib/plugin.d.ts +20 -0
- package/eslint/src/lib/require-clean-subscription.rule.d.ts +79 -0
- package/eslint/src/lib/require-complete-on-destroy.rule.d.ts +33 -0
- package/eslint/src/lib/util.d.ts +256 -0
- package/fesm2022/dereekb-dbx-web-calendar.mjs +9 -9
- package/fesm2022/dereekb-dbx-web-docs.mjs +146 -0
- package/fesm2022/dereekb-dbx-web-docs.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-web-mapbox.mjs +58 -64
- package/fesm2022/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-web-table.mjs +80 -80
- package/fesm2022/dereekb-dbx-web-table.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-web.mjs +1705 -944
- package/fesm2022/dereekb-dbx-web.mjs.map +1 -1
- package/lib/action/snackbar/_snackbar.scss +5 -0
- package/lib/button/_button.scss +27 -0
- package/lib/error/_error.scss +5 -0
- package/lib/extension/pdf/_pdf.scss +19 -59
- package/lib/interaction/dialog/_dialog.scss +5 -0
- package/lib/interaction/popover/_popover.scss +5 -0
- package/lib/interaction/popup/_popup.scss +5 -0
- package/lib/interaction/prompt/_prompt.scss +4 -0
- package/lib/interaction/upload/_upload.scss +15 -2
- package/lib/layout/avatar/_avatar.scss +26 -0
- package/lib/layout/bar/_bar.scss +27 -0
- package/lib/layout/block/_block.scss +4 -0
- package/lib/layout/column/_column.scss +3 -0
- package/lib/layout/content/_content.scss +29 -0
- package/lib/layout/flex/_flex.scss +37 -0
- package/lib/layout/list/_list.scss +99 -0
- package/lib/layout/section/_section.scss +7 -0
- package/lib/layout/style/_style.scss +49 -0
- package/lib/layout/text/_text.scss +298 -14
- package/lib/loading/_loading.scss +6 -0
- package/lib/style/_variables.scss +167 -0
- package/package.json +27 -14
- package/types/dereekb-dbx-web-docs.d.ts +73 -0
- package/types/dereekb-dbx-web-mapbox.d.ts +4 -4
- package/types/dereekb-dbx-web.d.ts +827 -179
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { dbxWebRequireCleanSubscriptionRule } from './require-clean-subscription.rule';
|
|
2
|
+
export { dbxWebRequireCompleteOnDestroyRule } from './require-complete-on-destroy.rule';
|
|
3
|
+
export { dbxWebNoRedundantOnDestroyRule } from './no-redundant-on-destroy.rule';
|
|
4
|
+
export { dbxWebEslintPlugin } from './plugin';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type AstNode } from './util';
|
|
2
|
+
/**
|
|
3
|
+
* ESLint rule definition shape used by `no-redundant-on-destroy`.
|
|
4
|
+
*/
|
|
5
|
+
export interface DbxWebNoRedundantOnDestroyRuleDefinition {
|
|
6
|
+
readonly meta: {
|
|
7
|
+
readonly type: 'suggestion';
|
|
8
|
+
readonly fixable: 'code';
|
|
9
|
+
readonly docs: {
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly recommended: boolean;
|
|
12
|
+
};
|
|
13
|
+
readonly messages: {
|
|
14
|
+
readonly redundantCleanupCall: string;
|
|
15
|
+
readonly redundantNgOnDestroy: string;
|
|
16
|
+
readonly emptyNgOnDestroy: string;
|
|
17
|
+
readonly orphanedImplementsOnDestroy: string;
|
|
18
|
+
};
|
|
19
|
+
readonly schema: readonly object[];
|
|
20
|
+
};
|
|
21
|
+
create(context: AstNode): Record<string, (node: AstNode) => void>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* ESLint rule that flags `ngOnDestroy()` bodies whose statements are entirely
|
|
25
|
+
* redundant `this.<field>.destroy()` / `this.<field>.complete()` calls on
|
|
26
|
+
* fields whose initializer is wrapped with `cleanSubscription`,
|
|
27
|
+
* `completeOnDestroy`, or `clean`.
|
|
28
|
+
*
|
|
29
|
+
* Auto-fix:
|
|
30
|
+
* - Removes each redundant statement, plus its leading whitespace and trailing newline.
|
|
31
|
+
* - Removes the `ngOnDestroy` method declaration when its body becomes empty.
|
|
32
|
+
* - When the `ngOnDestroy` method is removed entirely, also removes the
|
|
33
|
+
* `implements OnDestroy` clause from the class (verified against the
|
|
34
|
+
* `@angular/core` import). The now-unused `OnDestroy` import is left for
|
|
35
|
+
* `eslint-plugin-unused-imports` to clean up.
|
|
36
|
+
* - When a class declares `implements OnDestroy` from `@angular/core` but has
|
|
37
|
+
* no `ngOnDestroy()` method (e.g. left over from a previous run), the
|
|
38
|
+
* orphaned implements clause is removed.
|
|
39
|
+
*/
|
|
40
|
+
export declare const dbxWebNoRedundantOnDestroyRule: DbxWebNoRedundantOnDestroyRuleDefinition;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { dbxWebRequireCleanSubscriptionRule } from './require-clean-subscription.rule';
|
|
2
|
+
import { dbxWebRequireCompleteOnDestroyRule } from './require-complete-on-destroy.rule';
|
|
3
|
+
import { dbxWebNoRedundantOnDestroyRule } from './no-redundant-on-destroy.rule';
|
|
4
|
+
/**
|
|
5
|
+
* ESLint plugin interface for dbx-web rules.
|
|
6
|
+
*/
|
|
7
|
+
export interface DbxWebEslintPlugin {
|
|
8
|
+
readonly rules: {
|
|
9
|
+
readonly 'require-clean-subscription': typeof dbxWebRequireCleanSubscriptionRule;
|
|
10
|
+
readonly 'require-complete-on-destroy': typeof dbxWebRequireCompleteOnDestroyRule;
|
|
11
|
+
readonly 'no-redundant-on-destroy': typeof dbxWebNoRedundantOnDestroyRule;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* ESLint plugin for dbx-web rules.
|
|
16
|
+
*
|
|
17
|
+
* Register as a plugin in your flat ESLint config, then enable individual rules
|
|
18
|
+
* under the chosen plugin prefix (e.g. 'dereekb-dbx-web/require-clean-subscription').
|
|
19
|
+
*/
|
|
20
|
+
export declare const dbxWebEslintPlugin: DbxWebEslintPlugin;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { type AstNode } from './util';
|
|
2
|
+
/**
|
|
3
|
+
* ESLint rule definition shape used by `require-clean-subscription`.
|
|
4
|
+
*/
|
|
5
|
+
export interface DbxWebRequireCleanSubscriptionRuleDefinition {
|
|
6
|
+
readonly meta: {
|
|
7
|
+
readonly type: 'problem';
|
|
8
|
+
readonly fixable: 'code';
|
|
9
|
+
readonly docs: {
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly recommended: boolean;
|
|
12
|
+
};
|
|
13
|
+
readonly messages: {
|
|
14
|
+
readonly missingCleanSubscription: string;
|
|
15
|
+
};
|
|
16
|
+
readonly schema: readonly object[];
|
|
17
|
+
};
|
|
18
|
+
create(context: AstNode): Record<string, (node: AstNode) => void>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Input for {@link collectNgOnDestroyRemovalFixes}.
|
|
22
|
+
*/
|
|
23
|
+
export interface CollectNgOnDestroyRemovalFixesInput {
|
|
24
|
+
/**
|
|
25
|
+
* The ESLint RuleFixer.
|
|
26
|
+
*/
|
|
27
|
+
readonly fixer: AstNode;
|
|
28
|
+
/**
|
|
29
|
+
* The MethodDefinition node for `ngOnDestroy`.
|
|
30
|
+
*/
|
|
31
|
+
readonly ngOnDestroy: AstNode;
|
|
32
|
+
/**
|
|
33
|
+
* The class field name to match against `this.<name>`.
|
|
34
|
+
*/
|
|
35
|
+
readonly propName: string;
|
|
36
|
+
/**
|
|
37
|
+
* The method name on the field to match (`destroy` or `complete`).
|
|
38
|
+
*/
|
|
39
|
+
readonly methodName: string;
|
|
40
|
+
/**
|
|
41
|
+
* The ESLint sourceCode service for the current file.
|
|
42
|
+
*/
|
|
43
|
+
readonly sourceCode: AstNode;
|
|
44
|
+
/**
|
|
45
|
+
* The fix collector array. Mutated.
|
|
46
|
+
*/
|
|
47
|
+
readonly fixes: AstNode[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* ESLint rule that requires class-field initializers of `new SubscriptionObject(...)`
|
|
51
|
+
* to be replaced with `cleanSubscription(...)` (which auto-registers cleanup with
|
|
52
|
+
* Angular's DestroyRef) on `@Component` / `@Directive` / `@Pipe` classes.
|
|
53
|
+
*
|
|
54
|
+
* Fires only when `SubscriptionObject` is imported from `@dereekb/rxjs`.
|
|
55
|
+
*
|
|
56
|
+
* Auto-fix:
|
|
57
|
+
* - Rewrites the initializer to `cleanSubscription(...)` (preserving any constructor argument).
|
|
58
|
+
* - Inserts the `cleanSubscription` named import from `@dereekb/dbx-core` if missing.
|
|
59
|
+
* - Removes any matching `this.<field>.destroy();` line from the same class's `ngOnDestroy`.
|
|
60
|
+
*/
|
|
61
|
+
export declare const dbxWebRequireCleanSubscriptionRule: DbxWebRequireCleanSubscriptionRuleDefinition;
|
|
62
|
+
/**
|
|
63
|
+
* Pushes fixes that remove `this.<propName>.<methodName>()` ExpressionStatements
|
|
64
|
+
* from `ngOnDestroy`'s body. Removes the statement node and any preceding
|
|
65
|
+
* indentation on the same line so a blank line isn't left behind.
|
|
66
|
+
*
|
|
67
|
+
* @param input - The fixer, ngOnDestroy method, target property/method names, source-code service, and fix collector.
|
|
68
|
+
*/
|
|
69
|
+
export declare function collectNgOnDestroyRemovalFixes(input: CollectNgOnDestroyRemovalFixesInput): void;
|
|
70
|
+
/**
|
|
71
|
+
* Returns the range to remove for a statement, expanded to include any
|
|
72
|
+
* leading whitespace on the same line and the trailing newline. This avoids
|
|
73
|
+
* leaving a blank line after fix application.
|
|
74
|
+
*
|
|
75
|
+
* @param statement - The ExpressionStatement AST node.
|
|
76
|
+
* @param sourceCode - The ESLint sourceCode service.
|
|
77
|
+
* @returns A range tuple `[start, end]` to pass to `fixer.removeRange`.
|
|
78
|
+
*/
|
|
79
|
+
export declare function getStatementRangeWithLeadingWhitespace(statement: AstNode, sourceCode: AstNode): readonly [number, number];
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type AstNode } from './util';
|
|
2
|
+
/**
|
|
3
|
+
* ESLint rule definition shape used by `require-complete-on-destroy`.
|
|
4
|
+
*/
|
|
5
|
+
export interface DbxWebRequireCompleteOnDestroyRuleDefinition {
|
|
6
|
+
readonly meta: {
|
|
7
|
+
readonly type: 'problem';
|
|
8
|
+
readonly fixable: 'code';
|
|
9
|
+
readonly docs: {
|
|
10
|
+
readonly description: string;
|
|
11
|
+
readonly recommended: boolean;
|
|
12
|
+
};
|
|
13
|
+
readonly messages: {
|
|
14
|
+
readonly missingCompleteOnDestroy: string;
|
|
15
|
+
};
|
|
16
|
+
readonly schema: readonly object[];
|
|
17
|
+
};
|
|
18
|
+
create(context: AstNode): Record<string, (node: AstNode) => void>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* ESLint rule that requires class-field initializers of `new Subject(...)`,
|
|
22
|
+
* `new BehaviorSubject(...)`, `new ReplaySubject(...)`, and `new AsyncSubject(...)`
|
|
23
|
+
* to be wrapped with `completeOnDestroy(...)` from `@dereekb/dbx-core` on
|
|
24
|
+
* `@Component` / `@Directive` / `@Pipe` classes.
|
|
25
|
+
*
|
|
26
|
+
* Fires only when the Subject identifier is imported from `rxjs`.
|
|
27
|
+
*
|
|
28
|
+
* Auto-fix:
|
|
29
|
+
* - Wraps the initializer with `completeOnDestroy(...)`.
|
|
30
|
+
* - Inserts the `completeOnDestroy` named import from `@dereekb/dbx-core` if missing.
|
|
31
|
+
* - Removes any matching `this.<field>.complete();` line from the same class's `ngOnDestroy`.
|
|
32
|
+
*/
|
|
33
|
+
export declare const dbxWebRequireCompleteOnDestroyRule: DbxWebRequireCompleteOnDestroyRuleDefinition;
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module that holds Angular component decorators.
|
|
3
|
+
*/
|
|
4
|
+
export declare const ANGULAR_CORE_MODULE = "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Decorators that mark a class with a component-scoped DestroyRef lifecycle.
|
|
7
|
+
*
|
|
8
|
+
* `@Injectable` is intentionally excluded — services often expose long-lived
|
|
9
|
+
* Subjects as part of their public API and cleaning them on destroy is wrong.
|
|
10
|
+
*/
|
|
11
|
+
export declare const ANGULAR_COMPONENT_DECORATORS: ReadonlySet<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Module that holds the dbx-components RxJS extras (SubscriptionObject).
|
|
14
|
+
*/
|
|
15
|
+
export declare const DEREEKB_RXJS_MODULE = "@dereekb/rxjs";
|
|
16
|
+
/**
|
|
17
|
+
* Module that holds Subject/BehaviorSubject/etc.
|
|
18
|
+
*/
|
|
19
|
+
export declare const RXJS_MODULE = "rxjs";
|
|
20
|
+
/**
|
|
21
|
+
* Module that holds the cleanup helpers (cleanSubscription, completeOnDestroy, clean).
|
|
22
|
+
*/
|
|
23
|
+
export declare const DEREEKB_DBX_CORE_MODULE = "@dereekb/dbx-core";
|
|
24
|
+
/**
|
|
25
|
+
* Identifier name for the `SubscriptionObject` class.
|
|
26
|
+
*/
|
|
27
|
+
export declare const SUBSCRIPTION_OBJECT_NAME = "SubscriptionObject";
|
|
28
|
+
/**
|
|
29
|
+
* Identifier names for RxJS Subject classes that should be wrapped with `completeOnDestroy`.
|
|
30
|
+
*/
|
|
31
|
+
export declare const SUBJECT_NAMES: ReadonlySet<string>;
|
|
32
|
+
/**
|
|
33
|
+
* Helper imported from `@dereekb/dbx-core` that replaces a manual SubscriptionObject creation.
|
|
34
|
+
*/
|
|
35
|
+
export declare const CLEAN_SUBSCRIPTION_HELPER = "cleanSubscription";
|
|
36
|
+
/**
|
|
37
|
+
* Helper imported from `@dereekb/dbx-core` that wraps a Subject so it completes on destroy.
|
|
38
|
+
*/
|
|
39
|
+
export declare const COMPLETE_ON_DESTROY_HELPER = "completeOnDestroy";
|
|
40
|
+
/**
|
|
41
|
+
* Underlying Destroyable/DestroyFunction primitive helper from `@dereekb/dbx-core`.
|
|
42
|
+
*
|
|
43
|
+
* Accepted as a wrapper for `new SubscriptionObject(...)` since `SubscriptionObject`
|
|
44
|
+
* is `Destroyable`. Not accepted for raw Subjects since those are neither
|
|
45
|
+
* `Destroyable` nor `DestroyFunction` and would not actually call `.complete()`.
|
|
46
|
+
*/
|
|
47
|
+
export declare const CLEAN_HELPER = "clean";
|
|
48
|
+
/**
|
|
49
|
+
* Loose AST node alias used by the rule implementations.
|
|
50
|
+
*/
|
|
51
|
+
export type AstNode = any;
|
|
52
|
+
/**
|
|
53
|
+
* Per-file registry of import information used by all rules in this plugin.
|
|
54
|
+
*
|
|
55
|
+
* Tracks: which local names came from which module, the ImportDeclaration node
|
|
56
|
+
* for each module (for fix insertion), and the last import declaration in the
|
|
57
|
+
* file (for inserting brand-new imports after).
|
|
58
|
+
*/
|
|
59
|
+
export interface ImportRegistry {
|
|
60
|
+
/**
|
|
61
|
+
* Maps source-module string to the set of locally-bound identifiers that came from it.
|
|
62
|
+
*/
|
|
63
|
+
readonly bySource: Map<string, Set<string>>;
|
|
64
|
+
/**
|
|
65
|
+
* Maps a local identifier name to the source-module string it was imported from.
|
|
66
|
+
*/
|
|
67
|
+
readonly localToSource: Map<string, string>;
|
|
68
|
+
/**
|
|
69
|
+
* Maps source-module string to its ImportDeclaration AST node (for appending specifiers).
|
|
70
|
+
*/
|
|
71
|
+
readonly sourceToDeclaration: Map<string, AstNode>;
|
|
72
|
+
/**
|
|
73
|
+
* The last ImportDeclaration node in the file. Used to insert brand-new imports.
|
|
74
|
+
*/
|
|
75
|
+
lastImportDeclaration: AstNode | null;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Creates an empty {@link ImportRegistry}.
|
|
79
|
+
*
|
|
80
|
+
* @returns A fresh empty registry.
|
|
81
|
+
*/
|
|
82
|
+
export declare function createImportRegistry(): ImportRegistry;
|
|
83
|
+
/**
|
|
84
|
+
* Records an `ImportDeclaration` node in the registry. Call from the rule's
|
|
85
|
+
* `ImportDeclaration` visitor for every import in the file.
|
|
86
|
+
*
|
|
87
|
+
* @param registry - The registry to mutate.
|
|
88
|
+
* @param node - The ImportDeclaration AST node.
|
|
89
|
+
*/
|
|
90
|
+
export declare function trackImportDeclaration(registry: ImportRegistry, node: AstNode): void;
|
|
91
|
+
/**
|
|
92
|
+
* Returns true when the given local identifier name was imported from the given module.
|
|
93
|
+
*
|
|
94
|
+
* @param registry - The import registry built from the file's import declarations.
|
|
95
|
+
* @param localName - The local identifier (as it appears in code).
|
|
96
|
+
* @param fromSource - The expected source-module string.
|
|
97
|
+
* @returns True when the local name maps to the given source.
|
|
98
|
+
*/
|
|
99
|
+
export declare function isImportedFrom(registry: ImportRegistry, localName: string, fromSource: string): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Extracts the decorator name from a decorator AST node.
|
|
102
|
+
*
|
|
103
|
+
* Handles `@Foo()` (CallExpression) and `@Foo` (Identifier). Returns the empty
|
|
104
|
+
* string for anything else.
|
|
105
|
+
*
|
|
106
|
+
* @param decorator - The decorator AST node.
|
|
107
|
+
* @returns The decorator name, or empty string when unrecognized.
|
|
108
|
+
*/
|
|
109
|
+
export declare function getDecoratorName(decorator: AstNode): string;
|
|
110
|
+
/**
|
|
111
|
+
* Returns the first decorator on the class that names a component-tier
|
|
112
|
+
* Angular decorator (`@Component`, `@Directive`, `@Pipe`) imported from
|
|
113
|
+
* `@angular/core`, or null when none match.
|
|
114
|
+
*
|
|
115
|
+
* @param classNode - The ClassDeclaration / ClassExpression AST node.
|
|
116
|
+
* @param registry - The file's import registry, used to verify the decorator
|
|
117
|
+
* identifier really came from `@angular/core` (and not a local alias).
|
|
118
|
+
* @returns The matching decorator and its name, or null.
|
|
119
|
+
*/
|
|
120
|
+
export declare function findAngularComponentDecorator(classNode: AstNode, registry: ImportRegistry): {
|
|
121
|
+
readonly decorator: AstNode;
|
|
122
|
+
readonly name: string;
|
|
123
|
+
} | null;
|
|
124
|
+
/**
|
|
125
|
+
* Returns the property name of a class member when its key is a simple Identifier or string Literal.
|
|
126
|
+
*
|
|
127
|
+
* Returns null for computed/symbol/private keys.
|
|
128
|
+
*
|
|
129
|
+
* @param member - A ClassBody member AST node.
|
|
130
|
+
* @returns The property name, or null when not a simple key.
|
|
131
|
+
*/
|
|
132
|
+
export declare function getClassMemberName(member: AstNode): string | null;
|
|
133
|
+
/**
|
|
134
|
+
* Finds the `ngOnDestroy` method declaration on the given class, if any.
|
|
135
|
+
*
|
|
136
|
+
* @param classNode - The ClassDeclaration / ClassExpression AST node.
|
|
137
|
+
* @returns The MethodDefinition AST node for `ngOnDestroy`, or null.
|
|
138
|
+
*/
|
|
139
|
+
export declare function findNgOnDestroyMethod(classNode: AstNode): AstNode | null;
|
|
140
|
+
/**
|
|
141
|
+
* If the given expression is a `CallExpression` whose callee is one of the
|
|
142
|
+
* accepted identifier names, returns the matching name. Otherwise null.
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```
|
|
146
|
+
* isCalledIdentifier(node, ['cleanSubscription', 'clean']) // returns 'cleanSubscription'
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* @param node - The expression AST node.
|
|
150
|
+
* @param names - The accepted identifier names.
|
|
151
|
+
* @returns The matched name, or null.
|
|
152
|
+
*/
|
|
153
|
+
export declare function isCalledIdentifier(node: AstNode, names: ReadonlySet<string>): string | null;
|
|
154
|
+
/**
|
|
155
|
+
* Returns true when the given AST node is a `this.<propName>` MemberExpression.
|
|
156
|
+
*
|
|
157
|
+
* @param node - The AST node to check.
|
|
158
|
+
* @param propName - The expected property name.
|
|
159
|
+
* @returns True when the node is `this.<propName>`.
|
|
160
|
+
*/
|
|
161
|
+
export declare function isThisMemberAccess(node: AstNode, propName: string): boolean;
|
|
162
|
+
/**
|
|
163
|
+
* Input for {@link ensureNamedImportFix}.
|
|
164
|
+
*/
|
|
165
|
+
export interface EnsureNamedImportFixInput {
|
|
166
|
+
/**
|
|
167
|
+
* The ESLint RuleFixer.
|
|
168
|
+
*/
|
|
169
|
+
readonly fixer: AstNode;
|
|
170
|
+
/**
|
|
171
|
+
* The file's import registry. Mutated to record the new import.
|
|
172
|
+
*/
|
|
173
|
+
readonly registry: ImportRegistry;
|
|
174
|
+
/**
|
|
175
|
+
* The named-import identifier to ensure is present.
|
|
176
|
+
*/
|
|
177
|
+
readonly importName: string;
|
|
178
|
+
/**
|
|
179
|
+
* The source-module string to import from.
|
|
180
|
+
*/
|
|
181
|
+
readonly fromSource: string;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Builds a fix operation that ensures `importName` is imported from
|
|
185
|
+
* `fromSource` in the file. Returns null when the import is already present.
|
|
186
|
+
*
|
|
187
|
+
* Side effect: mutates the registry to mark the import as present, so two
|
|
188
|
+
* separate report fixes in the same lint pass don't both insert the same import.
|
|
189
|
+
*
|
|
190
|
+
* @param input - The fixer, registry, and import names.
|
|
191
|
+
* @returns A fix operation, or null when the import is already present.
|
|
192
|
+
*/
|
|
193
|
+
export declare function ensureNamedImportFix(input: EnsureNamedImportFixInput): AstNode | null;
|
|
194
|
+
/**
|
|
195
|
+
* Returns true when the given PropertyDefinition declares a `static` member.
|
|
196
|
+
*
|
|
197
|
+
* @param node - The PropertyDefinition AST node.
|
|
198
|
+
* @returns True when the node has `static` modifier.
|
|
199
|
+
*/
|
|
200
|
+
export declare function isStaticProperty(node: AstNode): boolean;
|
|
201
|
+
/**
|
|
202
|
+
* Returns true when the given PropertyDefinition uses `declare`
|
|
203
|
+
* (`declare readonly foo: T`) — i.e. has no runtime initializer.
|
|
204
|
+
*
|
|
205
|
+
* @param node - The PropertyDefinition AST node.
|
|
206
|
+
* @returns True when the property is declared abstractly.
|
|
207
|
+
*/
|
|
208
|
+
export declare function isDeclareProperty(node: AstNode): boolean;
|
|
209
|
+
/**
|
|
210
|
+
* The Angular `OnDestroy` lifecycle interface name.
|
|
211
|
+
*/
|
|
212
|
+
export declare const ON_DESTROY_INTERFACE_NAME = "OnDestroy";
|
|
213
|
+
/**
|
|
214
|
+
* Match details for an `implements OnDestroy` clause located on a class.
|
|
215
|
+
*/
|
|
216
|
+
export interface OnDestroyImplementsMatch {
|
|
217
|
+
/**
|
|
218
|
+
* The full list of `implements` specifiers on the class (TSClassImplements nodes).
|
|
219
|
+
*/
|
|
220
|
+
readonly allImplements: readonly AstNode[];
|
|
221
|
+
/**
|
|
222
|
+
* The TSClassImplements node for `OnDestroy`.
|
|
223
|
+
*/
|
|
224
|
+
readonly clauseSpecifier: AstNode;
|
|
225
|
+
/**
|
|
226
|
+
* Index of {@link clauseSpecifier} within {@link allImplements}.
|
|
227
|
+
*/
|
|
228
|
+
readonly index: number;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Locates an `implements OnDestroy` clause on the class whose `OnDestroy`
|
|
232
|
+
* identifier resolves to the import from `@angular/core`. Returns null when
|
|
233
|
+
* no matching clause exists.
|
|
234
|
+
*
|
|
235
|
+
* @param classNode - The ClassDeclaration / ClassExpression AST node.
|
|
236
|
+
* @param registry - The file's import registry.
|
|
237
|
+
* @returns The match details, or null.
|
|
238
|
+
*/
|
|
239
|
+
export declare function findOnDestroyImplementsClause(classNode: AstNode, registry: ImportRegistry): OnDestroyImplementsMatch | null;
|
|
240
|
+
/**
|
|
241
|
+
* Computes the source range to remove for the given `implements` specifier so
|
|
242
|
+
* that the surrounding `implements` clause stays well-formed.
|
|
243
|
+
*
|
|
244
|
+
* Behavior:
|
|
245
|
+
* - When the specifier is the only entry, the entire `implements <X>` clause
|
|
246
|
+
* is removed, including the leading whitespace before the `implements`
|
|
247
|
+
* keyword (so `class Foo implements OnDestroy {` becomes `class Foo {`).
|
|
248
|
+
* - When the specifier is the first of several, the specifier and the
|
|
249
|
+
* following comma+whitespace are removed.
|
|
250
|
+
* - Otherwise, the preceding comma+whitespace and the specifier are removed.
|
|
251
|
+
*
|
|
252
|
+
* @param match - The `implements OnDestroy` match details.
|
|
253
|
+
* @param sourceCode - The ESLint sourceCode service.
|
|
254
|
+
* @returns A `[start, end]` range tuple suitable for `fixer.removeRange`.
|
|
255
|
+
*/
|
|
256
|
+
export declare function getImplementsSpecifierRemovalRange(match: OnDestroyImplementsMatch, sourceCode: AstNode): readonly [number, number];
|
|
@@ -172,10 +172,10 @@ class DbxCalendarStore extends ComponentStore {
|
|
|
172
172
|
setNavigationRangeLimit = this.updater((state, navigationRangeLimit) => updateCalendarStateWithNavigationRangeLimit(state, navigationRangeLimit));
|
|
173
173
|
setShowTodayButton = this.updater((state, showTodayButton) => ({ ...state, showTodayButton: showTodayButton ?? true }));
|
|
174
174
|
setShowPageButtons = this.updater((state, showPageButtons) => ({ ...state, showPageButtons: showPageButtons ?? false }));
|
|
175
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
176
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
175
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxCalendarStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
176
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxCalendarStore });
|
|
177
177
|
}
|
|
178
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
178
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxCalendarStore, decorators: [{
|
|
179
179
|
type: Injectable
|
|
180
180
|
}], ctorParameters: () => [] });
|
|
181
181
|
/**
|
|
@@ -290,10 +290,10 @@ class DbxCalendarBaseComponent {
|
|
|
290
290
|
typeToggleChanged(event) {
|
|
291
291
|
this.calendarStore.setDisplayType(event.value);
|
|
292
292
|
}
|
|
293
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
294
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
293
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxCalendarBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
294
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: DbxCalendarBaseComponent, isStandalone: true, selector: "dbx-calendar-base", ngImport: i0, template: "<div class=\"dbx-calendar\">\n <h3 class=\"dbx-calendar-title\">{{ viewDateSignal() | calendarDate: displayTypeSignal() + 'ViewTitle' : 'en' }}</h3>\n <div class=\"dbx-calendar-header\">\n <div class=\"dbx-calendar-controls\" fxLayout=\"row\" fxLayout.xs=\"column\" ngClass.xs=\"dbx-calendar-controls-compact\">\n <span class=\"dbx-calendar-controls-left dbx-flex\" fxFlex=\"nogrow\">\n @if (showTodayButtonSignal()) {\n <button mat-stroked-button [disabled]=\"!canJumpToTodaySignal()\" (click)=\"todayClicked()\">Today</button>\n }\n <dbx-button-spacer></dbx-button-spacer>\n @if (hasMultiplePagesSignal()) {\n <div class=\"d-iblock\">\n @if (showPageButtonsSignal()) {\n <button mat-icon-button [disabled]=\"isLookingAtMinimumDateSignal()\" aria-label=\"first page button\" (click)=\"firstPageButtonClicked()\">\n <mat-icon>first_page</mat-icon>\n </button>\n }\n <button mat-icon-button [disabled]=\"isLookingAtMinimumDateSignal()\" [attr.aria-label]=\"'Previous ' + displayTypeSignal() + ' button'\" (click)=\"previousButtonClicked()\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMaximumDateSignal()\" [attr.aria-label]=\"'Next ' + displayTypeSignal() + ' button'\" (click)=\"nextButtonClicked()\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n @if (showPageButtonsSignal()) {\n <button mat-icon-button [disabled]=\"isLookingAtMaximumDateSignal()\" aria-label=\"last page button\" (click)=\"lastPageButtonClicked()\">\n <mat-icon>last_page</mat-icon>\n </button>\n }\n </div>\n }\n </span>\n <span class=\"spacer\"></span>\n <span class=\"dbx-calendar-controls-right\" fxFlex=\"nogrow\">\n <ng-content select=\"[controls]\"></ng-content>\n </span>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i4.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "pipe", type: CalendarDatePipe, name: "calendarDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
295
295
|
}
|
|
296
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
296
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxCalendarBaseComponent, decorators: [{
|
|
297
297
|
type: Component,
|
|
298
298
|
args: [{ selector: 'dbx-calendar-base', standalone: true, imports: [MatButtonModule, MatButtonToggleModule, DbxButtonSpacerDirective, MatIconModule, CalendarDatePipe, FlexLayoutModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dbx-calendar\">\n <h3 class=\"dbx-calendar-title\">{{ viewDateSignal() | calendarDate: displayTypeSignal() + 'ViewTitle' : 'en' }}</h3>\n <div class=\"dbx-calendar-header\">\n <div class=\"dbx-calendar-controls\" fxLayout=\"row\" fxLayout.xs=\"column\" ngClass.xs=\"dbx-calendar-controls-compact\">\n <span class=\"dbx-calendar-controls-left dbx-flex\" fxFlex=\"nogrow\">\n @if (showTodayButtonSignal()) {\n <button mat-stroked-button [disabled]=\"!canJumpToTodaySignal()\" (click)=\"todayClicked()\">Today</button>\n }\n <dbx-button-spacer></dbx-button-spacer>\n @if (hasMultiplePagesSignal()) {\n <div class=\"d-iblock\">\n @if (showPageButtonsSignal()) {\n <button mat-icon-button [disabled]=\"isLookingAtMinimumDateSignal()\" aria-label=\"first page button\" (click)=\"firstPageButtonClicked()\">\n <mat-icon>first_page</mat-icon>\n </button>\n }\n <button mat-icon-button [disabled]=\"isLookingAtMinimumDateSignal()\" [attr.aria-label]=\"'Previous ' + displayTypeSignal() + ' button'\" (click)=\"previousButtonClicked()\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMaximumDateSignal()\" [attr.aria-label]=\"'Next ' + displayTypeSignal() + ' button'\" (click)=\"nextButtonClicked()\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n @if (showPageButtonsSignal()) {\n <button mat-icon-button [disabled]=\"isLookingAtMaximumDateSignal()\" aria-label=\"last page button\" (click)=\"lastPageButtonClicked()\">\n <mat-icon>last_page</mat-icon>\n </button>\n }\n </div>\n }\n </span>\n <span class=\"spacer\"></span>\n <span class=\"dbx-calendar-controls-right\" fxFlex=\"nogrow\">\n <ng-content select=\"[controls]\"></ng-content>\n </span>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n" }]
|
|
299
299
|
}] });
|
|
@@ -333,10 +333,10 @@ class DbxCalendarComponent {
|
|
|
333
333
|
typeToggleChanged(event) {
|
|
334
334
|
this.calendarStore.setDisplayType(event.value);
|
|
335
335
|
}
|
|
336
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
337
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
336
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
337
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: DbxCalendarComponent, isStandalone: true, selector: "dbx-calendar", outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "<dbx-calendar-base>\n <ng-container controls>\n <mat-button-toggle-group name=\"calendarDisplayStyle\" [value]=\"displayTypeSignal()\" (change)=\"typeToggleChanged($event)\" aria-label=\"Display Style\">\n <mat-button-toggle value=\"month\">Month</mat-button-toggle>\n <mat-button-toggle value=\"week\">Week</mat-button-toggle>\n <mat-button-toggle value=\"day\">Day</mat-button-toggle>\n </mat-button-toggle-group>\n </ng-container>\n <div class=\"dbx-calendar-content\" [ngClass]=\"displayTypeClassSignal()\">\n @switch (displayTypeSignal()) {\n @case ('month') {\n <mwl-calendar-month-view [viewDate]=\"viewDateSignal()\" [events]=\"eventsSignal()\" [activeDayIsOpen]=\"activeDayIsOpenSignal()\" (dayClicked)=\"dayClicked($event.day)\" (eventClicked)=\"eventClicked('Clicked', $event.event)\"></mwl-calendar-month-view>\n }\n @case ('week') {\n <mwl-calendar-week-view [viewDate]=\"viewDateSignal()\" [events]=\"eventsSignal()\" (eventClicked)=\"eventClicked('Clicked', $event.event)\"></mwl-calendar-week-view>\n }\n @case ('day') {\n <mwl-calendar-day-view [viewDate]=\"viewDateSignal()\" [events]=\"eventsSignal()\" (eventClicked)=\"eventClicked('Clicked', $event.event)\"></mwl-calendar-day-view>\n }\n }\n </div>\n</dbx-calendar-base>\n", dependencies: [{ kind: "component", type: DbxCalendarBaseComponent, selector: "dbx-calendar-base" }, { kind: "component", type: CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { kind: "component", type: CalendarDayViewComponent, selector: "mwl-calendar-day-view", inputs: ["viewDate", "events", "hourSegments", "hourSegmentHeight", "hourDuration", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "refresh", "locale", "eventSnapSize", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "hourSegmentTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "snapDraggedEvents", "allDayEventsLabelTemplate", "currentTimeMarkerTemplate", "validateEventTimesChanged", "resizeCursors"], outputs: ["eventClicked", "hourSegmentClicked", "eventTimesChanged", "beforeViewRender"] }, { kind: "component", type: CalendarWeekViewComponent, selector: "mwl-calendar-week-view", inputs: ["viewDate", "events", "excludeDays", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "eventTemplate", "eventTitleTemplate", "eventActionsTemplate", "precision", "weekendDays", "snapDraggedEvents", "hourSegments", "hourDuration", "hourSegmentHeight", "minimumEventHeight", "dayStartHour", "dayStartMinute", "dayEndHour", "dayEndMinute", "hourSegmentTemplate", "eventSnapSize", "allDayEventsLabelTemplate", "daysInWeek", "currentTimeMarkerTemplate", "validateEventTimesChanged", "resizeCursors"], outputs: ["dayHeaderClicked", "eventClicked", "eventTimesChanged", "beforeViewRender", "hourSegmentClicked"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i1$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
338
338
|
}
|
|
339
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
339
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxCalendarComponent, decorators: [{
|
|
340
340
|
type: Component,
|
|
341
341
|
args: [{ selector: 'dbx-calendar', imports: [DbxCalendarBaseComponent, CalendarMonthViewComponent, CalendarDayViewComponent, CalendarWeekViewComponent, MatButtonToggleModule, NgClass], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-calendar-base>\n <ng-container controls>\n <mat-button-toggle-group name=\"calendarDisplayStyle\" [value]=\"displayTypeSignal()\" (change)=\"typeToggleChanged($event)\" aria-label=\"Display Style\">\n <mat-button-toggle value=\"month\">Month</mat-button-toggle>\n <mat-button-toggle value=\"week\">Week</mat-button-toggle>\n <mat-button-toggle value=\"day\">Day</mat-button-toggle>\n </mat-button-toggle-group>\n </ng-container>\n <div class=\"dbx-calendar-content\" [ngClass]=\"displayTypeClassSignal()\">\n @switch (displayTypeSignal()) {\n @case ('month') {\n <mwl-calendar-month-view [viewDate]=\"viewDateSignal()\" [events]=\"eventsSignal()\" [activeDayIsOpen]=\"activeDayIsOpenSignal()\" (dayClicked)=\"dayClicked($event.day)\" (eventClicked)=\"eventClicked('Clicked', $event.event)\"></mwl-calendar-month-view>\n }\n @case ('week') {\n <mwl-calendar-week-view [viewDate]=\"viewDateSignal()\" [events]=\"eventsSignal()\" (eventClicked)=\"eventClicked('Clicked', $event.event)\"></mwl-calendar-week-view>\n }\n @case ('day') {\n <mwl-calendar-day-view [viewDate]=\"viewDateSignal()\" [events]=\"eventsSignal()\" (eventClicked)=\"eventClicked('Clicked', $event.event)\"></mwl-calendar-day-view>\n }\n }\n </div>\n</dbx-calendar-base>\n" }]
|
|
342
342
|
}], propDecorators: { clickEvent: [{ type: i0.Output, args: ["clickEvent"] }] } });
|