@lucca-front/ng 21.4.0 → 21.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/lucca-front-ng-a11y.mjs +9 -9
- package/fesm2022/lucca-front-ng-activity-feed.mjs +9 -9
- package/fesm2022/lucca-front-ng-api.mjs +40 -40
- package/fesm2022/lucca-front-ng-app-layout.mjs +3 -3
- package/fesm2022/lucca-front-ng-box.mjs +3 -3
- package/fesm2022/lucca-front-ng-breadcrumbs.mjs +6 -6
- package/fesm2022/lucca-front-ng-bubble-icon.mjs +3 -3
- package/fesm2022/lucca-front-ng-bubble-illustration.mjs +3 -3
- package/fesm2022/lucca-front-ng-callout.mjs +24 -24
- package/fesm2022/lucca-front-ng-chip.mjs +3 -3
- package/fesm2022/lucca-front-ng-clear.mjs +3 -3
- package/fesm2022/lucca-front-ng-code.mjs +3 -3
- package/fesm2022/lucca-front-ng-color.mjs +3 -3
- package/fesm2022/lucca-front-ng-comment.mjs +9 -9
- package/fesm2022/lucca-front-ng-container.mjs +3 -3
- package/fesm2022/lucca-front-ng-core-select-api.mjs +20 -16
- package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select-department.mjs +6 -6
- package/fesm2022/lucca-front-ng-core-select-establishment.mjs +9 -9
- package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +6 -6
- package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs +3 -3
- package/fesm2022/lucca-front-ng-core-select-user.mjs +21 -19
- package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-core-select.mjs +51 -51
- package/fesm2022/lucca-front-ng-core.mjs +15 -15
- package/fesm2022/lucca-front-ng-data-table.mjs +24 -24
- package/fesm2022/lucca-front-ng-date.mjs +40 -40
- package/fesm2022/lucca-front-ng-date2.mjs +20 -20
- package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-department.mjs +24 -24
- package/fesm2022/lucca-front-ng-dialog.mjs +69 -52
- package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-divider.mjs +3 -3
- package/fesm2022/lucca-front-ng-dropdown.mjs +40 -40
- package/fesm2022/lucca-front-ng-empty-state.mjs +9 -9
- package/fesm2022/lucca-front-ng-error-page.mjs +4 -4
- package/fesm2022/lucca-front-ng-error-page.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-establishment.mjs +33 -33
- package/fesm2022/lucca-front-ng-fancy-box.mjs +3 -3
- package/fesm2022/lucca-front-ng-file-upload.mjs +15 -15
- package/fesm2022/lucca-front-ng-filter-pills.mjs +22 -22
- package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-footer.mjs +4 -4
- package/fesm2022/lucca-front-ng-footer.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-field.mjs +20 -20
- package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-form-header.mjs +3 -3
- package/fesm2022/lucca-front-ng-form-label.mjs +3 -3
- package/fesm2022/lucca-front-ng-form.mjs +3 -3
- package/fesm2022/lucca-front-ng-formly.mjs +58 -58
- package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +6 -6
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs +3 -3
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs +6 -6
- package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs +3 -3
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +53 -38
- package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-forms.mjs +59 -48
- package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-gauge.mjs +3 -3
- package/fesm2022/lucca-front-ng-grid.mjs +6 -6
- package/fesm2022/lucca-front-ng-highlight-data.mjs +4 -4
- package/fesm2022/lucca-front-ng-highlight-data.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-highlight-text.mjs +3 -3
- package/fesm2022/lucca-front-ng-horizontal-navigation.mjs +11 -11
- package/fesm2022/lucca-front-ng-horizontal-navigation.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-impersonation.mjs +3 -3
- package/fesm2022/lucca-front-ng-index-table.mjs +30 -30
- package/fesm2022/lucca-front-ng-inline-message.mjs +3 -3
- package/fesm2022/lucca-front-ng-input.mjs +21 -21
- package/fesm2022/lucca-front-ng-link.mjs +16 -8
- package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-listbox.mjs +9 -9
- package/fesm2022/lucca-front-ng-listing.mjs +6 -6
- package/fesm2022/lucca-front-ng-loading.mjs +3 -3
- package/fesm2022/lucca-front-ng-main-layout.mjs +6 -6
- package/fesm2022/lucca-front-ng-mobile-push.mjs +3 -3
- package/fesm2022/lucca-front-ng-modal.mjs +22 -22
- package/fesm2022/lucca-front-ng-multi-select.mjs +95 -78
- package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-new-badge.mjs +3 -3
- package/fesm2022/lucca-front-ng-number-format.mjs +6 -6
- package/fesm2022/lucca-front-ng-number.mjs +7 -7
- package/fesm2022/lucca-front-ng-numeric-badge.mjs +3 -3
- package/fesm2022/lucca-front-ng-option.mjs +126 -126
- package/fesm2022/lucca-front-ng-page-header.mjs +3 -3
- package/fesm2022/lucca-front-ng-pagination.mjs +3 -3
- package/fesm2022/lucca-front-ng-plg-push.mjs +3 -3
- package/fesm2022/lucca-front-ng-popover.mjs +17 -17
- package/fesm2022/lucca-front-ng-popover2.mjs +6 -6
- package/fesm2022/lucca-front-ng-popup.mjs +10 -10
- package/fesm2022/lucca-front-ng-progress-bar.mjs +3 -3
- package/fesm2022/lucca-front-ng-progress-stepper.mjs +6 -6
- package/fesm2022/lucca-front-ng-read-more.mjs +3 -3
- package/fesm2022/lucca-front-ng-resource-card.mjs +12 -12
- package/fesm2022/lucca-front-ng-safe-content.mjs +10 -10
- package/fesm2022/lucca-front-ng-scroll-box.mjs +3 -3
- package/fesm2022/lucca-front-ng-scroll.mjs +7 -7
- package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs +6 -6
- package/fesm2022/lucca-front-ng-segmented-control.mjs +6 -6
- package/fesm2022/lucca-front-ng-select.mjs +14 -14
- package/fesm2022/lucca-front-ng-sidepanel.mjs +7 -7
- package/fesm2022/lucca-front-ng-simple-select.mjs +12 -12
- package/fesm2022/lucca-front-ng-skeleton.mjs +25 -25
- package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs +6 -6
- package/fesm2022/lucca-front-ng-software-icon.mjs +3 -3
- package/fesm2022/lucca-front-ng-sortable-list.mjs +6 -6
- package/fesm2022/lucca-front-ng-status-badge.mjs +3 -3
- package/fesm2022/lucca-front-ng-table-of-content.mjs +6 -6
- package/fesm2022/lucca-front-ng-tag.mjs +3 -3
- package/fesm2022/lucca-front-ng-text-flow.mjs +3 -3
- package/fesm2022/lucca-front-ng-time.mjs +18 -18
- package/fesm2022/lucca-front-ng-title.mjs +22 -13
- package/fesm2022/lucca-front-ng-title.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-toast.mjs +10 -10
- package/fesm2022/lucca-front-ng-tooltip.mjs +28 -22
- package/fesm2022/lucca-front-ng-tooltip.mjs.map +1 -1
- package/fesm2022/lucca-front-ng-tree-select.mjs +6 -6
- package/fesm2022/lucca-front-ng-user-popover.mjs +18 -18
- package/fesm2022/lucca-front-ng-user.mjs +59 -59
- package/fesm2022/lucca-front-ng-vertical-navigation.mjs +12 -12
- package/package.json +4 -4
- package/schematics/action-icon/migration.spec.js +2 -2
- package/schematics/alignment-utilities/migration.spec.js +2 -2
- package/schematics/cdn-urls/migration.spec.js +2 -2
- package/schematics/class-prefix/migration.spec.js +2 -2
- package/schematics/color-text/migration.spec.js +2 -2
- package/schematics/component-path/migration.spec.js +2 -2
- package/schematics/deprecated-resolver/migration.spec.js +1 -1
- package/schematics/empty-state-title/migration.spec.js +1 -1
- package/schematics/lib/migration-test.js +6 -1
- package/schematics/lu-button/migration.spec.js +1 -1
- package/schematics/lu-container/migration.spec.js +1 -1
- package/schematics/lu-grid/migration.js +24 -16
- package/schematics/lu-grid/migration.spec.js +1 -1
- package/schematics/lu-icon/migration.spec.js +1 -1
- package/schematics/lu-loading/migration.spec.js +1 -1
- package/schematics/lu-select/migration.spec.js +1 -1
- package/schematics/lu-text-input/migration.spec.js +1 -1
- package/schematics/new-icons/migration.spec.js +2 -2
- package/schematics/palettes/index.js +28 -8
- package/schematics/palettes/migration.spec.js +2 -2
- package/schematics/tokens-radius/migration.spec.js +2 -2
- package/schematics/tokens-spacing/migration.spec.js +2 -2
- package/schematics/tokens-typo/migration.spec.js +2 -2
- package/types/lucca-front-ng-dialog.d.ts +4 -3
- package/types/lucca-front-ng-forms-rich-text-input.d.ts +5 -1
- package/types/lucca-front-ng-forms.d.ts +12 -2
- package/types/lucca-front-ng-multi-select.d.ts +13 -1
- package/types/lucca-front-ng-title.d.ts +5 -5
|
@@ -47,7 +47,7 @@ describe('Class prefix Migration', () => {
|
|
|
47
47
|
const expectedTree = (0, lib_1.createTreeFromFiles)(testsRoot, files, '.output.');
|
|
48
48
|
// Act
|
|
49
49
|
try {
|
|
50
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'class-prefix', {
|
|
50
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'class-prefix', { skipInstall: true }, tree);
|
|
51
51
|
}
|
|
52
52
|
catch (error) {
|
|
53
53
|
// eslint-disable-next-line no-console
|
|
@@ -69,7 +69,7 @@ describe('Class prefix Migration', () => {
|
|
|
69
69
|
const treeOriginalTree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
70
70
|
const tree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
71
71
|
// Act
|
|
72
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'class-prefix', {
|
|
72
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'class-prefix', { skipInstall: true }, tree);
|
|
73
73
|
// Assert
|
|
74
74
|
tree.visit((p, entry) => {
|
|
75
75
|
const original = treeOriginalTree.get(p)?.content.toString() || '';
|
|
@@ -47,7 +47,7 @@ describe('Color Text Migration', () => {
|
|
|
47
47
|
const expectedTree = (0, lib_1.createTreeFromFiles)(testsRoot, files, '.output.');
|
|
48
48
|
// Act
|
|
49
49
|
try {
|
|
50
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'color-text', {
|
|
50
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'color-text', { skipInstall: true }, tree);
|
|
51
51
|
}
|
|
52
52
|
catch (error) {
|
|
53
53
|
// eslint-disable-next-line no-console
|
|
@@ -69,7 +69,7 @@ describe('Color Text Migration', () => {
|
|
|
69
69
|
const treeOriginalTree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
70
70
|
const tree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
71
71
|
// Act
|
|
72
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'color-text', {
|
|
72
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'color-text', { skipInstall: true }, tree);
|
|
73
73
|
// Assert
|
|
74
74
|
tree.visit((p, entry) => {
|
|
75
75
|
const original = treeOriginalTree.get(p)?.content.toString() || '';
|
|
@@ -47,7 +47,7 @@ describe('Component path Migration', () => {
|
|
|
47
47
|
const expectedTree = (0, lib_1.createTreeFromFiles)(testsRoot, files, '.output.');
|
|
48
48
|
// Act
|
|
49
49
|
try {
|
|
50
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'component-path', {
|
|
50
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'component-path', { skipInstall: true }, tree);
|
|
51
51
|
}
|
|
52
52
|
catch (error) {
|
|
53
53
|
//eslint-disable-next-line no-console
|
|
@@ -69,7 +69,7 @@ describe('Component path Migration', () => {
|
|
|
69
69
|
const treeOriginalTree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
70
70
|
const tree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
71
71
|
// Act
|
|
72
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'component-path', {
|
|
72
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'component-path', { skipInstall: true }, tree);
|
|
73
73
|
// Assert
|
|
74
74
|
tree.visit((p, entry) => {
|
|
75
75
|
const original = treeOriginalTree.get(p)?.content.toString() || '';
|
|
@@ -46,7 +46,7 @@ describe('Deprecated Resolver Migration', () => {
|
|
|
46
46
|
const expectedTree = (0, lib_1.createTreeFromFiles)(testsRoot, files, '.output.');
|
|
47
47
|
// Act
|
|
48
48
|
try {
|
|
49
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'deprecated-resolver', {
|
|
49
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'deprecated-resolver', { skipInstall: true }, tree);
|
|
50
50
|
}
|
|
51
51
|
catch (error) {
|
|
52
52
|
// eslint-disable-next-line no-console
|
|
@@ -46,7 +46,7 @@ describe('Empty state title migration', () => {
|
|
|
46
46
|
const expectedTree = (0, lib_1.createTreeFromFiles)(testsRoot, files, '.output.');
|
|
47
47
|
// Act
|
|
48
48
|
try {
|
|
49
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'empty-state-heading', {
|
|
49
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'empty-state-heading', { skipInstall: true }, tree);
|
|
50
50
|
}
|
|
51
51
|
catch (error) {
|
|
52
52
|
// eslint-disable-next-line no-console
|
|
@@ -48,7 +48,12 @@ function expectTree(tree) {
|
|
|
48
48
|
expect(stripLastNewLine(actualContent)).toEqual(stripLastNewLine(expectedContent));
|
|
49
49
|
}
|
|
50
50
|
catch (error) {
|
|
51
|
-
|
|
51
|
+
if (error instanceof Error) {
|
|
52
|
+
// Mutate the message in place (rather than re-throwing a new Error) so the original
|
|
53
|
+
// stack trace and Vitest's expected/actual diff properties are preserved.
|
|
54
|
+
error.message = `Expected file content to match for ${path}: \n${error.message}`;
|
|
55
|
+
}
|
|
56
|
+
throw error;
|
|
52
57
|
}
|
|
53
58
|
});
|
|
54
59
|
// Ensure all files in expected tree exist in actual tree
|
|
@@ -44,7 +44,7 @@ describe('luButton Migration', () => {
|
|
|
44
44
|
const expectedTree = (0, lib_1.createTreeFromFolder)(path.join(testsRoot, 'output'));
|
|
45
45
|
// Act
|
|
46
46
|
try {
|
|
47
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-button', {
|
|
47
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-button', { skipInstall: true }, tree);
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
50
50
|
// eslint-disable-next-line no-console
|
|
@@ -44,7 +44,7 @@ describe('lu-container Migration', () => {
|
|
|
44
44
|
const expectedTree = (0, lib_1.createTreeFromFolder)(path.join(testsRoot, 'output'));
|
|
45
45
|
// Act
|
|
46
46
|
try {
|
|
47
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-container', {
|
|
47
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-container', { skipInstall: true }, tree);
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
50
50
|
// eslint-disable-next-line no-console
|
|
@@ -158,22 +158,37 @@ function gridHasNonNeutralColumnChildren(node) {
|
|
|
158
158
|
return !!childClasses?.match(/(^|\s)grid-column(\s|$)/);
|
|
159
159
|
});
|
|
160
160
|
}
|
|
161
|
+
// A grid is migratable only when the migration can be fully carried out. If any
|
|
162
|
+
// class other than `grid`/`mod-auto`/`mod-form` would remain on the element, the
|
|
163
|
+
// migration is considered incomplete: we leave the grid — and therefore its
|
|
164
|
+
// `grid-column` children — untouched for manual review.
|
|
165
|
+
// This is the single source of truth for both grid and grid-column finders so a
|
|
166
|
+
// `grid-column` is never migrated without its parent grid being migrated too.
|
|
167
|
+
function isMigratableGrid(node) {
|
|
168
|
+
if (!(0, lib_1.isInterestingNode)(node) || !(0, migration_utils_1.isNeutralElement)(node.name)) {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
const classes = node.attributes.find((attr) => attr.name === 'class')?.value;
|
|
172
|
+
if (!classes?.match(/(^|\s)grid(\s|$)/)) {
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
if (gridHasNonNeutralColumnChildren(node)) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
// Any leftover class means the migration would keep a `class=` attribute → skip.
|
|
179
|
+
const extraClasses = classes.split(' ').filter((c) => c && c !== 'grid' && c !== 'mod-auto' && c !== 'mod-form');
|
|
180
|
+
return extraClasses.length === 0;
|
|
181
|
+
}
|
|
161
182
|
function findHTMLGrids(sourceFile, basePath, tree) {
|
|
162
183
|
const results = [];
|
|
163
184
|
const ngTemplates = (0, lib_1.extractNgTemplatesIncludingHtml)(sourceFile, tree, basePath);
|
|
164
185
|
ngTemplates.forEach((template) => {
|
|
165
186
|
const htmlAst = new lib_1.HtmlAst(template.content);
|
|
166
187
|
htmlAst.visitNodes((node) => {
|
|
167
|
-
if (!(
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
const classes = node.attributes.find((attr) => attr.name === 'class')?.value;
|
|
171
|
-
if (!classes?.match(/(^|\s)grid(\s|$)/)) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
if (gridHasNonNeutralColumnChildren(node)) {
|
|
188
|
+
if (!isMigratableGrid(node)) {
|
|
175
189
|
return;
|
|
176
190
|
}
|
|
191
|
+
const classes = node.attributes.find((attr) => attr.name === 'class')?.value || '';
|
|
177
192
|
const styleAttr = node.attributes.find((attr) => attr.name === 'style')?.value || '';
|
|
178
193
|
const cssProps = (0, migration_utils_1.parseCssCustomProperties)(styleAttr);
|
|
179
194
|
const classParts = classes.split(' ');
|
|
@@ -208,14 +223,7 @@ function findHTMLGridColumns(sourceFile, basePath, tree) {
|
|
|
208
223
|
return;
|
|
209
224
|
}
|
|
210
225
|
// Only migrate grid-column if its parent grid container is also being migrated
|
|
211
|
-
if (!(
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
const parentClasses = parent.attributes.find((attr) => attr.name === 'class')?.value;
|
|
215
|
-
if (!parentClasses?.match(/(^|\s)grid(\s|$)/)) {
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
if (gridHasNonNeutralColumnChildren(parent)) {
|
|
226
|
+
if (!isMigratableGrid(parent)) {
|
|
219
227
|
return;
|
|
220
228
|
}
|
|
221
229
|
const styleAttr = node.attributes.find((attr) => attr.name === 'style')?.value || '';
|
|
@@ -44,7 +44,7 @@ describe('lu-grid Migration', () => {
|
|
|
44
44
|
const expectedTree = (0, lib_1.createTreeFromFolder)(path.join(testsRoot, 'output'));
|
|
45
45
|
// Act
|
|
46
46
|
try {
|
|
47
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-grid', {
|
|
47
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-grid', { skipInstall: true }, tree);
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
50
50
|
// eslint-disable-next-line no-console
|
|
@@ -44,7 +44,7 @@ describe('lu-icon Migration', () => {
|
|
|
44
44
|
const expectedTree = (0, lib_1.createTreeFromFolder)(path.join(testsRoot, 'output'));
|
|
45
45
|
// Act
|
|
46
46
|
try {
|
|
47
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-icon', {
|
|
47
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-icon', { skipInstall: true }, tree);
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
50
50
|
// eslint-disable-next-line no-console
|
|
@@ -44,7 +44,7 @@ describe('lu-loading Migration', () => {
|
|
|
44
44
|
const expectedTree = (0, lib_1.createTreeFromFolder)(path.join(testsRoot, 'output'));
|
|
45
45
|
// Act
|
|
46
46
|
try {
|
|
47
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-loading', {
|
|
47
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-loading', { skipInstall: true }, tree);
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
50
50
|
// eslint-disable-next-line no-console
|
|
@@ -44,7 +44,7 @@ describe('lu-select Migration', () => {
|
|
|
44
44
|
const expectedTree = (0, lib_1.createTreeFromFolder)(path.join(testsRoot, 'output'));
|
|
45
45
|
// Act
|
|
46
46
|
try {
|
|
47
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-select', {
|
|
47
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-select', { skipInstall: true }, tree);
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
50
50
|
// eslint-disable-next-line no-console
|
|
@@ -44,7 +44,7 @@ describe('Textfield Migration', () => {
|
|
|
44
44
|
const expectedTree = (0, lib_1.createTreeFromFolder)(path.join(testsRoot, 'output'));
|
|
45
45
|
// Act
|
|
46
46
|
try {
|
|
47
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-text-input', {
|
|
47
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'lu-text-input', { skipInstall: true }, tree);
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
50
50
|
// eslint-disable-next-line no-console
|
|
@@ -47,7 +47,7 @@ describe('New icons Migration', () => {
|
|
|
47
47
|
const expectedTree = (0, lib_1.createTreeFromFiles)(testsRoot, files, '.output.');
|
|
48
48
|
// Act
|
|
49
49
|
try {
|
|
50
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'new-icons', {
|
|
50
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'new-icons', { skipInstall: true }, tree);
|
|
51
51
|
}
|
|
52
52
|
catch (error) {
|
|
53
53
|
// eslint-disable-next-line no-console
|
|
@@ -69,7 +69,7 @@ describe('New icons Migration', () => {
|
|
|
69
69
|
const treeOriginalTree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
70
70
|
const tree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
71
71
|
// Act
|
|
72
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'new-icons', {
|
|
72
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'new-icons', { skipInstall: true }, tree);
|
|
73
73
|
// Assert
|
|
74
74
|
tree.visit((p, entry) => {
|
|
75
75
|
const original = treeOriginalTree.get(p)?.content.toString() || '';
|
|
@@ -9,16 +9,20 @@ exports.default = (options) => {
|
|
|
9
9
|
await lib_1.currentSchematicContext.init(context, options);
|
|
10
10
|
await new lib_1.CssMapper(tree, {
|
|
11
11
|
classes: {
|
|
12
|
-
|
|
13
|
-
'palette-
|
|
14
|
-
|
|
15
|
-
'
|
|
12
|
+
// Palette classes (Button, Callout, Gauge, Clear, Numeric Badge, Status Badge, …)
|
|
13
|
+
'palette-{palette}': 'palette-{palette}',
|
|
14
|
+
// Component color modifier (Box, Card, Section) — only `grey` existed
|
|
15
|
+
'mod-grey': 'mod-neutral',
|
|
16
|
+
// Icon color classes — only `primary`/`secondary` existed
|
|
17
|
+
'icon-color-primary': 'icon-color-product',
|
|
18
|
+
'icon-color-secondary': 'icon-color-product',
|
|
19
|
+
// Text color utilities generated from the palette list
|
|
20
|
+
'u-text{Palette}': 'pr-u-text{Palette}',
|
|
21
|
+
'pr-u-text{Palette}': 'pr-u-text{Palette}',
|
|
22
|
+
'pr-u-colorText{Palette}': 'pr-u-colorText{Palette}',
|
|
16
23
|
},
|
|
17
24
|
variables: {
|
|
18
|
-
'--palettes-
|
|
19
|
-
'--palettes-primary-{val}': `--palettes-product-{val}`,
|
|
20
|
-
'--palettes-secondary-{val}': `--palettes-product-{val}`,
|
|
21
|
-
'--palettes-lucca-{val}': `--palettes-brand-{val}`,
|
|
25
|
+
'--palettes-{palette}-{val}': `--palettes-{palette}-{val}`,
|
|
22
26
|
'--colors-grey-{val}': `--palettes-neutral-{val}`,
|
|
23
27
|
'--colors-white-color': '--palettes-neutral-0',
|
|
24
28
|
'--colors-black-color': '--palettes-neutral-900',
|
|
@@ -36,6 +40,13 @@ exports.default = (options) => {
|
|
|
36
40
|
},
|
|
37
41
|
mixins: {}
|
|
38
42
|
}, {
|
|
43
|
+
// Deprecated palette -> new palette (used by both classes and CSS vars)
|
|
44
|
+
palette: {
|
|
45
|
+
grey: 'neutral',
|
|
46
|
+
primary: 'product',
|
|
47
|
+
secondary: 'product',
|
|
48
|
+
lucca: 'brand',
|
|
49
|
+
},
|
|
39
50
|
val: {
|
|
40
51
|
25: '25',
|
|
41
52
|
50: '50',
|
|
@@ -50,5 +61,14 @@ exports.default = (options) => {
|
|
|
50
61
|
900: '900'
|
|
51
62
|
}
|
|
52
63
|
}).run();
|
|
64
|
+
new lib_1.DeprecatedMapper(tree, {
|
|
65
|
+
modules: {},
|
|
66
|
+
types: {},
|
|
67
|
+
inputsOutputs: {
|
|
68
|
+
// The `lu-icon` component `color` input is not a CSS class, so it isn't handled by CssMapper.
|
|
69
|
+
// Deprecated `primary`/`secondary` values → `product` (handles both `color="primary"` and `[color]="'primary'"`).
|
|
70
|
+
'lu-icon': { color: { primary: 'product', secondary: 'product' } },
|
|
71
|
+
},
|
|
72
|
+
}).run();
|
|
53
73
|
};
|
|
54
74
|
};
|
|
@@ -47,7 +47,7 @@ describe('Palettes Migration', () => {
|
|
|
47
47
|
const expectedTree = (0, lib_1.createTreeFromFiles)(testsRoot, files, '.output.');
|
|
48
48
|
// Act
|
|
49
49
|
try {
|
|
50
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'palettes', {
|
|
50
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'palettes', { skipInstall: true }, tree);
|
|
51
51
|
}
|
|
52
52
|
catch (error) {
|
|
53
53
|
// eslint-disable-next-line no-console
|
|
@@ -69,7 +69,7 @@ describe('Palettes Migration', () => {
|
|
|
69
69
|
const treeOriginalTree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
70
70
|
const tree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
71
71
|
// Act
|
|
72
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'palettes', {
|
|
72
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'palettes', { skipInstall: true }, tree);
|
|
73
73
|
// Assert
|
|
74
74
|
tree.visit((p, entry) => {
|
|
75
75
|
const original = treeOriginalTree.get(p)?.content.toString() || '';
|
|
@@ -47,7 +47,7 @@ describe('Tokens radius Migration', () => {
|
|
|
47
47
|
const expectedTree = (0, lib_1.createTreeFromFiles)(testsRoot, files, '.output.');
|
|
48
48
|
// Act
|
|
49
49
|
try {
|
|
50
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'tokens-radius', {
|
|
50
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'tokens-radius', { skipInstall: true }, tree);
|
|
51
51
|
}
|
|
52
52
|
catch (error) {
|
|
53
53
|
// eslint-disable-next-line no-console
|
|
@@ -69,7 +69,7 @@ describe('Tokens radius Migration', () => {
|
|
|
69
69
|
const treeOriginalTree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
70
70
|
const tree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
71
71
|
// Act
|
|
72
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'tokens-radius', {
|
|
72
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'tokens-radius', { skipInstall: true }, tree);
|
|
73
73
|
// Assert
|
|
74
74
|
tree.visit((p, entry) => {
|
|
75
75
|
const original = treeOriginalTree.get(p)?.content.toString() || '';
|
|
@@ -47,7 +47,7 @@ describe('Tokens spacing Migration', () => {
|
|
|
47
47
|
const expectedTree = (0, lib_1.createTreeFromFiles)(testsRoot, files, '.output.');
|
|
48
48
|
// Act
|
|
49
49
|
try {
|
|
50
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'tokens-spacings', {
|
|
50
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'tokens-spacings', { skipInstall: true }, tree);
|
|
51
51
|
}
|
|
52
52
|
catch (error) {
|
|
53
53
|
// eslint-disable-next-line no-console
|
|
@@ -69,7 +69,7 @@ describe('Tokens spacing Migration', () => {
|
|
|
69
69
|
const treeOriginalTree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
70
70
|
const tree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
71
71
|
// Act
|
|
72
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'tokens-spacings', {
|
|
72
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'tokens-spacings', { skipInstall: true }, tree);
|
|
73
73
|
// Assert
|
|
74
74
|
tree.visit((p, entry) => {
|
|
75
75
|
const original = treeOriginalTree.get(p)?.content.toString() || '';
|
|
@@ -47,7 +47,7 @@ describe('Tokens typo Migration', () => {
|
|
|
47
47
|
const expectedTree = (0, lib_1.createTreeFromFiles)(testsRoot, files, '.output.');
|
|
48
48
|
// Act
|
|
49
49
|
try {
|
|
50
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'tokens-typo', {
|
|
50
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'tokens-typo', { skipInstall: true }, tree);
|
|
51
51
|
}
|
|
52
52
|
catch (error) {
|
|
53
53
|
// eslint-disable-next-line no-console
|
|
@@ -69,7 +69,7 @@ describe('Tokens typo Migration', () => {
|
|
|
69
69
|
const treeOriginalTree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
70
70
|
const tree = (0, lib_1.createTreeFromFiles)(lfRoot, lfFiles, '.');
|
|
71
71
|
// Act
|
|
72
|
-
await (0, lib_1.runSchematic)('collection', collectionPath, 'tokens-typo', {
|
|
72
|
+
await (0, lib_1.runSchematic)('collection', collectionPath, 'tokens-typo', { skipInstall: true }, tree);
|
|
73
73
|
// Assert
|
|
74
74
|
tree.visit((p, entry) => {
|
|
75
75
|
const original = treeOriginalTree.get(p)?.content.toString() || '';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { OnDestroy, InjectionToken, EnvironmentProviders, OnInit, Injector, TemplateRef, Provider, AfterViewInit } from '@angular/core';
|
|
3
3
|
import * as _lucca_front_ng_dialog from '@lucca-front/ng/dialog';
|
|
4
4
|
import { LuTranslation } from '@lucca-front/ng/core';
|
|
5
5
|
import { BaseRouteReuseStrategy, ActivatedRouteSnapshot, CanDeactivateFn, DeprecatedGuard, GuardResult, Route } from '@angular/router';
|
|
@@ -28,14 +28,15 @@ declare class DialogHeaderSubtitle {
|
|
|
28
28
|
static ɵfac: i0.ɵɵFactoryDeclaration<DialogHeaderSubtitle, never>;
|
|
29
29
|
static ɵdir: i0.ɵɵDirectiveDeclaration<DialogHeaderSubtitle, "[dialogHeaderSubtitle]", never, {}, {}, never, never, true, never>;
|
|
30
30
|
}
|
|
31
|
-
declare class DialogHeaderComponent implements
|
|
31
|
+
declare class DialogHeaderComponent implements OnDestroy {
|
|
32
32
|
#private;
|
|
33
33
|
intl: i0.InputSignalWithTransform<_lucca_front_ng_dialog.LuDialogHeaderTranslations, Partial<_lucca_front_ng_dialog.LuDialogHeaderTranslations>>;
|
|
34
34
|
dismissible: boolean;
|
|
35
|
+
constructor();
|
|
35
36
|
close(): void;
|
|
36
37
|
optionalAction: i0.Signal<DialogHeaderAction>;
|
|
37
38
|
optionalSubtitle: i0.Signal<DialogHeaderSubtitle>;
|
|
38
|
-
|
|
39
|
+
ngOnDestroy(): void;
|
|
39
40
|
static ɵfac: i0.ɵɵFactoryDeclaration<DialogHeaderComponent, never>;
|
|
40
41
|
static ɵcmp: i0.ɵɵComponentDeclaration<DialogHeaderComponent, "lu-dialog-header", never, { "intl": { "alias": "intl"; "required": false; "isSignal": true; }; }, {}, ["optionalAction", "optionalSubtitle"], ["[dialogHeaderAction]", "*", "[dialogHeaderSubtitle]", "[dialogHeaderContent]"], true, never>;
|
|
41
42
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { InjectionToken, Signal, WritableSignal, OnInit, OnDestroy, ElementRef, ViewContainerRef, TemplateRef } from '@angular/core';
|
|
3
3
|
import * as lexical from 'lexical';
|
|
4
|
-
import { LexicalEditor, Klass, LexicalNode, LexicalNodeReplacement, NodeKey, EditorConfig, DOMExportOutput, DecoratorNode, DOMConversionMap, Spread, SerializedLexicalNode, LexicalUpdateJSON, TextFormatType } from 'lexical';
|
|
4
|
+
import { LexicalEditor, Klass, LexicalNode, LexicalNodeReplacement, NodeKey, EditorConfig, ElementDOMSlot, DOMExportOutput, DecoratorNode, DOMConversionMap, Spread, SerializedLexicalNode, LexicalUpdateJSON, TextFormatType } from 'lexical';
|
|
5
5
|
import { ControlValueAccessor, FormControl } from '@angular/forms';
|
|
6
6
|
import { DomPortal } from '@angular/cdk/portal';
|
|
7
7
|
import { LuSimpleSelectInputComponent } from '@lucca-front/ng/simple-select';
|
|
@@ -132,8 +132,10 @@ declare class PopoverLinkNode extends LinkNode {
|
|
|
132
132
|
templateRef?: TemplateRef<LinkTemplateContext>;
|
|
133
133
|
}, key?: NodeKey);
|
|
134
134
|
createDOM(config: EditorConfig): HTMLElement;
|
|
135
|
+
getDOMSlot(element: HTMLElement): ElementDOMSlot;
|
|
135
136
|
updateDOM(prevNode: this): boolean;
|
|
136
137
|
exportDOM(editor: LexicalEditor): DOMExportOutput;
|
|
138
|
+
static importDOM(): lexical.DOMConversionMap;
|
|
137
139
|
remove(preserveEmptyParent?: boolean): void;
|
|
138
140
|
static importJSON(serializedNode: SerializedLinkNode): PopoverLinkNode;
|
|
139
141
|
static clone(node: PopoverLinkNode): PopoverLinkNode;
|
|
@@ -151,8 +153,10 @@ declare class PopoverAutoLinkNode extends AutoLinkNode {
|
|
|
151
153
|
templateRef?: TemplateRef<LinkTemplateContext>;
|
|
152
154
|
}, key?: NodeKey);
|
|
153
155
|
createDOM(config: EditorConfig): HTMLElement;
|
|
156
|
+
getDOMSlot(element: HTMLElement): ElementDOMSlot;
|
|
154
157
|
updateDOM(prevNode: this): boolean;
|
|
155
158
|
exportDOM(editor: LexicalEditor): DOMExportOutput;
|
|
159
|
+
static importDOM(): null;
|
|
156
160
|
remove(preserveEmptyParent?: boolean): void;
|
|
157
161
|
static importJSON(serializedNode: SerializedAutoLinkNode): PopoverAutoLinkNode;
|
|
158
162
|
static clone(node: PopoverAutoLinkNode): PopoverAutoLinkNode;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnDestroy, Signal, WritableSignal, AfterViewInit, ElementRef,
|
|
2
|
+
import { OnDestroy, OnInit, Signal, WritableSignal, AfterViewInit, ElementRef, InjectionToken } from '@angular/core';
|
|
3
3
|
import * as _angular_forms from '@angular/forms';
|
|
4
4
|
import { NgModel, FormControlDirective, FormControlName, NgControl, FormControl, ControlValueAccessor, ValidatorFn } from '@angular/forms';
|
|
5
5
|
import { FilterPillInputComponent, FilterPillLayout } from '@lucca-front/ng/filter-pills';
|
|
@@ -39,7 +39,8 @@ declare class NoopValueAccessorDirective implements ControlValueAccessor {
|
|
|
39
39
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NoopValueAccessorDirective, "[luNoopValueAccessor]", never, {}, {}, never, never, true, never>;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
declare class CheckboxInputComponent implements FilterPillInputComponent {
|
|
42
|
+
declare class CheckboxInputComponent implements FilterPillInputComponent, OnInit {
|
|
43
|
+
#private;
|
|
43
44
|
framed: boolean;
|
|
44
45
|
parentInput: FilterPillInputComponent;
|
|
45
46
|
formField: FormFieldComponent;
|
|
@@ -62,7 +63,16 @@ declare class CheckboxInputComponent implements FilterPillInputComponent {
|
|
|
62
63
|
ngControl: _angular_forms.NgModel | _angular_forms.FormControlDirective | _angular_forms.FormControlName | (_angular_forms.NgControl & {
|
|
63
64
|
control: _angular_forms.FormControl<any>;
|
|
64
65
|
});
|
|
66
|
+
/**
|
|
67
|
+
* Reactive mirrors of the control's value/disabled state, so the filter pill button
|
|
68
|
+
* (rendered with OnPush) reflects programmatic changes such as a form reset without
|
|
69
|
+
* needing a DOM event to trigger change detection. Initialized in `ngOnInit` because
|
|
70
|
+
* `ngControl.control` is only wired once the control directive's `ngOnChanges` has run.
|
|
71
|
+
*/
|
|
72
|
+
protected checkboxValue: Signal<boolean>;
|
|
73
|
+
protected isCheckboxDisabled: Signal<boolean>;
|
|
65
74
|
constructor();
|
|
75
|
+
ngOnInit(): void;
|
|
66
76
|
clearFilterPillValue(): void;
|
|
67
77
|
registerFilterPillClosePopover(_closeFn: () => void): void;
|
|
68
78
|
enableFilterPillMode?(): void;
|
|
@@ -51,6 +51,7 @@ declare class LuMultiSelectPanelRefFactory {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
declare class LuMultiSelectInputComponent<T> extends ALuSelectInputComponent<T, T[]> implements ControlValueAccessor, OnDestroy, OnInit {
|
|
54
|
+
#private;
|
|
54
55
|
intl: i0.InputSignalWithTransform<_lucca_front_ng_core_select.LuCoreSelectLabel & _lucca_front_ng_multi_select.ILuMultiSelectLabel, Partial<_lucca_front_ng_core_select.LuCoreSelectLabel & _lucca_front_ng_multi_select.ILuMultiSelectLabel>>;
|
|
55
56
|
showColon: false;
|
|
56
57
|
valuesTpl: i0.ModelSignal<Type<unknown> | TemplateRef<LuOptionContext<T[]>>>;
|
|
@@ -66,6 +67,7 @@ declare class LuMultiSelectInputComponent<T> extends ALuSelectInputComponent<T,
|
|
|
66
67
|
valueLength: Signal<number>;
|
|
67
68
|
useSingleOptionDisplayer: Signal<boolean>;
|
|
68
69
|
_value: T[];
|
|
70
|
+
protected readonly presentationSeparators: Signal<string[]>;
|
|
69
71
|
get panelRef(): LuMultiSelectPanelRef<T> | undefined;
|
|
70
72
|
protected _panelRef?: LuMultiSelectPanelRef<T>;
|
|
71
73
|
protected panelRefFactory: LuMultiSelectPanelRefFactory;
|
|
@@ -222,6 +224,16 @@ declare class LuMultiDisplayerDirective<T> {
|
|
|
222
224
|
static ɵdir: i0.ɵɵDirectiveDeclaration<LuMultiDisplayerDirective<any>, "[luMultiDisplayer]", never, { "select": { "alias": "luMultiDisplayerSelect"; "required": false; }; }, {}, never, never, true, never>;
|
|
223
225
|
}
|
|
224
226
|
|
|
227
|
+
/**
|
|
228
|
+
* Returns the `itemCount - 1` separators `Intl.ListFormat` puts between `itemCount` items, so they can be
|
|
229
|
+
* interleaved with values rendered by a template rather than by `format()`.
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```ts
|
|
233
|
+
* listSeparators(new Intl.ListFormat('fr-FR'), 3); // [', ', ' et ']
|
|
234
|
+
* ```
|
|
235
|
+
*/
|
|
236
|
+
declare function listSeparators(listFormat: Intl.ListFormat, itemCount: number): string[];
|
|
225
237
|
declare function selectionToQueryParams<T, Key extends string>(key: Key, value: LuMultiSelection<T>, selector: (value: T) => unknown): Partial<Record<Key | `-${Key}`, string>>;
|
|
226
238
|
/**
|
|
227
239
|
* Transforms a selection from withSelectAll, the complete list of options and a getKey function to a list of options.
|
|
@@ -240,5 +252,5 @@ declare const LuMultiSelectionValidators: {
|
|
|
240
252
|
required: (control: AbstractControl<LuMultiSelection<unknown>>) => ValidationErrors | null;
|
|
241
253
|
};
|
|
242
254
|
|
|
243
|
-
export { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS, LU_MULTI_SELECT_TRANSLATIONS, LuMultiDisplayerDirective, LuMultiSelectContentDisplayerComponent, LuMultiSelectCounterDisplayerComponent, LuMultiSelectDefaultDisplayerComponent, LuMultiSelectDisplayerInputDirective, LuMultiSelectInputComponent, LuMultiSelectWithSelectAllDirective, LuMultiSelectionValidators, luMultiSelectDisplayerTranslations, luMultiSelectTranslations, selectionToOptions, selectionToQueryParams };
|
|
255
|
+
export { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS, LU_MULTI_SELECT_TRANSLATIONS, LuMultiDisplayerDirective, LuMultiSelectContentDisplayerComponent, LuMultiSelectCounterDisplayerComponent, LuMultiSelectDefaultDisplayerComponent, LuMultiSelectDisplayerInputDirective, LuMultiSelectInputComponent, LuMultiSelectWithSelectAllDirective, LuMultiSelectionValidators, listSeparators, luMultiSelectDisplayerTranslations, luMultiSelectTranslations, selectionToOptions, selectionToQueryParams };
|
|
244
256
|
export type { ILuMultiSelectDisplayerLabel, ILuMultiSelectLabel, LuMultiSelection, LuMultiSelectionMode };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Provider } from '@angular/core';
|
|
2
|
+
import { InjectionToken, Signal, Provider } from '@angular/core';
|
|
3
3
|
import * as rxjs from 'rxjs';
|
|
4
4
|
import { Observable, ObservableInput } from 'rxjs';
|
|
5
5
|
import * as i1 from '@angular/router';
|
|
@@ -47,14 +47,14 @@ declare class LuTitleService {
|
|
|
47
47
|
static ɵprov: i0.ɵɵInjectableDeclaration<LuTitleService>;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
declare const ɵAPP_TITLE: InjectionToken<string | Observable<string>>;
|
|
50
|
+
declare const ɵAPP_TITLE: InjectionToken<string | Observable<string> | Signal<string>>;
|
|
51
51
|
type LuTitleNamingStrategy = 'product' | 'other';
|
|
52
52
|
declare const ɵNAMING_STRATEGY: InjectionToken<LuTitleNamingStrategy>;
|
|
53
53
|
declare const ɵREAD_TITLE_BY_LIVE_ANNOUNCER: InjectionToken<boolean>;
|
|
54
54
|
/**
|
|
55
55
|
* @deprecated Use `provideLuTitleStrategy` instead.
|
|
56
56
|
*/
|
|
57
|
-
declare const APP_TITLE: InjectionToken<string | Observable<string>>;
|
|
57
|
+
declare const APP_TITLE: InjectionToken<string | Observable<string> | Signal<string>>;
|
|
58
58
|
declare class LuTitleStrategy extends TitleStrategy {
|
|
59
59
|
#private;
|
|
60
60
|
private title;
|
|
@@ -63,7 +63,7 @@ declare class LuTitleStrategy extends TitleStrategy {
|
|
|
63
63
|
private namingStrategy;
|
|
64
64
|
private readTitleByLiveAnnouncer;
|
|
65
65
|
private liveAnnouncer;
|
|
66
|
-
private luccaTitle$;
|
|
66
|
+
private readonly luccaTitle$;
|
|
67
67
|
private titlePartsSubject;
|
|
68
68
|
titleParts$: Observable<(string | ObservableInput<string>)[]>;
|
|
69
69
|
title$: Observable<string>;
|
|
@@ -75,7 +75,7 @@ declare class LuTitleStrategy extends TitleStrategy {
|
|
|
75
75
|
static ɵprov: i0.ɵɵInjectableDeclaration<LuTitleStrategy>;
|
|
76
76
|
}
|
|
77
77
|
interface LuTitleStrategyOptions {
|
|
78
|
-
appTitle?: () => string | Observable<string>;
|
|
78
|
+
appTitle?: () => string | Observable<string> | Signal<string>;
|
|
79
79
|
translateService?: () => ILuTitleTranslateService;
|
|
80
80
|
namingStrategy?: LuTitleNamingStrategy;
|
|
81
81
|
readTitleByLiveAnnouncer?: boolean;
|