@limetech/lime-elements 33.14.0-next.8 → 34.0.0-next.3
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/dist/cjs/{checkbox.template-c0b4c7c7.js → checkbox.template-d4423721.js} +1 -1
- package/dist/cjs/component-f7ef9087.js +2365 -0
- package/dist/cjs/{index-153dc912.js → index-e63a89d7.js} +73 -64
- package/dist/cjs/lime-elements.cjs.js +3 -3
- package/dist/cjs/limel-badge.cjs.entry.js +2 -2
- package/dist/cjs/limel-banner.cjs.entry.js +2 -2
- package/dist/cjs/limel-button-group.cjs.entry.js +16 -6
- package/dist/cjs/limel-button.cjs.entry.js +2 -2
- package/dist/cjs/limel-checkbox.cjs.entry.js +3 -3
- package/dist/cjs/limel-chip-set.cjs.entry.js +2 -2
- package/dist/cjs/limel-circular-progress.cjs.entry.js +2 -2
- package/dist/cjs/limel-code-editor.cjs.entry.js +2 -2
- package/dist/cjs/limel-collapsible-section.cjs.entry.js +2 -2
- package/dist/cjs/limel-config.cjs.entry.js +5 -2
- package/dist/cjs/limel-date-picker.cjs.entry.js +2 -2
- package/dist/cjs/limel-dialog.cjs.entry.js +2 -2
- package/dist/cjs/limel-file.cjs.entry.js +2 -2
- package/dist/cjs/limel-flatpickr-adapter_2.cjs.entry.js +3 -3
- package/dist/cjs/limel-flex-container.cjs.entry.js +2 -2
- package/dist/cjs/limel-form.cjs.entry.js +2 -2
- package/dist/cjs/limel-grid.cjs.entry.js +2 -2
- package/dist/cjs/limel-header.cjs.entry.js +2 -2
- package/dist/cjs/limel-icon-button.cjs.entry.js +2 -2
- package/dist/cjs/limel-icon.cjs.entry.js +2 -2
- package/dist/cjs/limel-linear-progress.cjs.entry.js +2 -2
- package/dist/cjs/limel-list_2.cjs.entry.js +484 -0
- package/dist/cjs/limel-menu-list.cjs.entry.js +863 -0
- package/dist/cjs/limel-menu.cjs.entry.js +6 -32
- package/dist/cjs/limel-picker.cjs.entry.js +2 -2
- package/dist/cjs/limel-popover-surface.cjs.entry.js +2 -2
- package/dist/cjs/limel-popover.cjs.entry.js +2 -2
- package/dist/cjs/limel-portal.cjs.entry.js +1935 -0
- package/dist/cjs/limel-progress-flow-item.cjs.entry.js +3 -3
- package/dist/cjs/limel-progress-flow.cjs.entry.js +2 -2
- package/dist/cjs/limel-select.cjs.entry.js +2 -2
- package/dist/cjs/limel-slider.cjs.entry.js +2 -2
- package/dist/cjs/limel-snackbar.cjs.entry.js +2 -2
- package/dist/cjs/limel-spinner.cjs.entry.js +2 -2
- package/dist/cjs/limel-switch.cjs.entry.js +2 -2
- package/dist/cjs/limel-tab-bar.cjs.entry.js +2 -2
- package/dist/cjs/limel-tab-panel.cjs.entry.js +2 -2
- package/dist/cjs/limel-table.cjs.entry.js +3 -3
- package/dist/cjs/limel-tooltip-content.cjs.entry.js +7 -4
- package/dist/cjs/limel-tooltip.cjs.entry.js +3 -3
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/collection/collection-manifest.json +3 -2
- package/dist/collection/components/button-group/button-group.js +15 -5
- package/dist/collection/components/chip-set/chip-set.js +2 -2
- package/dist/collection/components/config/config.js +3 -0
- package/dist/collection/components/header/header.js +0 -1
- package/dist/collection/components/list/list-renderer.js +152 -147
- package/dist/collection/components/list/list.css +16 -12
- package/dist/collection/components/list/list.js +77 -125
- package/dist/collection/components/menu/menu.js +15 -61
- package/dist/collection/components/menu-list/menu-list-renderer-config.js +1 -0
- package/dist/collection/components/menu-list/menu-list-renderer.js +150 -0
- package/dist/collection/components/menu-list/menu-list.css +3367 -0
- package/dist/collection/components/menu-list/menu-list.js +274 -0
- package/dist/collection/components/menu-list/menu-list.types.js +1 -0
- package/dist/collection/components/menu-surface/menu-surface.js +84 -87
- package/dist/collection/components/picker/picker.js +2 -2
- package/dist/collection/components/popover/popover.js +0 -1
- package/dist/collection/components/progress-flow/progress-flow-item/progress-flow-item.css +1 -1
- package/dist/collection/components/table/table.css +9 -2
- package/dist/collection/components/tooltip/tooltip-content.css +25 -13
- package/dist/collection/components/tooltip/tooltip-content.js +4 -3
- package/dist/collection/components/tooltip/tooltip.css +0 -6
- package/dist/collection/components/tooltip/tooltip.js +32 -5
- package/dist/esm/{checkbox.template-434214d5.js → checkbox.template-dbdd27c8.js} +1 -1
- package/dist/esm/component-2eb4e07b.js +2357 -0
- package/dist/esm/{index-dc421a6e.js → index-2316f345.js} +73 -64
- package/dist/esm/lime-elements.js +3 -3
- package/dist/esm/limel-badge.entry.js +2 -2
- package/dist/esm/limel-banner.entry.js +2 -2
- package/dist/esm/limel-button-group.entry.js +16 -6
- package/dist/esm/limel-button.entry.js +2 -2
- package/dist/esm/limel-checkbox.entry.js +3 -3
- package/dist/esm/limel-chip-set.entry.js +2 -2
- package/dist/esm/limel-circular-progress.entry.js +2 -2
- package/dist/esm/limel-code-editor.entry.js +2 -2
- package/dist/esm/limel-collapsible-section.entry.js +2 -2
- package/dist/esm/limel-config.entry.js +5 -2
- package/dist/esm/limel-date-picker.entry.js +2 -2
- package/dist/esm/limel-dialog.entry.js +2 -2
- package/dist/esm/limel-file.entry.js +2 -2
- package/dist/esm/limel-flatpickr-adapter_2.entry.js +3 -3
- package/dist/esm/limel-flex-container.entry.js +2 -2
- package/dist/esm/limel-form.entry.js +2 -2
- package/dist/esm/limel-grid.entry.js +2 -2
- package/dist/esm/limel-header.entry.js +2 -2
- package/dist/esm/limel-icon-button.entry.js +2 -2
- package/dist/esm/limel-icon.entry.js +2 -2
- package/dist/esm/limel-linear-progress.entry.js +2 -2
- package/dist/esm/limel-list_2.entry.js +479 -0
- package/dist/esm/limel-menu-list.entry.js +859 -0
- package/dist/esm/limel-menu.entry.js +6 -32
- package/dist/esm/limel-picker.entry.js +2 -2
- package/dist/esm/limel-popover-surface.entry.js +2 -2
- package/dist/esm/limel-popover.entry.js +2 -2
- package/dist/esm/limel-portal.entry.js +1931 -0
- package/dist/esm/limel-progress-flow-item.entry.js +3 -3
- package/dist/esm/limel-progress-flow.entry.js +2 -2
- package/dist/esm/limel-select.entry.js +2 -2
- package/dist/esm/limel-slider.entry.js +2 -2
- package/dist/esm/limel-snackbar.entry.js +2 -2
- package/dist/esm/limel-spinner.entry.js +2 -2
- package/dist/esm/limel-switch.entry.js +2 -2
- package/dist/esm/limel-tab-bar.entry.js +2 -2
- package/dist/esm/limel-tab-panel.entry.js +2 -2
- package/dist/esm/limel-table.entry.js +3 -3
- package/dist/esm/limel-tooltip-content.entry.js +7 -4
- package/dist/esm/limel-tooltip.entry.js +3 -3
- package/dist/esm/loader.js +3 -3
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/{p-af7c5b11.entry.js → p-03c28bee.entry.js} +2 -2
- package/dist/lime-elements/p-041ae00c.entry.js +1 -0
- package/dist/lime-elements/p-143705b1.entry.js +1 -0
- package/dist/lime-elements/{p-467c87f6.entry.js → p-1d7c7d5e.entry.js} +1 -1
- package/dist/lime-elements/p-1fb5340d.entry.js +1 -0
- package/dist/lime-elements/p-227d2c5a.entry.js +1 -0
- package/dist/lime-elements/p-31299106.js +126 -0
- package/dist/lime-elements/p-31fecf5d.entry.js +1 -0
- package/dist/lime-elements/p-34c7872e.entry.js +1 -0
- package/dist/lime-elements/p-3525d50c.entry.js +37 -0
- package/dist/lime-elements/p-4932c029.entry.js +1 -0
- package/dist/lime-elements/p-4b5af81b.entry.js +1 -0
- package/dist/lime-elements/p-510bb5a4.entry.js +1 -0
- package/dist/lime-elements/{p-67c48f98.entry.js → p-587bd6ca.entry.js} +1 -1
- package/dist/lime-elements/p-64549ba6.entry.js +37 -0
- package/dist/lime-elements/p-692f31f1.entry.js +16 -0
- package/dist/lime-elements/p-7476efe0.entry.js +1 -0
- package/dist/lime-elements/p-78afe9df.entry.js +1 -0
- package/dist/lime-elements/{p-c636bfcf.entry.js → p-85094bfc.entry.js} +2 -2
- package/dist/lime-elements/p-89b5a983.js +1 -0
- package/dist/lime-elements/p-8d1ab246.entry.js +1 -0
- package/dist/lime-elements/p-8d8bd2ab.entry.js +73 -0
- package/dist/lime-elements/p-90f3e17c.entry.js +37 -0
- package/dist/lime-elements/{p-fabb836f.js → p-92146da6.js} +1 -1
- package/dist/lime-elements/p-9d362dd5.entry.js +1 -0
- package/dist/lime-elements/{p-90b2c0a2.entry.js → p-a1153d2a.entry.js} +1 -1
- package/dist/lime-elements/{p-5577f962.entry.js → p-a3dadae7.entry.js} +2 -2
- package/dist/lime-elements/p-b386bfeb.entry.js +1 -0
- package/dist/lime-elements/p-b5d6abc3.entry.js +126 -0
- package/dist/lime-elements/p-bbc1bb01.entry.js +1 -0
- package/dist/lime-elements/p-be56ffab.entry.js +1 -0
- package/dist/lime-elements/p-c35874db.entry.js +1 -0
- package/dist/lime-elements/p-c8c8a946.entry.js +59 -0
- package/dist/lime-elements/p-d070f0e7.entry.js +1 -0
- package/dist/lime-elements/p-d2c74396.entry.js +1 -0
- package/dist/lime-elements/p-df55ee67.entry.js +82 -0
- package/dist/lime-elements/p-e5738ec6.entry.js +1 -0
- package/dist/lime-elements/p-e881e98d.entry.js +1 -0
- package/dist/lime-elements/{p-2476f7bb.entry.js → p-f079f1fd.entry.js} +2 -2
- package/dist/lime-elements/p-f2df64ec.entry.js +1 -0
- package/dist/lime-elements/p-f4495f59.entry.js +1 -0
- package/dist/lime-elements/p-fc30b8e3.entry.js +1 -0
- package/dist/lime-elements/{p-61ecc7f1.entry.js → p-ff0217b3.entry.js} +2 -2
- package/dist/loader/index.d.ts +0 -1
- package/dist/types/components/header/header.d.ts +0 -1
- package/dist/types/components/list/list-item.types.d.ts +2 -1
- package/dist/types/components/list/list-renderer-config.d.ts +0 -1
- package/dist/types/components/list/list-renderer.d.ts +3 -3
- package/dist/types/components/list/list.d.ts +0 -7
- package/dist/types/components/list/list.types.d.ts +1 -1
- package/dist/types/components/menu/menu.d.ts +4 -13
- package/dist/types/components/menu/menu.types.d.ts +34 -0
- package/dist/types/components/menu-list/menu-list-renderer-config.d.ts +7 -0
- package/dist/types/components/menu-list/menu-list-renderer.d.ts +48 -0
- package/dist/types/components/menu-list/menu-list.d.ts +59 -0
- package/dist/types/components/menu-list/menu-list.types.d.ts +6 -0
- package/dist/types/components/menu-surface/menu-surface.d.ts +0 -1
- package/dist/types/components/popover/popover.d.ts +0 -1
- package/dist/types/components/tooltip/tooltip-content.d.ts +1 -1
- package/dist/types/components/tooltip/tooltip.d.ts +32 -5
- package/dist/types/components.d.ts +68 -17
- package/dist/types/interface.d.ts +1 -0
- package/package.json +3 -2
- package/dist/cjs/limel-list_3.cjs.entry.js +0 -5398
- package/dist/esm/limel-list_3.entry.js +0 -5392
- package/dist/lime-elements/p-034f336b.entry.js +0 -126
- package/dist/lime-elements/p-136230d6.entry.js +0 -1
- package/dist/lime-elements/p-16c336e8.entry.js +0 -59
- package/dist/lime-elements/p-191f05bc.entry.js +0 -1
- package/dist/lime-elements/p-1a3a9bfd.entry.js +0 -1
- package/dist/lime-elements/p-231f62ba.entry.js +0 -1
- package/dist/lime-elements/p-24c128ec.entry.js +0 -37
- package/dist/lime-elements/p-30c4b32a.entry.js +0 -1
- package/dist/lime-elements/p-3a21fa33.entry.js +0 -37
- package/dist/lime-elements/p-3df01502.entry.js +0 -1
- package/dist/lime-elements/p-63e4f918.entry.js +0 -1
- package/dist/lime-elements/p-6d9f679d.entry.js +0 -1
- package/dist/lime-elements/p-6e3b6e69.entry.js +0 -1
- package/dist/lime-elements/p-6fcc1378.entry.js +0 -177
- package/dist/lime-elements/p-79541c2b.entry.js +0 -73
- package/dist/lime-elements/p-7be3a593.entry.js +0 -1
- package/dist/lime-elements/p-7c6f6b80.entry.js +0 -1
- package/dist/lime-elements/p-7dd9c41d.entry.js +0 -16
- package/dist/lime-elements/p-9b79dfe7.js +0 -1
- package/dist/lime-elements/p-a6a7dd00.entry.js +0 -1
- package/dist/lime-elements/p-aeeca058.entry.js +0 -1
- package/dist/lime-elements/p-b0b18dfc.entry.js +0 -1
- package/dist/lime-elements/p-b88e7350.entry.js +0 -1
- package/dist/lime-elements/p-bde1749a.entry.js +0 -1
- package/dist/lime-elements/p-c45238b6.entry.js +0 -1
- package/dist/lime-elements/p-c53695a3.entry.js +0 -37
- package/dist/lime-elements/p-dc5b3f45.entry.js +0 -1
- package/dist/lime-elements/p-e9b4bdac.entry.js +0 -1
- package/dist/lime-elements/p-eb81fc35.entry.js +0 -1
- package/dist/lime-elements/p-f94cbe50.entry.js +0 -1
- package/dist/lime-elements/p-fa880bd6.entry.js +0 -1
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { MDCMenu } from '@material/menu';
|
|
2
|
+
import { MDCRipple } from '@material/ripple';
|
|
3
|
+
import { strings as listStrings } from '@material/list/constants';
|
|
4
|
+
import { strings as menuStrings } from '@material/menu/constants';
|
|
5
|
+
import { Component, Element, Event, h, Prop, Watch, } from '@stencil/core';
|
|
6
|
+
import { MenuListRenderer } from './menu-list-renderer';
|
|
7
|
+
const { ACTION_EVENT } = listStrings;
|
|
8
|
+
const { SELECTED_EVENT } = menuStrings;
|
|
9
|
+
/**
|
|
10
|
+
* @private
|
|
11
|
+
*/
|
|
12
|
+
export class MenuList {
|
|
13
|
+
constructor() {
|
|
14
|
+
/**
|
|
15
|
+
* Size of the icons in the list
|
|
16
|
+
*/
|
|
17
|
+
this.iconSize = 'small';
|
|
18
|
+
/**
|
|
19
|
+
* By default, lists will display 3 lines of text, and then truncate the rest.
|
|
20
|
+
* Consumers can increase or decrease this number by specifying
|
|
21
|
+
* `maxLinesSecondaryText`. If consumer enters zero or negative
|
|
22
|
+
* numbers we default to 1; and if they type decimals we round up.
|
|
23
|
+
*/
|
|
24
|
+
// eslint-disable-next-line no-magic-numbers
|
|
25
|
+
this.maxLinesSecondaryText = 3;
|
|
26
|
+
this.MenuListRenderer = new MenuListRenderer();
|
|
27
|
+
this.setup = () => {
|
|
28
|
+
this.setupMenu();
|
|
29
|
+
this.setupListeners();
|
|
30
|
+
};
|
|
31
|
+
this.setupMenu = () => {
|
|
32
|
+
const element = this.element.shadowRoot.querySelector('.mdc-menu');
|
|
33
|
+
if (!element) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
this.mdcMenu = new MDCMenu(element);
|
|
37
|
+
this.mdcMenu.hasTypeahead = true;
|
|
38
|
+
this.mdcMenu.wrapFocus = true;
|
|
39
|
+
this.mdcMenu.items.forEach((item) => new MDCRipple(item));
|
|
40
|
+
};
|
|
41
|
+
this.setupListeners = () => {
|
|
42
|
+
if (!this.mdcMenu) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
this.mdcMenu.unlisten(SELECTED_EVENT, this.handleMenuSelect);
|
|
46
|
+
this.mdcMenu.listen(SELECTED_EVENT, this.handleMenuSelect);
|
|
47
|
+
};
|
|
48
|
+
this.teardown = () => {
|
|
49
|
+
var _a, _b, _c, _d;
|
|
50
|
+
(_a = this.mdcList) === null || _a === void 0 ? void 0 : _a.unlisten(ACTION_EVENT, this.handleAction);
|
|
51
|
+
(_b = this.mdcList) === null || _b === void 0 ? void 0 : _b.destroy();
|
|
52
|
+
(_c = this.mdcMenu) === null || _c === void 0 ? void 0 : _c.unlisten(SELECTED_EVENT, this.handleMenuSelect);
|
|
53
|
+
(_d = this.mdcMenu) === null || _d === void 0 ? void 0 : _d.destroy();
|
|
54
|
+
};
|
|
55
|
+
this.handleAction = (event) => {
|
|
56
|
+
this.handleSingleSelect(event.detail.index);
|
|
57
|
+
};
|
|
58
|
+
this.handleMenuSelect = (event) => {
|
|
59
|
+
this.handleSingleSelect(event.detail.index);
|
|
60
|
+
};
|
|
61
|
+
this.handleSingleSelect = (index) => {
|
|
62
|
+
const MenuItems = this.items.filter(this.isMenuItem);
|
|
63
|
+
if (MenuItems[index].disabled) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const selectedItem = MenuItems.find((item) => {
|
|
67
|
+
return !!item.selected;
|
|
68
|
+
});
|
|
69
|
+
if (selectedItem) {
|
|
70
|
+
this.change.emit(Object.assign(Object.assign({}, selectedItem), { selected: false }));
|
|
71
|
+
}
|
|
72
|
+
if (MenuItems[index] !== selectedItem) {
|
|
73
|
+
this.change.emit(Object.assign(Object.assign({}, MenuItems[index]), { selected: false }));
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
this.isMenuItem = (item) => {
|
|
77
|
+
return !('separator' in item);
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
connectedCallback() {
|
|
81
|
+
this.setup();
|
|
82
|
+
}
|
|
83
|
+
disconnectedCallback() {
|
|
84
|
+
this.teardown();
|
|
85
|
+
}
|
|
86
|
+
componentDidLoad() {
|
|
87
|
+
this.setup();
|
|
88
|
+
}
|
|
89
|
+
render() {
|
|
90
|
+
this.config = {
|
|
91
|
+
badgeIcons: this.badgeIcons,
|
|
92
|
+
type: this.type,
|
|
93
|
+
iconSize: this.iconSize,
|
|
94
|
+
};
|
|
95
|
+
const html = this.MenuListRenderer.render(this.items, this.config);
|
|
96
|
+
return h("div", { class: "mdc-menu mdc-menu-surface" }, html);
|
|
97
|
+
}
|
|
98
|
+
handleType() {
|
|
99
|
+
this.setupListeners();
|
|
100
|
+
}
|
|
101
|
+
itemsChanged() {
|
|
102
|
+
if (!this.mdcList) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const MenuItems = this.items.filter(this.isMenuItem);
|
|
106
|
+
this.mdcList.selectedIndex = MenuItems.findIndex((item) => item.selected);
|
|
107
|
+
}
|
|
108
|
+
static get is() { return "limel-menu-list"; }
|
|
109
|
+
static get encapsulation() { return "shadow"; }
|
|
110
|
+
static get originalStyleUrls() { return {
|
|
111
|
+
"$": ["menu-list.scss"]
|
|
112
|
+
}; }
|
|
113
|
+
static get styleUrls() { return {
|
|
114
|
+
"$": ["menu-list.css"]
|
|
115
|
+
}; }
|
|
116
|
+
static get properties() { return {
|
|
117
|
+
"items": {
|
|
118
|
+
"type": "unknown",
|
|
119
|
+
"mutable": false,
|
|
120
|
+
"complexType": {
|
|
121
|
+
"original": "Array<MenuItem | ListSeparator>",
|
|
122
|
+
"resolved": "(ListSeparator | MenuItem<any>)[]",
|
|
123
|
+
"references": {
|
|
124
|
+
"Array": {
|
|
125
|
+
"location": "global"
|
|
126
|
+
},
|
|
127
|
+
"MenuItem": {
|
|
128
|
+
"location": "import",
|
|
129
|
+
"path": "@limetech/lime-elements"
|
|
130
|
+
},
|
|
131
|
+
"ListSeparator": {
|
|
132
|
+
"location": "import",
|
|
133
|
+
"path": "@limetech/lime-elements"
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
"required": false,
|
|
138
|
+
"optional": false,
|
|
139
|
+
"docs": {
|
|
140
|
+
"tags": [],
|
|
141
|
+
"text": "List of items to display"
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"badgeIcons": {
|
|
145
|
+
"type": "boolean",
|
|
146
|
+
"mutable": false,
|
|
147
|
+
"complexType": {
|
|
148
|
+
"original": "boolean",
|
|
149
|
+
"resolved": "boolean",
|
|
150
|
+
"references": {}
|
|
151
|
+
},
|
|
152
|
+
"required": false,
|
|
153
|
+
"optional": false,
|
|
154
|
+
"docs": {
|
|
155
|
+
"tags": [],
|
|
156
|
+
"text": "Set to `true` if the list should display larger icons with a background"
|
|
157
|
+
},
|
|
158
|
+
"attribute": "badge-icons",
|
|
159
|
+
"reflect": false
|
|
160
|
+
},
|
|
161
|
+
"iconSize": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"mutable": false,
|
|
164
|
+
"complexType": {
|
|
165
|
+
"original": "IconSize",
|
|
166
|
+
"resolved": "\"large\" | \"medium\" | \"small\" | \"x-small\"",
|
|
167
|
+
"references": {
|
|
168
|
+
"IconSize": {
|
|
169
|
+
"location": "import",
|
|
170
|
+
"path": "@limetech/lime-elements"
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"required": false,
|
|
175
|
+
"optional": false,
|
|
176
|
+
"docs": {
|
|
177
|
+
"tags": [],
|
|
178
|
+
"text": "Size of the icons in the list"
|
|
179
|
+
},
|
|
180
|
+
"attribute": "icon-size",
|
|
181
|
+
"reflect": false,
|
|
182
|
+
"defaultValue": "'small'"
|
|
183
|
+
},
|
|
184
|
+
"type": {
|
|
185
|
+
"type": "string",
|
|
186
|
+
"mutable": false,
|
|
187
|
+
"complexType": {
|
|
188
|
+
"original": "MenuListType",
|
|
189
|
+
"resolved": "\"menu\"",
|
|
190
|
+
"references": {
|
|
191
|
+
"MenuListType": {
|
|
192
|
+
"location": "import",
|
|
193
|
+
"path": "@limetech/lime-elements"
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
"required": false,
|
|
198
|
+
"optional": false,
|
|
199
|
+
"docs": {
|
|
200
|
+
"tags": [],
|
|
201
|
+
"text": "The type of the menu, omit to get a regular vertical menu.\nAvailable types are:\n`menu`: regular vertical menu."
|
|
202
|
+
},
|
|
203
|
+
"attribute": "type",
|
|
204
|
+
"reflect": false
|
|
205
|
+
},
|
|
206
|
+
"maxLinesSecondaryText": {
|
|
207
|
+
"type": "number",
|
|
208
|
+
"mutable": false,
|
|
209
|
+
"complexType": {
|
|
210
|
+
"original": "number",
|
|
211
|
+
"resolved": "number",
|
|
212
|
+
"references": {}
|
|
213
|
+
},
|
|
214
|
+
"required": false,
|
|
215
|
+
"optional": false,
|
|
216
|
+
"docs": {
|
|
217
|
+
"tags": [],
|
|
218
|
+
"text": "By default, lists will display 3 lines of text, and then truncate the rest.\nConsumers can increase or decrease this number by specifying\n`maxLinesSecondaryText`. If consumer enters zero or negative\nnumbers we default to 1; and if they type decimals we round up."
|
|
219
|
+
},
|
|
220
|
+
"attribute": "max-lines-secondary-text",
|
|
221
|
+
"reflect": false,
|
|
222
|
+
"defaultValue": "3"
|
|
223
|
+
}
|
|
224
|
+
}; }
|
|
225
|
+
static get events() { return [{
|
|
226
|
+
"method": "change",
|
|
227
|
+
"name": "change",
|
|
228
|
+
"bubbles": true,
|
|
229
|
+
"cancelable": true,
|
|
230
|
+
"composed": true,
|
|
231
|
+
"docs": {
|
|
232
|
+
"tags": [],
|
|
233
|
+
"text": "Fired when a new value has been selected from the list. Only fired if selectable is set to true"
|
|
234
|
+
},
|
|
235
|
+
"complexType": {
|
|
236
|
+
"original": "MenuItem | MenuItem[]",
|
|
237
|
+
"resolved": "MenuItem<any> | MenuItem<any>[]",
|
|
238
|
+
"references": {
|
|
239
|
+
"MenuItem": {
|
|
240
|
+
"location": "import",
|
|
241
|
+
"path": "@limetech/lime-elements"
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}, {
|
|
246
|
+
"method": "select",
|
|
247
|
+
"name": "select",
|
|
248
|
+
"bubbles": true,
|
|
249
|
+
"cancelable": true,
|
|
250
|
+
"composed": true,
|
|
251
|
+
"docs": {
|
|
252
|
+
"tags": [],
|
|
253
|
+
"text": "Fired when an action has been selected from the action menu of a list item"
|
|
254
|
+
},
|
|
255
|
+
"complexType": {
|
|
256
|
+
"original": "MenuItem | MenuItem[]",
|
|
257
|
+
"resolved": "MenuItem<any> | MenuItem<any>[]",
|
|
258
|
+
"references": {
|
|
259
|
+
"MenuItem": {
|
|
260
|
+
"location": "import",
|
|
261
|
+
"path": "@limetech/lime-elements"
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}]; }
|
|
266
|
+
static get elementRef() { return "element"; }
|
|
267
|
+
static get watchers() { return [{
|
|
268
|
+
"propName": "type",
|
|
269
|
+
"methodName": "handleType"
|
|
270
|
+
}, {
|
|
271
|
+
"propName": "items",
|
|
272
|
+
"methodName": "itemsChanged"
|
|
273
|
+
}]; }
|
|
274
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -12,9 +12,90 @@ export class MenuSurface {
|
|
|
12
12
|
* True if the menu surface is open, false otherwise
|
|
13
13
|
*/
|
|
14
14
|
this.open = false;
|
|
15
|
-
this.
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
this.setup = () => {
|
|
16
|
+
const menuElement = this.host.shadowRoot.querySelector('.mdc-menu-surface');
|
|
17
|
+
if (!menuElement) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
this.menuSurface = new MDCMenuSurface(menuElement);
|
|
21
|
+
this.menuSurface.setAnchorCorner(Corner.TOP_START);
|
|
22
|
+
document.addEventListener('mousedown', this.handleDocumentClick, {
|
|
23
|
+
capture: true,
|
|
24
|
+
});
|
|
25
|
+
this.host.addEventListener('keydown', this.handleKeyDown);
|
|
26
|
+
window.addEventListener('resize', this.handleResize, {
|
|
27
|
+
passive: true,
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
this.teardown = () => {
|
|
31
|
+
var _a;
|
|
32
|
+
(_a = this.menuSurface) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
33
|
+
document.removeEventListener('mousedown', this.handleDocumentClick, {
|
|
34
|
+
capture: true,
|
|
35
|
+
});
|
|
36
|
+
this.host.removeEventListener('keydown', this.handleKeyDown);
|
|
37
|
+
window.removeEventListener('resize', this.handleResize);
|
|
38
|
+
};
|
|
39
|
+
this.handleDocumentClick = (event) => {
|
|
40
|
+
const elementPath = event.path || [];
|
|
41
|
+
if (!this.open) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (isDescendant(event.target, this.host)) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (this.allowClicksElement) {
|
|
48
|
+
const clickedInAllowedElement = elementPath.includes(this.allowClicksElement);
|
|
49
|
+
if (clickedInAllowedElement) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
this.dismiss.emit();
|
|
54
|
+
this.preventClickEventPropagation();
|
|
55
|
+
};
|
|
56
|
+
this.handleResize = () => {
|
|
57
|
+
if (this.open) {
|
|
58
|
+
this.dismiss.emit();
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
this.preventClickEventPropagation = () => {
|
|
62
|
+
// When the menu surface is open, we want to stop the `click` event from propagating
|
|
63
|
+
// when clicking outside the surface itself. This is to prevent any dialog that might
|
|
64
|
+
// be open from closing, etc. However, when dragging a scrollbar no `click` event is emitted,
|
|
65
|
+
// only mousedown and mouseup. So we listen for `mousedown` and attach a one-time listener
|
|
66
|
+
// for `click`, so we can capture and "kill" it.
|
|
67
|
+
document.addEventListener('click', this.stopEvent, {
|
|
68
|
+
capture: true,
|
|
69
|
+
once: true,
|
|
70
|
+
});
|
|
71
|
+
// We also capture and "kill" the next `mouseup` event.
|
|
72
|
+
document.addEventListener('mouseup', this.stopEvent, {
|
|
73
|
+
capture: true,
|
|
74
|
+
once: true,
|
|
75
|
+
});
|
|
76
|
+
// If the user dragged the scrollbar, no `click` event happens. So when we get the
|
|
77
|
+
// `mouseup` event, remove the handler for `click` if it's still there.
|
|
78
|
+
// Otherwise, we would catch the next click even though the menu is no longer open.
|
|
79
|
+
document.addEventListener('mouseup', () => {
|
|
80
|
+
document.removeEventListener('click', this.stopEvent, {
|
|
81
|
+
capture: true,
|
|
82
|
+
});
|
|
83
|
+
}, {
|
|
84
|
+
once: true,
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
this.stopEvent = (event) => {
|
|
88
|
+
event.stopPropagation();
|
|
89
|
+
event.preventDefault();
|
|
90
|
+
};
|
|
91
|
+
this.handleKeyDown = (event) => {
|
|
92
|
+
const isEscape = event.key === ESCAPE || event.keyCode === ESCAPE_KEY_CODE;
|
|
93
|
+
const isTab = event.key === TAB || event.keyCode === TAB_KEY_CODE;
|
|
94
|
+
if (this.open && (isEscape || isTab)) {
|
|
95
|
+
event.stopPropagation();
|
|
96
|
+
this.dismiss.emit();
|
|
97
|
+
}
|
|
98
|
+
};
|
|
18
99
|
}
|
|
19
100
|
connectedCallback() {
|
|
20
101
|
this.setup();
|
|
@@ -36,90 +117,6 @@ export class MenuSurface {
|
|
|
36
117
|
return (h("div", { class: classList, tabindex: "-1" },
|
|
37
118
|
h("slot", null)));
|
|
38
119
|
}
|
|
39
|
-
setup() {
|
|
40
|
-
const menuElement = this.host.shadowRoot.querySelector('.mdc-menu-surface');
|
|
41
|
-
if (!menuElement) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
this.menuSurface = new MDCMenuSurface(menuElement);
|
|
45
|
-
this.menuSurface.setAnchorCorner(Corner.TOP_START);
|
|
46
|
-
document.addEventListener('mousedown', this.handleDocumentClick, {
|
|
47
|
-
capture: true,
|
|
48
|
-
});
|
|
49
|
-
this.host.addEventListener('keydown', this.handleKeyDown);
|
|
50
|
-
window.addEventListener('resize', this.handleResize, {
|
|
51
|
-
passive: true,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
teardown() {
|
|
55
|
-
var _a;
|
|
56
|
-
(_a = this.menuSurface) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
57
|
-
document.removeEventListener('mousedown', this.handleDocumentClick, {
|
|
58
|
-
capture: true,
|
|
59
|
-
});
|
|
60
|
-
this.host.removeEventListener('keydown', this.handleKeyDown);
|
|
61
|
-
window.removeEventListener('resize', this.handleResize);
|
|
62
|
-
}
|
|
63
|
-
handleDocumentClick(event) {
|
|
64
|
-
const elementPath = event.path || [];
|
|
65
|
-
if (!this.open) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
if (isDescendant(event.target, this.host)) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
if (this.allowClicksElement) {
|
|
72
|
-
const clickedInAllowedElement = elementPath.includes(this.allowClicksElement);
|
|
73
|
-
if (clickedInAllowedElement) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
this.dismiss.emit();
|
|
78
|
-
this.preventClickEventPropagation();
|
|
79
|
-
}
|
|
80
|
-
handleResize() {
|
|
81
|
-
if (this.open) {
|
|
82
|
-
this.dismiss.emit();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
preventClickEventPropagation() {
|
|
86
|
-
// When the menu surface is open, we want to stop the `click` event from propagating
|
|
87
|
-
// when clicking outside the surface itself. This is to prevent any dialog that might
|
|
88
|
-
// be open from closing, etc. However, when dragging a scrollbar no `click` event is emitted,
|
|
89
|
-
// only mousedown and mouseup. So we listen for `mousedown` and attach a one-time listener
|
|
90
|
-
// for `click`, so we can capture and "kill" it.
|
|
91
|
-
document.addEventListener('click', this.stopEvent, {
|
|
92
|
-
capture: true,
|
|
93
|
-
once: true,
|
|
94
|
-
});
|
|
95
|
-
// We also capture and "kill" the next `mouseup` event.
|
|
96
|
-
document.addEventListener('mouseup', this.stopEvent, {
|
|
97
|
-
capture: true,
|
|
98
|
-
once: true,
|
|
99
|
-
});
|
|
100
|
-
// If the user dragged the scrollbar, no `click` event happens. So when we get the
|
|
101
|
-
// `mouseup` event, remove the handler for `click` if it's still there.
|
|
102
|
-
// Otherwise, we would catch the next click even though the menu is no longer open.
|
|
103
|
-
document.addEventListener('mouseup', () => {
|
|
104
|
-
document.removeEventListener('click', this.stopEvent, {
|
|
105
|
-
capture: true,
|
|
106
|
-
});
|
|
107
|
-
}, {
|
|
108
|
-
once: true,
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
stopEvent(event) {
|
|
112
|
-
event.stopPropagation();
|
|
113
|
-
event.preventDefault();
|
|
114
|
-
}
|
|
115
|
-
handleKeyDown(event) {
|
|
116
|
-
const isEscape = event.key === ESCAPE || event.keyCode === ESCAPE_KEY_CODE;
|
|
117
|
-
const isTab = event.key === TAB || event.keyCode === TAB_KEY_CODE;
|
|
118
|
-
if (this.open && (isEscape || isTab)) {
|
|
119
|
-
event.stopPropagation();
|
|
120
|
-
this.dismiss.emit();
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
120
|
static get is() { return "limel-menu-surface"; }
|
|
124
121
|
static get encapsulation() { return "shadow"; }
|
|
125
122
|
static get originalStyleUrls() { return {
|
|
@@ -646,8 +646,8 @@ export class Picker {
|
|
|
646
646
|
"optional": false,
|
|
647
647
|
"docs": {
|
|
648
648
|
"tags": [{
|
|
649
|
-
"
|
|
650
|
-
"
|
|
649
|
+
"name": "deprecated",
|
|
650
|
+
"text": "This was used for a workaround, and isn't needed any\nlonger. Setting it has no effect, and the property will be removed\nin the next major version."
|
|
651
651
|
}],
|
|
652
652
|
"text": "True if the dropdown list should be displayed without cutting the content"
|
|
653
653
|
},
|
|
@@ -1209,8 +1209,7 @@ body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
|
|
|
1209
1209
|
margin-top: 0.75rem;
|
|
1210
1210
|
}
|
|
1211
1211
|
:host(.has-low-density) .tabulator-cell {
|
|
1212
|
-
height: 2.75rem;
|
|
1213
|
-
line-height: 2rem;
|
|
1212
|
+
height: 2.75rem !important;
|
|
1214
1213
|
padding-left: 0.75rem;
|
|
1215
1214
|
padding-right: 0.5rem;
|
|
1216
1215
|
}
|
|
@@ -1349,6 +1348,14 @@ body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
|
|
|
1349
1348
|
.tabulator-row .tabulator-cell {
|
|
1350
1349
|
border-right: transparent;
|
|
1351
1350
|
padding: 0.5rem;
|
|
1351
|
+
display: inline-flex;
|
|
1352
|
+
align-items: center;
|
|
1353
|
+
}
|
|
1354
|
+
.tabulator-row .tabulator-cell[style*="text-align: right;"] {
|
|
1355
|
+
justify-content: flex-end;
|
|
1356
|
+
}
|
|
1357
|
+
.tabulator-row .tabulator-cell[style*="text-align: center;"] {
|
|
1358
|
+
justify-content: center;
|
|
1352
1359
|
}
|
|
1353
1360
|
|
|
1354
1361
|
.tabulator-col,
|
|
@@ -1,21 +1,33 @@
|
|
|
1
|
-
|
|
1
|
+
:host {
|
|
2
|
+
animation: display-tooltip 0.2s ease;
|
|
2
3
|
display: flex;
|
|
3
4
|
flex-direction: row;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
transition: opacity 150ms ease-out;
|
|
10
|
-
margin-top: 0.3rem;
|
|
11
|
-
background-color: rgb(var(--color-gray-darker));
|
|
5
|
+
border-radius: 0.25rem;
|
|
6
|
+
padding: 0.25rem 0.5rem;
|
|
7
|
+
font-size: 0.875rem;
|
|
8
|
+
background-color: rgb(var(--contrast-1300));
|
|
9
|
+
box-shadow: var(--shadow-depth-16);
|
|
12
10
|
}
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
|
|
12
|
+
.label {
|
|
13
|
+
color: rgb(var(--contrast-200));
|
|
15
14
|
}
|
|
16
|
-
|
|
15
|
+
|
|
16
|
+
.helper-label {
|
|
17
|
+
color: rgb(var(--contrast-800));
|
|
17
18
|
padding: 0 0 0 1rem;
|
|
18
19
|
}
|
|
19
|
-
.
|
|
20
|
+
.helper-label:empty {
|
|
20
21
|
display: none;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@keyframes display-tooltip {
|
|
25
|
+
0% {
|
|
26
|
+
opacity: 0;
|
|
27
|
+
transform: translate3d(0, 0, 0) scale(0.94);
|
|
28
|
+
}
|
|
29
|
+
100% {
|
|
30
|
+
opacity: 1;
|
|
31
|
+
transform: translate3d(0, 0, 0) scale(1);
|
|
32
|
+
}
|
|
21
33
|
}
|
|
@@ -6,9 +6,10 @@ import { Component, h, Prop } from '@stencil/core';
|
|
|
6
6
|
*/
|
|
7
7
|
export class TooltipContent {
|
|
8
8
|
render() {
|
|
9
|
-
return
|
|
10
|
-
h("div", { class: "
|
|
11
|
-
h("div", { class: "
|
|
9
|
+
return [
|
|
10
|
+
h("div", { class: "label" }, this.label),
|
|
11
|
+
h("div", { class: "helper-label" }, this.helperLabel),
|
|
12
|
+
];
|
|
12
13
|
}
|
|
13
14
|
static get is() { return "limel-tooltip-content"; }
|
|
14
15
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,19 +1,46 @@
|
|
|
1
1
|
import { Component, h, Prop, Element, State } from '@stencil/core';
|
|
2
2
|
import { createRandomString } from '../../util/random-string';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* of
|
|
4
|
+
* A tooltip can be used to display a descriptive text for any element.
|
|
5
|
+
* The displayed content must be a brief and supplemental string of text,
|
|
6
|
+
* identifying the element or describing its function for the user,
|
|
7
|
+
* helping them better understand unfamiliar objects that aren't described
|
|
8
|
+
* directly in the UI.
|
|
6
9
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
+
* ## Interaction
|
|
11
|
+
* The tooltip appears after a slight delay, when the element is hovered;
|
|
12
|
+
* and disappears as soon as the cursor leaves the element.
|
|
13
|
+
* Therefore, users cannot interact with the tip, but if the trigger element
|
|
14
|
+
* itself is interactive, it will remain interactible even with a tooltip bound
|
|
15
|
+
* to it.
|
|
16
|
+
*
|
|
17
|
+
* :::note
|
|
18
|
+
* In order to display the tooltip, the tooltip element and its trigger element
|
|
19
|
+
* must be within the same document or document fragment.
|
|
20
|
+
* A good practice is to just place them next to each other like below:
|
|
10
21
|
*
|
|
11
22
|
* ```html
|
|
12
23
|
* <limel-button icon="search" id="tooltip-example" />
|
|
13
24
|
* <limel-tooltip label="Search" elementId="tooltip-example" />
|
|
14
25
|
* ```
|
|
26
|
+
* :::
|
|
27
|
+
*
|
|
28
|
+
* ## Usage
|
|
29
|
+
* - Keep in mind that tooltips can be distracting, and can be perceived as an interruption.
|
|
30
|
+
* Use them only when they add significant value.
|
|
31
|
+
* - A good tip is concise, helpful, and informative.
|
|
32
|
+
* Don't explain the obvious or simply repeat what is already on the screen.
|
|
33
|
+
* When used correctly, supplemental info of a tooltip helps to [declutter the UI](/#/DesignGuidelines/decluttering.md/).
|
|
34
|
+
* - If the tip is essential to the primary tasks that the user is performing,
|
|
35
|
+
* such as warnings or important notes, include the information directly in the
|
|
36
|
+
* interface instead.
|
|
37
|
+
* - When a component offers a helper text (e.g. [Input field](/#/component/limel-input-field/)),
|
|
38
|
+
* use that, not a tooltip.
|
|
39
|
+
* - Make sure to use the tooltip on an element that users naturally and
|
|
40
|
+
* effortlessly recognize can be hovered.
|
|
15
41
|
*
|
|
16
42
|
* @exampleComponent limel-example-tooltip
|
|
43
|
+
* @private
|
|
17
44
|
*/
|
|
18
45
|
export class Tooltip {
|
|
19
46
|
constructor() {
|