@kirbydesign/designsystem 3.0.15 → 4.0.2
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/kirbydesign-designsystem-testing-base.umd.js +44 -15
- package/bundles/kirbydesign-designsystem-testing-base.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js +1 -1
- package/bundles/kirbydesign-designsystem-testing-base.umd.min.js.map +1 -1
- package/bundles/kirbydesign-designsystem.umd.js +280 -63
- package/bundles/kirbydesign-designsystem.umd.js.map +1 -1
- package/bundles/kirbydesign-designsystem.umd.min.js +1 -1
- package/bundles/kirbydesign-designsystem.umd.min.js.map +1 -1
- package/esm2015/kirbydesign-designsystem.js +18 -16
- package/esm2015/kirbydesign-designsystem.metadata.json +1 -1
- package/esm2015/lib/components/card/card.component.js +1 -1
- package/esm2015/lib/components/card/card.component.metadata.json +1 -1
- package/esm2015/lib/components/dropdown/dropdown.component.js +53 -59
- package/esm2015/lib/components/dropdown/dropdown.component.metadata.json +1 -1
- package/esm2015/lib/components/dropdown/dropdown.types.js +12 -0
- package/esm2015/lib/components/dropdown/dropdown.types.metadata.json +1 -0
- package/esm2015/lib/components/dropdown/keyboard-handler.service.js +43 -0
- package/esm2015/lib/components/dropdown/keyboard-handler.service.metadata.json +1 -0
- package/esm2015/lib/components/index.js +3 -2
- package/esm2015/lib/components/index.metadata.json +1 -1
- package/esm2015/lib/components/item/item.component.js +1 -1
- package/esm2015/lib/components/item/item.component.metadata.json +1 -1
- package/esm2015/lib/components/popover/popover.component.js +156 -0
- package/esm2015/lib/components/popover/popover.component.metadata.json +1 -0
- package/esm2015/lib/components/tabs/index.js +2 -2
- package/esm2015/lib/components/tabs/index.metadata.json +1 -1
- package/esm2015/lib/components/tabs/tabs.service.js +3 -1
- package/esm2015/lib/components/tabs/tabs.service.metadata.json +1 -1
- package/esm2015/lib/helpers/design-token-helper.js +4 -1
- package/esm2015/lib/helpers/design-token-helper.metadata.json +1 -1
- package/esm2015/lib/helpers/design-token-helper.styles.js +2 -1
- package/esm2015/lib/helpers/design-token-helper.styles.metadata.json +1 -1
- package/esm2015/lib/kirby.module.js +3 -1
- package/esm2015/lib/kirby.module.metadata.json +1 -1
- package/esm2015/testing-base/kirbydesign-designsystem-testing-base.js +17 -16
- package/esm2015/testing-base/kirbydesign-designsystem-testing-base.metadata.json +1 -1
- package/esm2015/testing-base/lib/components/mock.dropdown.component.js +2 -1
- package/esm2015/testing-base/lib/components/mock.dropdown.component.metadata.json +1 -1
- package/esm2015/testing-base/lib/components/mock.popover.component.js +27 -0
- package/esm2015/testing-base/lib/components/mock.popover.component.metadata.json +1 -0
- package/esm2015/testing-base/lib/mock-components.js +3 -1
- package/esm2015/testing-base/lib/mock-components.metadata.json +1 -1
- package/fesm2015/kirbydesign-designsystem-testing-base.js +29 -2
- package/fesm2015/kirbydesign-designsystem-testing-base.js.map +1 -1
- package/fesm2015/kirbydesign-designsystem.js +252 -50
- package/fesm2015/kirbydesign-designsystem.js.map +1 -1
- package/kirbydesign-designsystem.d.ts +17 -15
- package/kirbydesign-designsystem.metadata.json +1 -1
- package/lib/components/dropdown/dropdown.component.d.ts +13 -14
- package/lib/components/dropdown/dropdown.types.d.ts +9 -0
- package/lib/components/dropdown/keyboard-handler.service.d.ts +3 -0
- package/lib/components/index.d.ts +2 -1
- package/lib/components/popover/popover.component.d.ts +34 -0
- package/lib/components/tabs/index.d.ts +1 -1
- package/lib/components/tabs/tabs.service.d.ts +1 -0
- package/lib/helpers/design-token-helper.d.ts +1 -0
- package/lib/helpers/design-token-helper.styles.d.ts +1 -0
- package/package.json +1 -1
- package/scss/_global-styles.scss +3 -1
- package/scss/base/_functions.scss +15 -0
- package/scss/base/_list.scss +82 -0
- package/scss/base/_variables.scss +1 -0
- package/testing-base/kirbydesign-designsystem-testing-base.d.ts +16 -15
- package/testing-base/kirbydesign-designsystem-testing-base.metadata.json +1 -1
- package/testing-base/lib/components/mock.dropdown.component.d.ts +1 -0
- package/testing-base/lib/components/mock.popover.component.d.ts +7 -0
|
@@ -1,18 +1,12 @@
|
|
|
1
1
|
import { AfterContentChecked, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, QueryList, Renderer2, TemplateRef } from '@angular/core';
|
|
2
2
|
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
opening = 1,
|
|
6
|
-
open = 2
|
|
7
|
-
}
|
|
8
|
-
export declare enum HorizontalDirection {
|
|
9
|
-
right = "right",
|
|
10
|
-
left = "left"
|
|
11
|
-
}
|
|
3
|
+
import { HorizontalDirection, PopoverComponent } from '../popover/popover.component';
|
|
4
|
+
import { KeyboardHandlerService } from './keyboard-handler.service';
|
|
12
5
|
export declare class DropdownComponent implements AfterContentChecked, AfterViewInit, OnDestroy, ControlValueAccessor {
|
|
13
6
|
private renderer;
|
|
14
7
|
private elementRef;
|
|
15
8
|
private changeDetectorRef;
|
|
9
|
+
private keyboardHandlerService;
|
|
16
10
|
static readonly OPEN_DELAY_IN_MS = 100;
|
|
17
11
|
private state;
|
|
18
12
|
private hasConfiguredSlottedItems;
|
|
@@ -36,6 +30,7 @@ export declare class DropdownComponent implements AfterContentChecked, AfterView
|
|
|
36
30
|
hasError: boolean;
|
|
37
31
|
size: 'sm' | 'md';
|
|
38
32
|
tabindex: number;
|
|
33
|
+
usePopover: boolean;
|
|
39
34
|
get _tabindex(): number;
|
|
40
35
|
get _noBlurOnScroll(): boolean;
|
|
41
36
|
/**
|
|
@@ -54,16 +49,19 @@ export declare class DropdownComponent implements AfterContentChecked, AfterView
|
|
|
54
49
|
itemTemplate: TemplateRef<any>;
|
|
55
50
|
slottedItems: QueryList<ElementRef<HTMLElement>>;
|
|
56
51
|
cardElement: ElementRef<HTMLElement>;
|
|
52
|
+
popover?: PopoverComponent;
|
|
53
|
+
buttonElement: ElementRef<HTMLElement>;
|
|
57
54
|
kirbyItemsDefault: QueryList<ElementRef<HTMLElement>>;
|
|
58
55
|
kirbyItemsSlotted: QueryList<ElementRef<HTMLElement>>;
|
|
59
56
|
private itemClickUnlisten;
|
|
60
57
|
private intersectionObserverRef;
|
|
61
58
|
private showDropdownTimeoutId;
|
|
62
|
-
constructor(renderer: Renderer2, elementRef: ElementRef<HTMLElement>, changeDetectorRef: ChangeDetectorRef);
|
|
63
|
-
onToggle(event:
|
|
59
|
+
constructor(renderer: Renderer2, elementRef: ElementRef<HTMLElement>, changeDetectorRef: ChangeDetectorRef, keyboardHandlerService: KeyboardHandlerService);
|
|
60
|
+
onToggle(event: MouseEvent): void;
|
|
64
61
|
toggle(): void;
|
|
65
62
|
onButtonMouseEvent(event: Event): void;
|
|
66
63
|
ngAfterContentChecked(): void;
|
|
64
|
+
private setPopoverCardStyle;
|
|
67
65
|
ngAfterViewInit(): void;
|
|
68
66
|
private initializeAlignment;
|
|
69
67
|
private setHorizontalDirection;
|
|
@@ -111,10 +109,11 @@ export declare class DropdownComponent implements AfterContentChecked, AfterView
|
|
|
111
109
|
_onTab(event: KeyboardEvent): void;
|
|
112
110
|
_onMouseDown(event: MouseEvent): void;
|
|
113
111
|
_onFocus(): void;
|
|
114
|
-
|
|
112
|
+
_onPopoverWillHide(): void;
|
|
113
|
+
_onBlur(event?: FocusEvent): void;
|
|
115
114
|
_onSpace(event: KeyboardEvent): void;
|
|
116
115
|
_onEnter(event: KeyboardEvent): void;
|
|
117
|
-
_onArrowKeys(event: KeyboardEvent):
|
|
118
|
-
_onHomeEndKeys(event: KeyboardEvent):
|
|
116
|
+
_onArrowKeys(event: KeyboardEvent): boolean;
|
|
117
|
+
_onHomeEndKeys(event: KeyboardEvent): boolean;
|
|
119
118
|
ngOnDestroy(): void;
|
|
120
119
|
}
|
|
@@ -10,7 +10,7 @@ export * from './calendar';
|
|
|
10
10
|
export { CheckboxComponent } from './checkbox/checkbox.component';
|
|
11
11
|
export { ChipComponent } from './chip/chip.component';
|
|
12
12
|
export { DividerComponent } from './divider/divider.component';
|
|
13
|
-
export { DropdownComponent
|
|
13
|
+
export { DropdownComponent } from './dropdown/dropdown.component';
|
|
14
14
|
export { EmptyStateComponent } from './empty-state/empty-state.component';
|
|
15
15
|
export * from './form-field';
|
|
16
16
|
export { FabSheetComponent } from './fab-sheet/fab-sheet.component';
|
|
@@ -23,6 +23,7 @@ export * from './list';
|
|
|
23
23
|
export * from './reorder-list';
|
|
24
24
|
export * from './modal';
|
|
25
25
|
export * from './page';
|
|
26
|
+
export { HorizontalDirection, PopoverComponent } from './popover/popover.component';
|
|
26
27
|
export * from './router-outlet';
|
|
27
28
|
export * from './shared';
|
|
28
29
|
export { SegmentedControlComponent, SegmentedControlMode } from './segmented-control/segmented-control.component';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, Renderer2 } from '@angular/core';
|
|
2
|
+
export declare enum HorizontalDirection {
|
|
3
|
+
right = "right",
|
|
4
|
+
left = "left"
|
|
5
|
+
}
|
|
6
|
+
export declare class PopoverComponent implements AfterViewInit, OnDestroy {
|
|
7
|
+
private elementRef;
|
|
8
|
+
private renderer;
|
|
9
|
+
private readonly preventScrollEventListenerOptions;
|
|
10
|
+
private readonly POPOVER_BODY_PADDING;
|
|
11
|
+
private isShowing;
|
|
12
|
+
private isFirstToLockScroll;
|
|
13
|
+
private zIndex;
|
|
14
|
+
private document;
|
|
15
|
+
wrapperElement: ElementRef<HTMLDivElement>;
|
|
16
|
+
popout: HorizontalDirection;
|
|
17
|
+
target: HTMLElement | ElementRef<HTMLElement>;
|
|
18
|
+
willHide: EventEmitter<void>;
|
|
19
|
+
private get targetElement();
|
|
20
|
+
_backdropClick(): void;
|
|
21
|
+
_onWindowResize(): void;
|
|
22
|
+
constructor(elementRef: ElementRef<HTMLElement>, renderer: Renderer2);
|
|
23
|
+
ngAfterViewInit(): void;
|
|
24
|
+
ngOnDestroy(): void;
|
|
25
|
+
private placePopoverAboveClosestModal;
|
|
26
|
+
private preventEvent;
|
|
27
|
+
private preventScroll;
|
|
28
|
+
private releaseScroll;
|
|
29
|
+
show(): void;
|
|
30
|
+
hide(): void;
|
|
31
|
+
private positionWrapper;
|
|
32
|
+
private positionHorizontally;
|
|
33
|
+
private positionVertically;
|
|
34
|
+
}
|
|
@@ -2,4 +2,4 @@ export { TabsComponent } from './tabs.component';
|
|
|
2
2
|
export { TabButtonComponent } from './tab-button/tab-button.component';
|
|
3
3
|
export { selectedTabClickEvent } from './tab-button/tab-button.events';
|
|
4
4
|
export { TabsModule } from './tabs.module';
|
|
5
|
-
export { TabsService } from './tabs.service';
|
|
5
|
+
export { TabsService, IonRouterOutlet } from './tabs.service';
|
|
@@ -29,6 +29,7 @@ export declare class DesignTokenHelper {
|
|
|
29
29
|
static fatFingerSize(): string;
|
|
30
30
|
static getElevation(z: keyof typeof styles.elevations): string;
|
|
31
31
|
static itemHeight(key: keyof typeof styles.itemHeights): string;
|
|
32
|
+
static zLayer(key: keyof typeof styles.zLayers): string;
|
|
32
33
|
}
|
|
33
34
|
export declare type ThemeColorExtended = ThemeColor | 'black' | 'semi-light' | 'semi-dark' | 'background-color';
|
|
34
35
|
export declare type ThemeColorVariant = 'tint' | 'shade' | 'contrast';
|
package/package.json
CHANGED
package/scss/_global-styles.scss
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
@import './base/ionic';
|
|
3
3
|
@import './base/typography';
|
|
4
4
|
@import './base/line-clamp';
|
|
5
|
+
@import './base/list';
|
|
5
6
|
|
|
6
|
-
:root
|
|
7
|
+
:root,
|
|
8
|
+
:host {
|
|
7
9
|
--kirby-font-family: 'Roboto';
|
|
8
10
|
font-family: var(--kirby-font-family);
|
|
9
11
|
@each $color, $color-name in $kirby-colors {
|
|
@@ -101,6 +101,21 @@
|
|
|
101
101
|
@return $classes;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Remove the unit of a length
|
|
106
|
+
* @param {Number} $number - Number to remove unit from
|
|
107
|
+
* @return {Number} - Unitless number
|
|
108
|
+
*
|
|
109
|
+
* Source: https://css-tricks.com/snippets/sass/strip-unit-function/
|
|
110
|
+
*/
|
|
111
|
+
@function strip-unit($number) {
|
|
112
|
+
@if type-of($number) == 'number' and not unitless($number) {
|
|
113
|
+
@return $number / ($number * 0 + 1);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@return $number;
|
|
117
|
+
}
|
|
118
|
+
|
|
104
119
|
@mixin slotted($selectors...) {
|
|
105
120
|
::ng-deep > {
|
|
106
121
|
#{$selectors} {
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
@import '../utils';
|
|
2
|
+
|
|
3
|
+
$marker-disc-font-size: 1.8em;
|
|
4
|
+
$marker-cirle-font-size: 0.9em;
|
|
5
|
+
$list-item-line-height: 1.5;
|
|
6
|
+
|
|
7
|
+
// -----------------------------------------------------------------------------
|
|
8
|
+
// Grid layout
|
|
9
|
+
// -----------------------------------------------------------------------------
|
|
10
|
+
li {
|
|
11
|
+
display: grid;
|
|
12
|
+
grid-template-columns: auto 1fr;
|
|
13
|
+
|
|
14
|
+
// Nested lists
|
|
15
|
+
ol,
|
|
16
|
+
ul {
|
|
17
|
+
grid-column: 2 / -1;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// -----------------------------------------------------------------------------
|
|
22
|
+
// Spacing
|
|
23
|
+
// -----------------------------------------------------------------------------
|
|
24
|
+
ol,
|
|
25
|
+
ul {
|
|
26
|
+
padding-inline-start: size('xxxs'); // left
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
li {
|
|
30
|
+
&::before {
|
|
31
|
+
padding-inline-end: size('xs'); // right
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Vertical space between list items (excluding the first outermost item)
|
|
35
|
+
li,
|
|
36
|
+
& + li {
|
|
37
|
+
margin-block-start: size('xxs'); // top
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// -----------------------------------------------------------------------------
|
|
42
|
+
// Markers (bullets and numbers)
|
|
43
|
+
// -----------------------------------------------------------------------------
|
|
44
|
+
|
|
45
|
+
ol,
|
|
46
|
+
ul {
|
|
47
|
+
list-style: none;
|
|
48
|
+
counter-reset: item;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// First level marker
|
|
52
|
+
ul > li::before {
|
|
53
|
+
content: '\2022'; // Unicode disc ("bullet")
|
|
54
|
+
font-size: $marker-disc-font-size;
|
|
55
|
+
line-height: ($list-item-line-height / strip-unit($marker-disc-font-size));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Second level marker
|
|
59
|
+
:where(ol, ul) ul > li::before {
|
|
60
|
+
content: '\25E6'; // Unicode circle
|
|
61
|
+
font-size: $marker-cirle-font-size;
|
|
62
|
+
line-height: ($list-item-line-height / strip-unit($marker-cirle-font-size));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Third level (and beyond) marker
|
|
66
|
+
:where(ol, ul) :where(ol, ul) ul > li::before {
|
|
67
|
+
content: '\25AA'; // Unicode square
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Ordered list marker (decimal)
|
|
71
|
+
ol > li::before {
|
|
72
|
+
content: counter(item) '. ';
|
|
73
|
+
counter-increment: item;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// -----------------------------------------------------------------------------
|
|
77
|
+
// Typography
|
|
78
|
+
// -----------------------------------------------------------------------------
|
|
79
|
+
|
|
80
|
+
li {
|
|
81
|
+
line-height: $list-item-line-height;
|
|
82
|
+
}
|
|
@@ -37,20 +37,21 @@ export { MockLoadingOverlayComponent as ɵbg } from './lib/components/mock.loadi
|
|
|
37
37
|
export { MockModalFooterComponent as ɵbi } from './lib/components/mock.modal-footer.component';
|
|
38
38
|
export { MockPageFooterComponent as ɵbj } from './lib/components/mock.page-footer.component';
|
|
39
39
|
export { MockPageActionsComponent as ɵbr, MockPageActionsDirective as ɵbm, MockPageComponent as ɵbs, MockPageContentComponent as ɵbq, MockPageContentDirective as ɵbn, MockPageProgressComponent as ɵbo, MockPageTitleComponent as ɵbp, MockPageTitleDirective as ɵbk, MockPageToolbarTitleDirective as ɵbl } from './lib/components/mock.page.component';
|
|
40
|
-
export {
|
|
41
|
-
export {
|
|
42
|
-
export {
|
|
43
|
-
export {
|
|
44
|
-
export {
|
|
45
|
-
export {
|
|
46
|
-
export {
|
|
47
|
-
export {
|
|
48
|
-
export {
|
|
49
|
-
export {
|
|
50
|
-
export {
|
|
40
|
+
export { MockPopoverComponent as ɵbt } from './lib/components/mock.popover.component';
|
|
41
|
+
export { MockProgressCircleComponent as ɵbu } from './lib/components/mock.progress-circle.component';
|
|
42
|
+
export { MockRadioGroupComponent as ɵbv } from './lib/components/mock.radio-group.component';
|
|
43
|
+
export { MockRadioComponent as ɵbw } from './lib/components/mock.radio.component';
|
|
44
|
+
export { MockRangeComponent as ɵbx } from './lib/components/mock.range.component';
|
|
45
|
+
export { MockReorderListComponent as ɵby } from './lib/components/mock.reorder-list.component';
|
|
46
|
+
export { MockRouterOutletComponent as ɵbz } from './lib/components/mock.router-outlet.component';
|
|
47
|
+
export { MockSegmentedControlComponent as ɵca } from './lib/components/mock.segmented-control.component';
|
|
48
|
+
export { MockSlideButtonComponent as ɵcb } from './lib/components/mock.slide-button.component';
|
|
49
|
+
export { MockSpinnerComponent as ɵcc } from './lib/components/mock.spinner.component';
|
|
50
|
+
export { MockTabButtonComponent as ɵcd } from './lib/components/mock.tab-button.component';
|
|
51
|
+
export { MockTabsComponent as ɵce } from './lib/components/mock.tabs.component';
|
|
51
52
|
export { MockTextareaComponent as ɵx } from './lib/components/mock.textarea.component';
|
|
52
|
-
export { MockToggleButtonComponent as
|
|
53
|
-
export { MockToggleComponent as
|
|
54
|
-
export { MockThemeColorDirective as
|
|
53
|
+
export { MockToggleButtonComponent as ɵcg } from './lib/components/mock.toggle-button.component';
|
|
54
|
+
export { MockToggleComponent as ɵcf } from './lib/components/mock.toggle.component';
|
|
55
|
+
export { MockThemeColorDirective as ɵci } from './lib/directives/mock.theme-color.directive';
|
|
55
56
|
export { MOCK_COMPONENTS as ɵa } from './lib/mock-components';
|
|
56
|
-
export { MOCK_DIRECTIVES as
|
|
57
|
+
export { MOCK_DIRECTIVES as ɵch } from './lib/mock-directives';
|