@taiga-ui/cdk 2.50.2 → 2.52.0
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/bundles/taiga-ui-cdk-directives-copy-processor.umd.js +7 -7
- package/bundles/taiga-ui-cdk-directives-copy-processor.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-copy-processor.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-directives-copy-processor.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-overscroll.umd.js +4 -1
- package/bundles/taiga-ui-cdk-directives-overscroll.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-directives-overscroll.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-directives-overscroll.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-exceptions.umd.js +39 -0
- package/bundles/taiga-ui-cdk-exceptions.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-exceptions.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-exceptions.umd.min.js.map +1 -1
- package/bundles/taiga-ui-cdk-utils-dom.umd.js +26 -0
- package/bundles/taiga-ui-cdk-utils-dom.umd.js.map +1 -1
- package/bundles/taiga-ui-cdk-utils-dom.umd.min.js +1 -1
- package/bundles/taiga-ui-cdk-utils-dom.umd.min.js.map +1 -1
- package/directives/copy-processor/taiga-ui-cdk-directives-copy-processor.metadata.json +1 -1
- package/esm2015/directives/copy-processor/copy-processor.directive.js +5 -4
- package/esm2015/directives/overscroll/overscroll.directive.js +5 -2
- package/esm2015/exceptions/invalid-day.exception.js +8 -1
- package/esm2015/exceptions/invalid-month.exception.js +8 -1
- package/esm2015/exceptions/invalid-year.exception.js +8 -1
- package/esm2015/utils/dom/get-selected-text.js +16 -0
- package/esm2015/utils/dom/index.js +3 -1
- package/esm2015/utils/dom/is-form-field.js +8 -0
- package/esm5/directives/copy-processor/copy-processor.directive.js +5 -4
- package/esm5/directives/overscroll/overscroll.directive.js +5 -2
- package/esm5/exceptions/invalid-day.exception.js +14 -1
- package/esm5/exceptions/invalid-month.exception.js +14 -1
- package/esm5/exceptions/invalid-year.exception.js +14 -1
- package/esm5/utils/dom/get-selected-text.js +17 -0
- package/esm5/utils/dom/index.js +3 -1
- package/esm5/utils/dom/is-form-field.js +8 -0
- package/exceptions/invalid-day.exception.d.ts +6 -0
- package/exceptions/invalid-month.exception.d.ts +6 -0
- package/exceptions/invalid-year.exception.d.ts +6 -0
- package/exceptions/taiga-ui-cdk-exceptions.metadata.json +1 -1
- package/fesm2015/taiga-ui-cdk-directives-copy-processor.js +4 -3
- package/fesm2015/taiga-ui-cdk-directives-copy-processor.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-directives-overscroll.js +4 -1
- package/fesm2015/taiga-ui-cdk-directives-overscroll.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-exceptions.js +22 -1
- package/fesm2015/taiga-ui-cdk-exceptions.js.map +1 -1
- package/fesm2015/taiga-ui-cdk-utils-dom.js +24 -1
- package/fesm2015/taiga-ui-cdk-utils-dom.js.map +1 -1
- package/fesm5/taiga-ui-cdk-directives-copy-processor.js +4 -3
- package/fesm5/taiga-ui-cdk-directives-copy-processor.js.map +1 -1
- package/fesm5/taiga-ui-cdk-directives-overscroll.js +4 -1
- package/fesm5/taiga-ui-cdk-directives-overscroll.js.map +1 -1
- package/fesm5/taiga-ui-cdk-exceptions.js +37 -1
- package/fesm5/taiga-ui-cdk-exceptions.js.map +1 -1
- package/fesm5/taiga-ui-cdk-utils-dom.js +25 -1
- package/fesm5/taiga-ui-cdk-utils-dom.js.map +1 -1
- package/package.json +1 -1
- package/schematics/ng-update/constants/modules.js +1 -0
- package/schematics/ng-update/constants/services.js +9 -0
- package/schematics/ng-update/constants/templates.d.ts +17 -0
- package/schematics/ng-update/constants/templates.js +32 -0
- package/schematics/ng-update/constants/types.js +30 -0
- package/schematics/ng-update/index.js +39 -4
- package/schematics/ng-update/steps/migrate-date-time.d.ts +1 -0
- package/schematics/ng-update/steps/migrate-date-time.js +152 -0
- package/schematics/ng-update/steps/migrate-progress.d.ts +3 -0
- package/schematics/ng-update/steps/migrate-progress.js +41 -0
- package/schematics/ng-update/steps/migrate-sliders/index.d.ts +2 -2
- package/schematics/ng-update/steps/migrate-sliders/index.js +3 -3
- package/schematics/ng-update/steps/migrate-sliders/migrate-input-range.d.ts +2 -2
- package/schematics/ng-update/steps/migrate-sliders/migrate-input-range.js +32 -27
- package/schematics/ng-update/steps/migrate-sliders/migrate-input-slider.d.ts +2 -2
- package/schematics/ng-update/steps/migrate-sliders/migrate-input-slider.js +30 -22
- package/schematics/ng-update/steps/migrate-templates.d.ts +2 -2
- package/schematics/ng-update/steps/migrate-templates.js +61 -21
- package/schematics/ng-update/steps/miscellaneous.js +2 -6
- package/schematics/ng-update/steps/replace-services.js +5 -1
- package/schematics/ng-update/steps/show-warnings.js +1 -1
- package/schematics/utils/colored-log.d.ts +2 -0
- package/schematics/utils/colored-log.js +10 -0
- package/schematics/utils/insert-todo.d.ts +2 -0
- package/schematics/utils/insert-todo.js +8 -0
- package/schematics/utils/templates/elements.d.ts +1 -0
- package/schematics/utils/templates/elements.js +9 -19
- package/schematics/utils/templates/ng-component-input-manipulations.js +2 -1
- package/utils/dom/get-selected-text.d.ts +9 -0
- package/utils/dom/index.d.ts +2 -0
- package/utils/dom/is-form-field.d.ts +1 -0
- package/utils/dom/taiga-ui-cdk-utils-dom.metadata.json +1 -1
|
@@ -1,28 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const ng_morph_1 = require("ng-morph");
|
|
4
|
-
const devkit_file_system_1 = require("ng-morph/project/classes/devkit-file-system");
|
|
5
4
|
const ng_component_input_manipulations_1 = require("../../../utils/templates/ng-component-input-manipulations");
|
|
6
5
|
const ng_component_1 = require("../../../utils/angular/ng-component");
|
|
7
6
|
const add_unique_import_1 = require("../../../utils/add-unique-import");
|
|
8
7
|
const get_component_templates_1 = require("../../../utils/templates/get-component-templates");
|
|
9
8
|
const elements_1 = require("../../../utils/templates/elements");
|
|
10
|
-
function migrateInputSlider(
|
|
11
|
-
const fileSystem = new devkit_file_system_1.DevkitFileSystem(tree);
|
|
9
|
+
function migrateInputSlider(fileSystem) {
|
|
12
10
|
const templateResources = get_component_templates_1.getComponentTemplates('**/**');
|
|
11
|
+
const COMPONENTS_WITH_MIN_MAX_LABELS = new Set();
|
|
13
12
|
for (const templateResource of templateResources) {
|
|
14
|
-
replaceMinMaxLabels(templateResource, fileSystem);
|
|
13
|
+
replaceMinMaxLabels(templateResource, fileSystem, COMPONENTS_WITH_MIN_MAX_LABELS);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* We should update virtual file tree
|
|
17
|
+
* otherwise all following ng-morph commands will overwrite all previous template manipulations
|
|
18
|
+
* */
|
|
19
|
+
fileSystem.commitEdits();
|
|
20
|
+
ng_morph_1.saveActiveProject();
|
|
21
|
+
ng_morph_1.setActiveProject(ng_morph_1.createProject(fileSystem.tree, '/', '**/**'));
|
|
22
|
+
for (const componentPath of COMPONENTS_WITH_MIN_MAX_LABELS) {
|
|
23
|
+
addMinMaxLabelMethod(componentPath);
|
|
15
24
|
}
|
|
16
25
|
}
|
|
17
26
|
exports.migrateInputSlider = migrateInputSlider;
|
|
18
|
-
|
|
27
|
+
const MIN_MAX_LABELS_MIGRATION_METHOD_NAME = 'tuiMigrationMinMaxLabel';
|
|
28
|
+
function replaceMinMaxLabels(templateResource, fileSystem, modifiedComponentStorage) {
|
|
19
29
|
const wasMaxLabelModified = ng_component_input_manipulations_1.replaceInputProperty({
|
|
20
30
|
templateResource,
|
|
21
31
|
fileSystem,
|
|
22
32
|
componentSelector: 'tui-input-slider',
|
|
23
33
|
from: 'maxLabel',
|
|
24
34
|
to: '[valueContent]',
|
|
25
|
-
newValue:
|
|
35
|
+
newValue: MIN_MAX_LABELS_MIGRATION_METHOD_NAME,
|
|
26
36
|
});
|
|
27
37
|
const wasMinLabelModified = ng_component_input_manipulations_1.replaceInputProperty({
|
|
28
38
|
templateResource,
|
|
@@ -30,7 +40,7 @@ function replaceMinMaxLabels(templateResource, fileSystem) {
|
|
|
30
40
|
componentSelector: 'tui-input-slider',
|
|
31
41
|
from: 'minLabel',
|
|
32
42
|
to: '[valueContent]',
|
|
33
|
-
newValue:
|
|
43
|
+
newValue: MIN_MAX_LABELS_MIGRATION_METHOD_NAME,
|
|
34
44
|
filterFn: element => !elements_1.hasElementAttribute(element, 'maxLabel'),
|
|
35
45
|
});
|
|
36
46
|
ng_component_input_manipulations_1.removeInputProperty({
|
|
@@ -40,26 +50,24 @@ function replaceMinMaxLabels(templateResource, fileSystem) {
|
|
|
40
50
|
inputProperty: 'minLabel',
|
|
41
51
|
filterFn: element => elements_1.hasElementAttribute(element, 'maxLabel'),
|
|
42
52
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if ((wasMaxLabelModified || wasMinLabelModified) && ngComponent) {
|
|
52
|
-
add_unique_import_1.addUniqueImport(templateResource.componentPath, 'TuiContextWithImplicit', '@taiga-ui/cdk');
|
|
53
|
+
if (wasMaxLabelModified || wasMinLabelModified) {
|
|
54
|
+
modifiedComponentStorage.add(templateResource.componentPath);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function addMinMaxLabelMethod(componentPath) {
|
|
58
|
+
const [ngComponent] = ng_component_1.getNgComponents(componentPath);
|
|
59
|
+
if (ngComponent) {
|
|
60
|
+
add_unique_import_1.addUniqueImport(componentPath, 'TuiContextWithImplicit', '@taiga-ui/cdk');
|
|
53
61
|
ng_morph_1.addMethods(ngComponent, {
|
|
54
|
-
name:
|
|
62
|
+
name: MIN_MAX_LABELS_MIGRATION_METHOD_NAME,
|
|
55
63
|
returnType: 'string',
|
|
56
64
|
parameters: [{ name: 'context', type: 'TuiContextWithImplicit<number>' }],
|
|
57
65
|
statements: [
|
|
58
66
|
'const currentValue = context.$implicit;',
|
|
59
|
-
'const maxValue = 100; // TODO replace with the MAX value of the input',
|
|
60
|
-
'const maxLabelText = "Max"; // TODO replace with the required label',
|
|
61
|
-
'const minValue = 0; // TODO replace with the MIN value of the input',
|
|
62
|
-
'const minLabelText = "Min"; // TODO replace with the required label',
|
|
67
|
+
'const maxValue = 100; // TODO: (Taiga UI migration) replace with the MAX value of the input',
|
|
68
|
+
'const maxLabelText = "Max"; // TODO: (Taiga UI migration) replace with the required label',
|
|
69
|
+
'const minValue = 0; // TODO: (Taiga UI migration) replace with the MIN value of the input',
|
|
70
|
+
'const minLabelText = "Min"; // TODO: (Taiga UI migration) replace with the required label',
|
|
63
71
|
'if (currentValue === maxValue) return maxLabelText;',
|
|
64
72
|
'if (currentValue === minValue) return minLabelText;',
|
|
65
73
|
'return String(currentValue);',
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function migrateTemplates(
|
|
1
|
+
import { DevkitFileSystem } from 'ng-morph/project/classes/devkit-file-system';
|
|
2
|
+
export declare function migrateTemplates(fileSystem: DevkitFileSystem): void;
|
|
@@ -3,43 +3,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const get_component_templates_1 = require("../../utils/templates/get-component-templates");
|
|
4
4
|
const templates_1 = require("../constants/templates");
|
|
5
5
|
const elements_1 = require("../../utils/templates/elements");
|
|
6
|
-
const devkit_file_system_1 = require("ng-morph/project/classes/devkit-file-system");
|
|
7
6
|
const ng_component_input_manipulations_1 = require("../../utils/templates/ng-component-input-manipulations");
|
|
8
7
|
const template_resource_1 = require("../../utils/templates/template-resource");
|
|
9
8
|
const ng_morph_1 = require("ng-morph");
|
|
9
|
+
const ng_component_1 = require("../../utils/angular/ng-component");
|
|
10
|
+
const add_unique_import_1 = require("../../utils/add-unique-import");
|
|
10
11
|
const START_TAG_OFFSET = 1;
|
|
11
12
|
const END_TAG_OFFSET = 2;
|
|
12
|
-
function migrateTemplates(
|
|
13
|
-
const
|
|
14
|
-
const componentWithTemplatesPaths = get_component_templates_1.getComponentTemplates('**/**').map(({ componentPath }) => componentPath);
|
|
13
|
+
function migrateTemplates(fileSystem) {
|
|
14
|
+
const componentWithTemplatesPaths = get_component_templates_1.getComponentTemplates('**/**');
|
|
15
15
|
const actions = [
|
|
16
16
|
replaceTags,
|
|
17
17
|
replaceAttrs,
|
|
18
18
|
replaceAttrsByDirective,
|
|
19
19
|
replaceBreadcrumbs,
|
|
20
20
|
replaceFieldError,
|
|
21
|
+
addHTMLCommentTags,
|
|
22
|
+
addEditorProviders,
|
|
23
|
+
migrateTuiHideSelectedPipe,
|
|
21
24
|
];
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const path = fileSystem.resolve(template_resource_1.getPathFromTemplateResource(resource));
|
|
27
|
-
const recorder = fileSystem.edit(path);
|
|
25
|
+
componentWithTemplatesPaths.forEach(resource => {
|
|
26
|
+
const path = fileSystem.resolve(template_resource_1.getPathFromTemplateResource(resource));
|
|
27
|
+
const recorder = fileSystem.edit(path);
|
|
28
|
+
actions.forEach(action => {
|
|
28
29
|
action({ resource, fileSystem, recorder });
|
|
29
30
|
});
|
|
30
|
-
save(fileSystem);
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
exports.migrateTemplates = migrateTemplates;
|
|
34
|
-
/**
|
|
35
|
-
* We should update virtual file tree
|
|
36
|
-
* otherwise all following ng-morph commands will overwrite all previous template manipulations
|
|
37
|
-
* */
|
|
38
|
-
function save(fileSystem) {
|
|
39
|
-
fileSystem.commitEdits();
|
|
40
|
-
ng_morph_1.saveActiveProject();
|
|
41
|
-
ng_morph_1.setActiveProject(ng_morph_1.createProject(fileSystem.tree, '/', '**/**'));
|
|
42
|
-
}
|
|
43
34
|
function replaceAttrsByDirective({ resource, fileSystem, }) {
|
|
44
35
|
templates_1.ATTR_TO_DIRECTIVE.forEach(({ componentSelector, directiveModule, directive, inputProperty }) => {
|
|
45
36
|
ng_component_input_manipulations_1.replaceInputPropertyByDirective({
|
|
@@ -61,7 +52,7 @@ function replaceAttrs({ resource, recorder, fileSystem, }) {
|
|
|
61
52
|
...elements_1.findAttributeOnElementWithAttrs(template, from.attrName, from.withAttrsNames || []),
|
|
62
53
|
];
|
|
63
54
|
offsets.forEach(offset => {
|
|
64
|
-
recorder.remove(offset + templateOffset, from.attrName.length
|
|
55
|
+
recorder.remove(offset + templateOffset, from.attrName.length);
|
|
65
56
|
recorder.insertRight(offset + templateOffset, to.attrName);
|
|
66
57
|
});
|
|
67
58
|
});
|
|
@@ -78,6 +69,21 @@ function replaceTags({ resource, recorder, fileSystem, }) {
|
|
|
78
69
|
});
|
|
79
70
|
});
|
|
80
71
|
}
|
|
72
|
+
function addHTMLCommentTags({ resource, recorder, fileSystem, }) {
|
|
73
|
+
const template = template_resource_1.getTemplateFromTemplateResource(resource, fileSystem);
|
|
74
|
+
const templateOffset = template_resource_1.getTemplateOffset(resource);
|
|
75
|
+
templates_1.TEMPLATE_COMMENTS.forEach(({ comment, tag, withAttr }) => {
|
|
76
|
+
const elementStartOffsets = [
|
|
77
|
+
...elements_1.findElementsWithAttribute(template, withAttr),
|
|
78
|
+
...elements_1.findElementsWithAttribute(template, `[${withAttr}]`),
|
|
79
|
+
]
|
|
80
|
+
.filter(el => el.tagName === tag)
|
|
81
|
+
.map(el => { var _a; return (((_a = el.sourceCodeLocation) === null || _a === void 0 ? void 0 : _a.startOffset) || 0) + templateOffset; });
|
|
82
|
+
elementStartOffsets.forEach(offset => {
|
|
83
|
+
recorder.insertRight(offset, `<!-- TODO: (Taiga UI migration) ${comment} -->\n`);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
}
|
|
81
87
|
function replaceBreadcrumbs({ resource, recorder, fileSystem, }) {
|
|
82
88
|
const template = template_resource_1.getTemplateFromTemplateResource(resource, fileSystem);
|
|
83
89
|
const templateOffset = template_resource_1.getTemplateOffset(resource);
|
|
@@ -131,3 +137,37 @@ function replaceTag(recorder, sourceCodeLocation, from, to, templateOffset = 0,
|
|
|
131
137
|
recorder.remove(startTagOffset + templateOffset + START_TAG_OFFSET, from.length);
|
|
132
138
|
recorder.insertRight(startTagOffset + templateOffset + START_TAG_OFFSET, `${to} ${addAttributes.join(' ')}`);
|
|
133
139
|
}
|
|
140
|
+
function addEditorProviders({ resource, fileSystem, }) {
|
|
141
|
+
const template = template_resource_1.getTemplateFromTemplateResource(resource, fileSystem);
|
|
142
|
+
const elements = elements_1.findElementsByTagName(template, 'tui-editor').filter(element => !elements_1.hasElementAttribute(element, 'new'));
|
|
143
|
+
if (elements.length) {
|
|
144
|
+
const componentPath = resource.componentPath;
|
|
145
|
+
const componentClass = ng_component_1.getNgComponents(componentPath);
|
|
146
|
+
ng_morph_1.addProviderToComponent(componentClass[0], `{
|
|
147
|
+
provide: TUI_EDITOR_EXTENSIONS,
|
|
148
|
+
useValue: defaultEditorExtensions
|
|
149
|
+
}`, { unique: true });
|
|
150
|
+
add_unique_import_1.addUniqueImport(componentPath, 'TUI_EDITOR_EXTENSIONS', '@taiga-ui/addon-editor');
|
|
151
|
+
add_unique_import_1.addUniqueImport(componentPath, 'defaultEditorExtensions', '@taiga-ui/addon-editor');
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
const HIDE_SELECTED_PIPE_WITH_ARGS_REG = /\|\s*tuiHideSelected(\s*:\s*[^|'"]*)?/gi;
|
|
155
|
+
function migrateTuiHideSelectedPipe({ resource, fileSystem, recorder, }) {
|
|
156
|
+
const template = template_resource_1.getTemplateFromTemplateResource(resource, fileSystem);
|
|
157
|
+
const templateOffset = template_resource_1.getTemplateOffset(resource);
|
|
158
|
+
const elementsWithPipe = elements_1.findElementByFn(template, el => { var _a; return (_a = el.attrs) === null || _a === void 0 ? void 0 : _a.some(attr => attr.value.match(HIDE_SELECTED_PIPE_WITH_ARGS_REG)); });
|
|
159
|
+
elementsWithPipe.forEach(el => {
|
|
160
|
+
var _a;
|
|
161
|
+
const { name, value: oldValue } = el.attrs.find(attr => attr.value.match(HIDE_SELECTED_PIPE_WITH_ARGS_REG)) ||
|
|
162
|
+
{};
|
|
163
|
+
const attrLocations = (_a = el.sourceCodeLocation) === null || _a === void 0 ? void 0 : _a.attrs;
|
|
164
|
+
if (!name || !oldValue || !attrLocations) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
const newValue = oldValue.replace(HIDE_SELECTED_PIPE_WITH_ARGS_REG, '| tuiHideSelected');
|
|
168
|
+
const { startOffset } = attrLocations[name];
|
|
169
|
+
const valueOffset = templateOffset + startOffset + name.length + '="'.length;
|
|
170
|
+
recorder.remove(valueOffset, oldValue.length);
|
|
171
|
+
recorder.insertRight(valueOffset, newValue);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const get_named_import_references_1 = require("../../utils/get-named-import-references");
|
|
4
4
|
const ng_morph_1 = require("ng-morph");
|
|
5
|
+
const insert_todo_1 = require("../../utils/insert-todo");
|
|
5
6
|
function miscellaneousMigrations() {
|
|
6
7
|
replaceEnumProperty({
|
|
7
8
|
enumName: 'TuiCurrency',
|
|
@@ -52,14 +53,9 @@ function checkMethod(node, method, message) {
|
|
|
52
53
|
if (ng_morph_1.Node.isPropertyAccessExpression(parent)) {
|
|
53
54
|
parent.getChildrenOfKind(ng_morph_1.SyntaxKind.Identifier).forEach(identifier => {
|
|
54
55
|
if (identifier.getText() === method) {
|
|
55
|
-
insertTodo(identifier, message);
|
|
56
|
+
insert_todo_1.insertTodo(identifier, message);
|
|
56
57
|
}
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
|
-
function insertTodo(identifier, message) {
|
|
62
|
-
const startLinePos = identifier.getStartLinePos();
|
|
63
|
-
const sourceFile = identifier.getSourceFile();
|
|
64
|
-
sourceFile.insertText(startLinePos, `// TODO: ${message}\n`);
|
|
65
|
-
}
|
|
@@ -5,8 +5,12 @@ const get_named_import_references_1 = require("../../utils/get-named-import-refe
|
|
|
5
5
|
const ng_morph_1 = require("ng-morph");
|
|
6
6
|
const import_manipulations_1 = require("../../utils/import-manipulations");
|
|
7
7
|
const add_unique_import_1 = require("../../utils/add-unique-import");
|
|
8
|
+
const colored_log_1 = require("../../utils/colored-log");
|
|
8
9
|
function replaceServices() {
|
|
9
|
-
services_1.SERVICES_TO_REPLACE.forEach(service =>
|
|
10
|
+
services_1.SERVICES_TO_REPLACE.forEach(service => {
|
|
11
|
+
colored_log_1.infoLog(`replacing ${service.from.name}`);
|
|
12
|
+
replaceService(service);
|
|
13
|
+
});
|
|
10
14
|
}
|
|
11
15
|
exports.replaceServices = replaceServices;
|
|
12
16
|
function replaceService({ from, to, replaceMethods }) {
|
|
@@ -30,6 +30,6 @@ function showWarning({ name, message, moduleSpecifier = '**/**' }, { logger }) {
|
|
|
30
30
|
*/
|
|
31
31
|
referencesMeta.forEach(({ sourceFile, filePath, startLinePos }) => {
|
|
32
32
|
logger.warn(`[WARNING] in ${filePath}: ${message}`);
|
|
33
|
-
sourceFile.insertText(startLinePos, `// TODO: ${message}\n`);
|
|
33
|
+
sourceFile.insertText(startLinePos, `// TODO: (Taiga UI migration) ${message}\n`);
|
|
34
34
|
});
|
|
35
35
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function successLog(message) {
|
|
4
|
+
console.info('\x1B[32m%s\x1B[0m', message, '\u2713');
|
|
5
|
+
}
|
|
6
|
+
exports.successLog = successLog;
|
|
7
|
+
function infoLog(message) {
|
|
8
|
+
console.info('\x1B[34m%s\x1B[0m', message);
|
|
9
|
+
}
|
|
10
|
+
exports.infoLog = infoLog;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function insertTodo(identifier, message) {
|
|
4
|
+
const startLinePos = identifier.getStartLinePos();
|
|
5
|
+
const sourceFile = identifier.getSourceFile();
|
|
6
|
+
sourceFile.insertText(startLinePos, `// TODO: (Taiga UI migration) ${message}\n`);
|
|
7
|
+
}
|
|
8
|
+
exports.insertTodo = insertTodo;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Element } from 'parse5';
|
|
2
|
+
export declare function findElementByFn(html: string, predicateFn: (el: Element) => boolean): Element[];
|
|
2
3
|
export declare function findElementsByTagName(html: string, tagName: string): Element[];
|
|
3
4
|
/**
|
|
4
5
|
* Parses a HTML fragment and traverses all AST nodes in order find elements that
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const parse5_1 = require("parse5");
|
|
4
4
|
const ALWAYS_TRUE_HANDLER = () => true;
|
|
5
|
-
function
|
|
5
|
+
function findElementByFn(html, predicateFn) {
|
|
6
6
|
const document = parse5_1.parseFragment(html, { sourceCodeLocationInfo: true });
|
|
7
7
|
const elements = [];
|
|
8
8
|
const visitNodes = (nodes) => {
|
|
@@ -11,7 +11,7 @@ function findElementsByTagName(html, tagName) {
|
|
|
11
11
|
if (node.childNodes) {
|
|
12
12
|
visitNodes(node.childNodes);
|
|
13
13
|
}
|
|
14
|
-
if (node
|
|
14
|
+
if (predicateFn(node)) {
|
|
15
15
|
elements.push(node);
|
|
16
16
|
}
|
|
17
17
|
});
|
|
@@ -19,28 +19,17 @@ function findElementsByTagName(html, tagName) {
|
|
|
19
19
|
visitNodes(document.childNodes);
|
|
20
20
|
return elements;
|
|
21
21
|
}
|
|
22
|
+
exports.findElementByFn = findElementByFn;
|
|
23
|
+
function findElementsByTagName(html, tagName) {
|
|
24
|
+
return findElementByFn(html, el => el.tagName === tagName);
|
|
25
|
+
}
|
|
22
26
|
exports.findElementsByTagName = findElementsByTagName;
|
|
23
27
|
/**
|
|
24
28
|
* Parses a HTML fragment and traverses all AST nodes in order find elements that
|
|
25
29
|
* include the specified attribute.
|
|
26
30
|
*/
|
|
27
31
|
function findElementsWithAttribute(html, attributeName) {
|
|
28
|
-
|
|
29
|
-
const elements = [];
|
|
30
|
-
const visitNodes = (nodes) => {
|
|
31
|
-
nodes.forEach(n => {
|
|
32
|
-
var _a;
|
|
33
|
-
const node = n;
|
|
34
|
-
if (node.childNodes) {
|
|
35
|
-
visitNodes(node.childNodes);
|
|
36
|
-
}
|
|
37
|
-
if ((_a = node.attrs) === null || _a === void 0 ? void 0 : _a.some(attr => attr.name === attributeName.toLowerCase())) {
|
|
38
|
-
elements.push(node);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
|
-
visitNodes(document.childNodes);
|
|
43
|
-
return elements;
|
|
32
|
+
return findElementByFn(html, el => { var _a; return (_a = el.attrs) === null || _a === void 0 ? void 0 : _a.some(attr => attr.name === attributeName.toLowerCase()); });
|
|
44
33
|
}
|
|
45
34
|
exports.findElementsWithAttribute = findElementsWithAttribute;
|
|
46
35
|
/**
|
|
@@ -49,7 +38,8 @@ exports.findElementsWithAttribute = findElementsWithAttribute;
|
|
|
49
38
|
*/
|
|
50
39
|
function findAttributeOnElementWithTag(html, name, tagNames, filterFn = ALWAYS_TRUE_HANDLER) {
|
|
51
40
|
return findElementsWithAttribute(html, name)
|
|
52
|
-
.filter(element => tagNames.includes(element.tagName)
|
|
41
|
+
.filter(element => (tagNames.includes(element.tagName) || tagNames.includes('*')) &&
|
|
42
|
+
filterFn(element))
|
|
53
43
|
.map(element => getStartOffsetOfAttribute(element, name));
|
|
54
44
|
}
|
|
55
45
|
exports.findAttributeOnElementWithTag = findAttributeOnElementWithTag;
|
|
@@ -80,7 +80,8 @@ exports.replaceInputProperty = replaceInputProperty;
|
|
|
80
80
|
*/
|
|
81
81
|
function getInputPropertyOffsets(html, attrName, tags, filterFn = () => true) {
|
|
82
82
|
return elements_1.findElementsWithAttribute(html, attrName)
|
|
83
|
-
.filter(element => tags.includes(element.tagName)
|
|
83
|
+
.filter(element => (tags.includes(element.tagName) || tags.includes('*')) &&
|
|
84
|
+
filterFn(element))
|
|
84
85
|
.map((element) => {
|
|
85
86
|
var _a, _b;
|
|
86
87
|
const { startOffset = 0, endOffset = 0 } = ((_b = (_a = element.sourceCodeLocation) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b[attrName.toLowerCase()]) || {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description:
|
|
3
|
+
* cross browser way to get selected text
|
|
4
|
+
*
|
|
5
|
+
* History:
|
|
6
|
+
* BUG - window.getSelection() fails when text selected in a form field
|
|
7
|
+
* https://bugzilla.mozilla.org/show_bug.cgi?id=85686
|
|
8
|
+
*/
|
|
9
|
+
export declare function tuiGetSelectedText({ getSelection, document }: Window): string | null;
|
package/utils/dom/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export * from './get-document-or-shadow-root';
|
|
|
8
8
|
export * from './get-element-obscurers';
|
|
9
9
|
export * from './get-element-offset';
|
|
10
10
|
export * from './get-scroll-parent';
|
|
11
|
+
export * from './get-selected-text';
|
|
11
12
|
export * from './is-current-target';
|
|
13
|
+
export * from './is-form-field';
|
|
12
14
|
export * from './is-inside-iframe';
|
|
13
15
|
export * from './is-node-in';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function tuiIsFormFieldElement(element: unknown | null): element is HTMLInputElement | HTMLTextAreaElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"canScroll":{"__symbolic":"function","parameters":["element","rootElement","vertical","scrollEnd"],"value":{"__symbolic":"if","condition":{"__symbolic":"reference","name":"vertical"},"thenExpression":{"__symbolic":"error","message":"Reference to a non-exported function","line":11,"character":9,"context":{"name":"canScrollVertical"},"module":"./can-scroll"},"elseExpression":{"__symbolic":"error","message":"Reference to a non-exported function","line":38,"character":9,"context":{"name":"canScrollHorizontal"},"module":"./can-scroll"}}},"containsOrAfter":{"__symbolic":"function","parameters":["current","node"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"current"},"member":"contains"},"arguments":[{"__symbolic":"reference","name":"node"}]},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"binop","operator":"&","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"compareDocumentPosition"},"arguments":[{"__symbolic":"reference","name":"current"}]},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Node"},"member":"DOCUMENT_POSITION_PRECEDING"}}}}}},"tuiCustomEvent":{"__symbolic":"function"},"getActualTarget":{"__symbolic":"function"},"getClipboardDataText":{"__symbolic":"function","parameters":["event","format"],"defaults":[null,"text/plain"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"in","left":"clipboardData","right":{"__symbolic":"reference","name":"event"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"event"},"member":"clipboardData"},"right":null}},"thenExpression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"event"},"member":"clipboardData"},"member":"getData"},"arguments":[{"__symbolic":"reference","name":"format"}]},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"event"},"member":"clipboardData"},"member":"getData"},"arguments":["text/plain"]}},"elseExpression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"event"},"member":"target"},"member":"ownerDocument"},"member":"defaultView"},"member":"clipboardData"},"member":"getData"},"arguments":["text"]}}},"getClosestElement":{"__symbolic":"function"},"getDocumentOrShadowRoot":{"__symbolic":"function","parameters":["node"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"in","left":"getRootNode","right":{"__symbolic":"reference","name":"node"}},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"isConnected"}},"thenExpression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"getRootNode"}},"elseExpression":{"__symbolic":"error","message":"Expression form not supported","line":3,"character":10,"module":"./get-document-or-shadow-root"}}},"getElementObscurers":{"__symbolic":"function"},"getElementOffset":{"__symbolic":"function"},"getScrollParent":{"__symbolic":"function"},"isCurrentTarget":{"__symbolic":"function","parameters":["target","currentTarget"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"target"},"right":{"__symbolic":"reference","name":"currentTarget"}}},"isInsideIframe":{"__symbolic":"function","parameters":["windowRef"],"value":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"windowRef"},"member":"parent"},"right":{"__symbolic":"reference","name":"windowRef"}}},"isNodeIn":{"__symbolic":"function","parameters":["node","selector"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"nodeType"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Node"},"member":"TEXT_NODE"}},"thenExpression":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"parentElement"}}},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"getClosestElement"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"parentElement"},{"__symbolic":"reference","name":"selector"}]}}}},"elseExpression":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"nodeType"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Node"},"member":"ELEMENT_NODE"}},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"getClosestElement"},"arguments":[{"__symbolic":"reference","name":"node"},{"__symbolic":"reference","name":"selector"}]}}}}}}},"origins":{"canScroll":"./can-scroll","containsOrAfter":"./contains-or-after","tuiCustomEvent":"./custom-event","getActualTarget":"./get-actual-target","getClipboardDataText":"./get-clipboard-data-text","getClosestElement":"./get-closest-element","getDocumentOrShadowRoot":"./get-document-or-shadow-root","getElementObscurers":"./get-element-obscurers","getElementOffset":"./get-element-offset","getScrollParent":"./get-scroll-parent","isCurrentTarget":"./is-current-target","isInsideIframe":"./is-inside-iframe","isNodeIn":"./is-node-in"},"importAs":"@taiga-ui/cdk/utils/dom"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"canScroll":{"__symbolic":"function","parameters":["element","rootElement","vertical","scrollEnd"],"value":{"__symbolic":"if","condition":{"__symbolic":"reference","name":"vertical"},"thenExpression":{"__symbolic":"error","message":"Reference to a non-exported function","line":11,"character":9,"context":{"name":"canScrollVertical"},"module":"./can-scroll"},"elseExpression":{"__symbolic":"error","message":"Reference to a non-exported function","line":38,"character":9,"context":{"name":"canScrollHorizontal"},"module":"./can-scroll"}}},"containsOrAfter":{"__symbolic":"function","parameters":["current","node"],"value":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"current"},"member":"contains"},"arguments":[{"__symbolic":"reference","name":"node"}]},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"binop","operator":"&","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"compareDocumentPosition"},"arguments":[{"__symbolic":"reference","name":"current"}]},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Node"},"member":"DOCUMENT_POSITION_PRECEDING"}}}}}},"tuiCustomEvent":{"__symbolic":"function"},"getActualTarget":{"__symbolic":"function"},"getClipboardDataText":{"__symbolic":"function","parameters":["event","format"],"defaults":[null,"text/plain"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"in","left":"clipboardData","right":{"__symbolic":"reference","name":"event"}},"right":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"event"},"member":"clipboardData"},"right":null}},"thenExpression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"event"},"member":"clipboardData"},"member":"getData"},"arguments":[{"__symbolic":"reference","name":"format"}]},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"event"},"member":"clipboardData"},"member":"getData"},"arguments":["text/plain"]}},"elseExpression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"event"},"member":"target"},"member":"ownerDocument"},"member":"defaultView"},"member":"clipboardData"},"member":"getData"},"arguments":["text"]}}},"getClosestElement":{"__symbolic":"function"},"getDocumentOrShadowRoot":{"__symbolic":"function","parameters":["node"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"in","left":"getRootNode","right":{"__symbolic":"reference","name":"node"}},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"isConnected"}},"thenExpression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"getRootNode"}},"elseExpression":{"__symbolic":"error","message":"Expression form not supported","line":3,"character":10,"module":"./get-document-or-shadow-root"}}},"getElementObscurers":{"__symbolic":"function"},"getElementOffset":{"__symbolic":"function"},"getScrollParent":{"__symbolic":"function"},"tuiGetSelectedText":{"__symbolic":"function","parameters":["getSelection","document"],"value":{"__symbolic":"if","condition":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"tuiIsFormFieldElement"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"document"},"member":"activeElement"}]},"thenExpression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"document"},"member":"activeElement"},"member":"value"},"member":"slice"},"arguments":[{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"document"},"member":"activeElement"},"member":"selectionStart"},"right":0},{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"document"},"member":"activeElement"},"member":"selectionEnd"},"right":0}]},"elseExpression":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"getSelection"}},"member":"toString"}},"right":null}}},"isCurrentTarget":{"__symbolic":"function","parameters":["target","currentTarget"],"value":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"target"},"right":{"__symbolic":"reference","name":"currentTarget"}}},"tuiIsFormFieldElement":{"__symbolic":"function"},"isInsideIframe":{"__symbolic":"function","parameters":["windowRef"],"value":{"__symbolic":"binop","operator":"!==","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"windowRef"},"member":"parent"},"right":{"__symbolic":"reference","name":"windowRef"}}},"isNodeIn":{"__symbolic":"function","parameters":["node","selector"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"nodeType"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Node"},"member":"TEXT_NODE"}},"thenExpression":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"parentElement"}}},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"getClosestElement"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"parentElement"},{"__symbolic":"reference","name":"selector"}]}}}},"elseExpression":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"node"},"member":"nodeType"},"right":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Node"},"member":"ELEMENT_NODE"}},"right":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"getClosestElement"},"arguments":[{"__symbolic":"reference","name":"node"},{"__symbolic":"reference","name":"selector"}]}}}}}}},"origins":{"canScroll":"./can-scroll","containsOrAfter":"./contains-or-after","tuiCustomEvent":"./custom-event","getActualTarget":"./get-actual-target","getClipboardDataText":"./get-clipboard-data-text","getClosestElement":"./get-closest-element","getDocumentOrShadowRoot":"./get-document-or-shadow-root","getElementObscurers":"./get-element-obscurers","getElementOffset":"./get-element-offset","getScrollParent":"./get-scroll-parent","tuiGetSelectedText":"./get-selected-text","isCurrentTarget":"./is-current-target","tuiIsFormFieldElement":"./is-form-field","isInsideIframe":"./is-inside-iframe","isNodeIn":"./is-node-in"},"importAs":"@taiga-ui/cdk/utils/dom"}
|