native-document 1.0.166 → 1.0.169
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/.vitepress/config.js +166 -0
- package/CHANGELOG.md +187 -0
- package/components.js +4 -1
- package/dist/native-document.components.min.js +593 -300
- package/dist/native-document.dev.js +99 -75
- package/dist/native-document.dev.js.map +1 -1
- package/dist/native-document.min.js +1 -1
- package/docs/advanced-components.md +213 -608
- package/docs/anchor.md +173 -312
- package/docs/cache.md +95 -803
- package/docs/cli.md +179 -0
- package/docs/components/accordion.md +172 -0
- package/docs/components/alert.md +99 -0
- package/docs/components/avatar.md +160 -0
- package/docs/components/badge.md +102 -0
- package/docs/components/breadcrumb.md +89 -0
- package/docs/components/button.md +183 -0
- package/docs/components/card.md +69 -0
- package/docs/components/context-menu.md +118 -0
- package/docs/components/data-table.md +345 -0
- package/docs/components/dropdown.md +214 -0
- package/docs/components/form/autocomplete-field.md +81 -0
- package/docs/components/form/checkbox-field.md +41 -0
- package/docs/components/form/checkbox-group-field.md +54 -0
- package/docs/components/form/color-field.md +64 -0
- package/docs/components/form/date-field.md +92 -0
- package/docs/components/form/field-collection.md +63 -0
- package/docs/components/form/file-field.md +203 -0
- package/docs/components/form/form-control.md +87 -0
- package/docs/components/form/image-field.md +90 -0
- package/docs/components/form/index.md +115 -0
- package/docs/components/form/number-field.md +65 -0
- package/docs/components/form/radio-field.md +51 -0
- package/docs/components/form/select-field.md +123 -0
- package/docs/components/form/slider.md +136 -0
- package/docs/components/form/string-field.md +134 -0
- package/docs/components/form/textarea-field.md +65 -0
- package/docs/components/form-fields.md +372 -0
- package/docs/components/getting-started.md +264 -0
- package/docs/components/icons.md +321 -0
- package/docs/components/index.md +337 -0
- package/docs/components/layout.md +279 -0
- package/docs/components/list.md +73 -0
- package/docs/components/menu.md +215 -0
- package/docs/components/modal.md +156 -0
- package/docs/components/pagination.md +95 -0
- package/docs/components/popover.md +131 -0
- package/docs/components/progress.md +111 -0
- package/docs/components/shortcut-manager.md +221 -0
- package/docs/components/simple-table.md +107 -0
- package/docs/components/skeleton.md +155 -0
- package/docs/components/spinner.md +100 -0
- package/docs/components/splitter.md +133 -0
- package/docs/components/stepper.md +163 -0
- package/docs/components/switch.md +113 -0
- package/docs/components/tabs.md +153 -0
- package/docs/components/toast.md +119 -0
- package/docs/components/tooltip.md +151 -0
- package/docs/components/traits.md +261 -0
- package/docs/conditional-rendering.md +170 -588
- package/docs/contributing.md +300 -25
- package/docs/core-concepts.md +205 -374
- package/docs/elements.md +251 -367
- package/docs/extending-native-document-element.md +192 -207
- package/docs/filters.md +153 -1122
- package/docs/getting-started.md +193 -267
- package/docs/i18n.md +241 -0
- package/docs/index.md +76 -0
- package/docs/lifecycle-events.md +143 -75
- package/docs/list-rendering.md +227 -852
- package/docs/memory-management.md +134 -47
- package/docs/native-document-element.md +337 -186
- package/docs/native-fetch.md +99 -630
- package/docs/observable-resource.md +364 -0
- package/docs/observables.md +592 -526
- package/docs/routing.md +244 -653
- package/docs/state-management.md +134 -241
- package/docs/svg-elements.md +231 -0
- package/docs/theming.md +409 -0
- package/docs/tutorials/.gitkeep +0 -0
- package/docs/validation.md +95 -97
- package/docs/vitepress-conventions.md +219 -0
- package/package.json +34 -13
- package/readme.md +269 -89
- package/src/components/card/Card.js +93 -39
- package/src/components/card/index.js +1 -1
- package/src/components/form/field/types/FileField.js +3 -3
- package/src/components/icon/Icon.js +107 -0
- package/src/components/icon/icon-getters.js +142 -0
- package/src/components/icon/icons.js +171 -0
- package/src/components/icon/index.js +17 -0
- package/src/components/icon/types/Icon.d.ts +191 -0
- package/src/components/index.d.ts +6 -1
- package/src/components/list/HasListItem.js +171 -0
- package/src/components/list/List.js +41 -107
- package/src/components/list/ListDivider.js +39 -0
- package/src/components/list/ListGroup.js +76 -59
- package/src/components/list/ListItem.js +117 -69
- package/src/components/list/index.js +3 -1
- package/src/components/list/types/List.d.ts +45 -32
- package/src/components/list/types/ListDivider.ts +16 -0
- package/src/components/list/types/ListGroup.d.ts +51 -29
- package/src/components/list/types/ListItem.d.ts +40 -30
- package/src/components/spacer/Spacer.js +1 -1
- package/src/core/data/ObservableResource.js +5 -0
- package/src/core/data/observable-helpers/observable.prototypes.js +2 -0
- package/src/core/elements/content-formatter.js +16 -2
- package/src/core/elements/form.js +1 -1
- package/src/core/elements/img.js +1 -1
- package/src/core/elements/medias.js +2 -2
- package/src/core/elements/meta-data.js +1 -1
- package/src/core/wrappers/AttributesWrapper.js +37 -22
- package/src/core/wrappers/ElementCreator.js +9 -16
- package/src/core/wrappers/HtmlElementWrapper.js +26 -7
- package/src/core/wrappers/NDElement.js +12 -1
- package/src/core/wrappers/prototypes/attributes-extensions.js +24 -24
- package/src/core/wrappers/prototypes/nd-element-extensions.js +1 -8
- package/src/ui/components/card/CardRender.js +133 -0
- package/src/ui/components/card/card.css +169 -0
- package/src/ui/components/contextmenu/ContextmenuRender.js +1 -1
- package/src/ui/components/icon/material/MaterialIconRender.js +71 -0
- package/src/ui/components/icon/material/material.css +15 -0
- package/src/ui/components/icon/material/material.map.js +170 -0
- package/src/ui/components/icon/phosphor/PhosphorIconRender.js +71 -0
- package/src/ui/components/icon/phosphor/phosphor.css +17 -0
- package/src/ui/components/icon/phosphor/phosphor.map.js +165 -0
- package/src/ui/components/icon/tabler/TablerIconRender.js +59 -0
- package/src/ui/components/icon/tabler/tabler.css +14 -0
- package/src/ui/components/icon/tabler/tabler.map.js +165 -0
- package/src/ui/components/list/ListRender.js +18 -0
- package/src/ui/components/list/divider/ListDividerRender.js +10 -0
- package/src/ui/components/list/divider/list-divider.css +12 -0
- package/src/ui/components/list/group/ListGroupRender.js +61 -0
- package/src/ui/components/list/group/list-group.css +62 -0
- package/src/ui/components/list/item/ListItemRender.js +238 -0
- package/src/ui/components/list/item/list-item.css +191 -0
- package/src/ui/components/list/list.css +24 -0
- package/src/ui/components/spacer/SpacerRender.js +10 -0
- package/src/ui/index.js +13 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical icon names for NativeDocument.
|
|
3
|
+
* Convention:
|
|
4
|
+
* - Action/sense → search, close, edit, delete, save
|
|
5
|
+
* - Object/shape → star, heart, bell, flag
|
|
6
|
+
* - Direction → arrowLeft, arrowRight, chevronUp, chevronDown
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
// -- Navigation ---------------------------------------------------------------
|
|
10
|
+
export const ICON_ARROW_LEFT = 'arrowLeft';
|
|
11
|
+
export const ICON_ARROW_RIGHT = 'arrowRight';
|
|
12
|
+
export const ICON_ARROW_UP = 'arrowUp';
|
|
13
|
+
export const ICON_ARROW_DOWN = 'arrowDown';
|
|
14
|
+
export const ICON_CHEVRON_LEFT = 'chevronLeft';
|
|
15
|
+
export const ICON_CHEVRON_RIGHT = 'chevronRight';
|
|
16
|
+
export const ICON_CHEVRON_UP = 'chevronUp';
|
|
17
|
+
export const ICON_CHEVRON_DOWN = 'chevronDown';
|
|
18
|
+
export const ICON_HOME = 'home';
|
|
19
|
+
export const ICON_MENU = 'menu';
|
|
20
|
+
export const ICON_CLOSE = 'close';
|
|
21
|
+
export const ICON_BACK = 'back';
|
|
22
|
+
export const ICON_FORWARD = 'forward';
|
|
23
|
+
export const ICON_EXPAND = 'expand';
|
|
24
|
+
export const ICON_COLLAPSE = 'collapse';
|
|
25
|
+
export const ICON_FULLSCREEN = 'fullscreen';
|
|
26
|
+
export const ICON_FULLSCREEN_EXIT = 'fullscreenExit';
|
|
27
|
+
|
|
28
|
+
// -- Actions ------------------------------------------------------------------
|
|
29
|
+
export const ICON_SEARCH = 'search';
|
|
30
|
+
export const ICON_FILTER = 'filter';
|
|
31
|
+
export const ICON_SORT = 'sort';
|
|
32
|
+
export const ICON_EDIT = 'edit';
|
|
33
|
+
export const ICON_DELETE = 'delete';
|
|
34
|
+
export const ICON_ADD = 'add';
|
|
35
|
+
export const ICON_REMOVE = 'remove';
|
|
36
|
+
export const ICON_SAVE = 'save';
|
|
37
|
+
export const ICON_COPY = 'copy';
|
|
38
|
+
export const ICON_DOWNLOAD = 'download';
|
|
39
|
+
export const ICON_UPLOAD = 'upload';
|
|
40
|
+
export const ICON_SHARE = 'share';
|
|
41
|
+
export const ICON_REFRESH = 'refresh';
|
|
42
|
+
export const ICON_MORE = 'more';
|
|
43
|
+
export const ICON_SETTINGS = 'settings';
|
|
44
|
+
export const ICON_DRAG = 'drag';
|
|
45
|
+
export const ICON_RESIZE = 'resize';
|
|
46
|
+
export const ICON_UNDO = 'undo';
|
|
47
|
+
export const ICON_REDO = 'redo';
|
|
48
|
+
export const ICON_SCAN = 'scan';
|
|
49
|
+
export const ICON_PRINT = 'print';
|
|
50
|
+
export const ICON_IMPORT = 'import';
|
|
51
|
+
export const ICON_EXPORT = 'export';
|
|
52
|
+
|
|
53
|
+
// -- Feedback -----------------------------------------------------------------
|
|
54
|
+
export const ICON_CHECK = 'check';
|
|
55
|
+
export const ICON_CHECK_CIRCLE = 'checkCircle';
|
|
56
|
+
export const ICON_ERROR = 'error';
|
|
57
|
+
export const ICON_WARNING = 'warning';
|
|
58
|
+
export const ICON_INFO = 'info';
|
|
59
|
+
export const ICON_HELP = 'help';
|
|
60
|
+
export const ICON_LOADING = 'loading';
|
|
61
|
+
export const ICON_SUCCESS = 'success';
|
|
62
|
+
|
|
63
|
+
// -- User ---------------------------------------------------------------------
|
|
64
|
+
export const ICON_USER = 'user';
|
|
65
|
+
export const ICON_USER_CIRCLE = 'userCircle';
|
|
66
|
+
export const ICON_USERS = 'users';
|
|
67
|
+
export const ICON_LOCK = 'lock';
|
|
68
|
+
export const ICON_UNLOCK = 'unlock';
|
|
69
|
+
export const ICON_EYE = 'eye';
|
|
70
|
+
export const ICON_EYE_OFF = 'eyeOff';
|
|
71
|
+
export const ICON_BELL = 'bell';
|
|
72
|
+
export const ICON_NOTIFICATION = 'notification';
|
|
73
|
+
|
|
74
|
+
// -- Files & Media -------------------------------------------------------------
|
|
75
|
+
export const ICON_FILE = 'file';
|
|
76
|
+
export const ICON_FOLDER = 'folder';
|
|
77
|
+
export const ICON_IMAGE = 'image';
|
|
78
|
+
export const ICON_DOCUMENT = 'document';
|
|
79
|
+
export const ICON_ATTACHMENT = 'attachment';
|
|
80
|
+
export const ICON_LINK = 'link';
|
|
81
|
+
export const ICON_EXTERNAL_LINK = 'externalLink';
|
|
82
|
+
export const ICON_PLAY = 'play';
|
|
83
|
+
export const ICON_PAUSE = 'pause';
|
|
84
|
+
export const ICON_STOP = 'stop';
|
|
85
|
+
export const ICON_MUTE = 'mute';
|
|
86
|
+
export const ICON_SOUND = 'sound';
|
|
87
|
+
export const ICON_VIDEO = 'video';
|
|
88
|
+
export const ICON_CAMERA = 'camera';
|
|
89
|
+
|
|
90
|
+
// -- Interface -----------------------------------------------------------------
|
|
91
|
+
export const ICON_GRID = 'grid';
|
|
92
|
+
export const ICON_LIST = 'list';
|
|
93
|
+
export const ICON_CALENDAR = 'calendar';
|
|
94
|
+
export const ICON_CLOCK = 'clock';
|
|
95
|
+
export const ICON_TAG = 'tag';
|
|
96
|
+
export const ICON_TAGS = 'tags';
|
|
97
|
+
export const ICON_QR_CODE = 'qrCode';
|
|
98
|
+
export const ICON_BARCODE = 'barcode';
|
|
99
|
+
|
|
100
|
+
// -- Text editing -------------------------------------------------------------
|
|
101
|
+
export const ICON_BOLD = 'bold';
|
|
102
|
+
export const ICON_ITALIC = 'italic';
|
|
103
|
+
export const ICON_UNDERLINE = 'underline';
|
|
104
|
+
export const ICON_STRIKETHROUGH = 'strikethrough';
|
|
105
|
+
export const ICON_ALIGN_LEFT = 'alignLeft';
|
|
106
|
+
export const ICON_ALIGN_CENTER = 'alignCenter';
|
|
107
|
+
export const ICON_ALIGN_RIGHT = 'alignRight';
|
|
108
|
+
export const ICON_ALIGN_JUSTIFY = 'alignJustify';
|
|
109
|
+
export const ICON_ORDERED_LIST = 'orderedList';
|
|
110
|
+
export const ICON_UNORDERED_LIST = 'unorderedList';
|
|
111
|
+
export const ICON_INDENT = 'indent';
|
|
112
|
+
export const ICON_OUTDENT = 'outdent';
|
|
113
|
+
export const ICON_SCISSORS = 'scissors';
|
|
114
|
+
export const ICON_FONT_COLOR = 'fontColor';
|
|
115
|
+
export const ICON_HIGHLIGHT = 'highlight';
|
|
116
|
+
|
|
117
|
+
// -- Data & charts -------------------------------------------------------------
|
|
118
|
+
export const ICON_BAR_CHART = 'barChart';
|
|
119
|
+
export const ICON_LINE_CHART = 'lineChart';
|
|
120
|
+
export const ICON_PIE_CHART = 'pieChart';
|
|
121
|
+
export const ICON_AREA_CHART = 'areaChart';
|
|
122
|
+
export const ICON_TABLE = 'table';
|
|
123
|
+
export const ICON_DATABASE = 'database';
|
|
124
|
+
|
|
125
|
+
// -- Commerce & finance --------------------------------------------------------
|
|
126
|
+
export const ICON_SHOPPING_CART = 'shoppingCart';
|
|
127
|
+
export const ICON_CREDIT_CARD = 'creditCard';
|
|
128
|
+
export const ICON_WALLET = 'wallet';
|
|
129
|
+
export const ICON_BANK = 'bank';
|
|
130
|
+
export const ICON_GIFT = 'gift';
|
|
131
|
+
export const ICON_PERCENTAGE = 'percentage';
|
|
132
|
+
export const ICON_DOLLAR = 'dollar';
|
|
133
|
+
export const ICON_EURO = 'euro';
|
|
134
|
+
|
|
135
|
+
// -- Communication -------------------------------------------------------------
|
|
136
|
+
export const ICON_MAIL = 'mail';
|
|
137
|
+
export const ICON_MESSAGE = 'message';
|
|
138
|
+
export const ICON_COMMENT = 'comment';
|
|
139
|
+
export const ICON_PHONE = 'phone';
|
|
140
|
+
|
|
141
|
+
// -- System & dev -------------------------------------------------------------
|
|
142
|
+
export const ICON_CLOUD = 'cloud';
|
|
143
|
+
export const ICON_CLOUD_UPLOAD = 'cloudUpload';
|
|
144
|
+
export const ICON_CLOUD_DOWNLOAD = 'cloudDownload';
|
|
145
|
+
export const ICON_API = 'api';
|
|
146
|
+
export const ICON_CODE = 'code';
|
|
147
|
+
export const ICON_BUG = 'bug';
|
|
148
|
+
export const ICON_TOOL = 'tool';
|
|
149
|
+
export const ICON_ROBOT = 'robot';
|
|
150
|
+
|
|
151
|
+
// -- Location -----------------------------------------------------------------
|
|
152
|
+
export const ICON_MAP = 'map';
|
|
153
|
+
export const ICON_COMPASS = 'compass';
|
|
154
|
+
export const ICON_GLOBAL = 'global';
|
|
155
|
+
export const ICON_LOCATION = 'location';
|
|
156
|
+
|
|
157
|
+
// -- Shapes & objects ---------------------------------------------------------
|
|
158
|
+
export const ICON_STAR = 'star';
|
|
159
|
+
export const ICON_HEART = 'heart';
|
|
160
|
+
export const ICON_FLAG = 'flag';
|
|
161
|
+
export const ICON_TROPHY = 'trophy';
|
|
162
|
+
export const ICON_MEDAL = 'medal';
|
|
163
|
+
export const ICON_ROCKET = 'rocket';
|
|
164
|
+
export const ICON_FIRE = 'fire';
|
|
165
|
+
export const ICON_THUNDER = 'thunder';
|
|
166
|
+
export const ICON_SMILE = 'smile';
|
|
167
|
+
export const ICON_FROWN = 'frown';
|
|
168
|
+
export const ICON_LIKE = 'like';
|
|
169
|
+
export const ICON_DISLIKE = 'dislike';
|
|
170
|
+
export const ICON_SAFETY = 'safety';
|
|
171
|
+
export const ICON_KEY = 'key';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Icon } from './Icon';
|
|
2
|
+
import { ICON_GETTERS } from './icon-getters';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
// -- Icon.{name} getters - tree-shakable via defineProperty -------------------
|
|
6
|
+
|
|
7
|
+
for(const name in ICON_GETTERS) {
|
|
8
|
+
const canonicalName = ICON_GETTERS[name];
|
|
9
|
+
Object.defineProperty(Icon, name, {
|
|
10
|
+
get: () => Icon(canonicalName, Icon.defaultConfigs ?? {}),
|
|
11
|
+
enumerable: false,
|
|
12
|
+
configurable: true,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
export { Icon };
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import type { ValidChild } from '../../../../types/elements';
|
|
2
|
+
import type { ObservableItem } from '../../../../types/observable';
|
|
3
|
+
|
|
4
|
+
type IconVariant = 'thin' | 'light' | 'regular' | 'bold' | 'fill' | 'duotone' | string;
|
|
5
|
+
type IconSize = 'small' | 'medium' | 'large' | 'extraLarge' | number;
|
|
6
|
+
|
|
7
|
+
export interface IconDefaultConfigs {
|
|
8
|
+
variant?: IconVariant;
|
|
9
|
+
size?: IconSize;
|
|
10
|
+
color?: string;
|
|
11
|
+
weight?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface IconDescription {
|
|
15
|
+
name: string;
|
|
16
|
+
variant: IconVariant | null;
|
|
17
|
+
color: string | null;
|
|
18
|
+
weight: string | null;
|
|
19
|
+
size: IconSize | null;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface IconInstance {
|
|
23
|
+
$description: IconDescription;
|
|
24
|
+
|
|
25
|
+
variant(variant: IconVariant): this;
|
|
26
|
+
thin(): this;
|
|
27
|
+
light(): this;
|
|
28
|
+
regular(): this;
|
|
29
|
+
bold(): this;
|
|
30
|
+
fill(): this;
|
|
31
|
+
duotone(): this;
|
|
32
|
+
|
|
33
|
+
weight(weight: string): this;
|
|
34
|
+
|
|
35
|
+
size(size: IconSize): this;
|
|
36
|
+
small(): this;
|
|
37
|
+
medium(): this;
|
|
38
|
+
large(): this;
|
|
39
|
+
extraLarge(): this;
|
|
40
|
+
|
|
41
|
+
color(color: string | ObservableItem<string>): this;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export declare function Icon(name: string, props?: Partial<IconDescription>): IconInstance;
|
|
45
|
+
|
|
46
|
+
export declare namespace Icon {
|
|
47
|
+
let defaultTemplate: ((description: IconDescription, instance: IconInstance) => ValidChild) | null;
|
|
48
|
+
let defaultConfigs: IconDefaultConfigs | null;
|
|
49
|
+
|
|
50
|
+
function use(
|
|
51
|
+
template: (description: IconDescription, instance: IconInstance) => ValidChild,
|
|
52
|
+
defaultConfigs?: IconDefaultConfigs
|
|
53
|
+
): void;
|
|
54
|
+
|
|
55
|
+
// Icon.{name} getters - each access returns a fresh IconInstance
|
|
56
|
+
const add: IconInstance;
|
|
57
|
+
const alignCenter: IconInstance;
|
|
58
|
+
const alignJustify: IconInstance;
|
|
59
|
+
const alignLeft: IconInstance;
|
|
60
|
+
const alignRight: IconInstance;
|
|
61
|
+
const api: IconInstance;
|
|
62
|
+
const areaChart: IconInstance;
|
|
63
|
+
const arrowDown: IconInstance;
|
|
64
|
+
const arrowLeft: IconInstance;
|
|
65
|
+
const arrowRight: IconInstance;
|
|
66
|
+
const arrowUp: IconInstance;
|
|
67
|
+
const attachment: IconInstance;
|
|
68
|
+
const back: IconInstance;
|
|
69
|
+
const bank: IconInstance;
|
|
70
|
+
const barChart: IconInstance;
|
|
71
|
+
const barcode: IconInstance;
|
|
72
|
+
const bell: IconInstance;
|
|
73
|
+
const bold: IconInstance;
|
|
74
|
+
const bug: IconInstance;
|
|
75
|
+
const calendar: IconInstance;
|
|
76
|
+
const camera: IconInstance;
|
|
77
|
+
const check: IconInstance;
|
|
78
|
+
const checkCircle: IconInstance;
|
|
79
|
+
const chevronDown: IconInstance;
|
|
80
|
+
const chevronLeft: IconInstance;
|
|
81
|
+
const chevronRight: IconInstance;
|
|
82
|
+
const chevronUp: IconInstance;
|
|
83
|
+
const clock: IconInstance;
|
|
84
|
+
const close: IconInstance;
|
|
85
|
+
const cloud: IconInstance;
|
|
86
|
+
const cloudDownload: IconInstance;
|
|
87
|
+
const cloudUpload: IconInstance;
|
|
88
|
+
const code: IconInstance;
|
|
89
|
+
const collapse: IconInstance;
|
|
90
|
+
const comment: IconInstance;
|
|
91
|
+
const compass: IconInstance;
|
|
92
|
+
const copy: IconInstance;
|
|
93
|
+
const creditCard: IconInstance;
|
|
94
|
+
const database: IconInstance;
|
|
95
|
+
const dislike: IconInstance;
|
|
96
|
+
const document: IconInstance;
|
|
97
|
+
const dollar: IconInstance;
|
|
98
|
+
const download: IconInstance;
|
|
99
|
+
const drag: IconInstance;
|
|
100
|
+
const edit: IconInstance;
|
|
101
|
+
const error: IconInstance;
|
|
102
|
+
const euro: IconInstance;
|
|
103
|
+
const expand: IconInstance;
|
|
104
|
+
const externalLink: IconInstance;
|
|
105
|
+
const eye: IconInstance;
|
|
106
|
+
const eyeOff: IconInstance;
|
|
107
|
+
const file: IconInstance;
|
|
108
|
+
const filter: IconInstance;
|
|
109
|
+
const fire: IconInstance;
|
|
110
|
+
const flag: IconInstance;
|
|
111
|
+
const folder: IconInstance;
|
|
112
|
+
const fontColor: IconInstance;
|
|
113
|
+
const forward: IconInstance;
|
|
114
|
+
const frown: IconInstance;
|
|
115
|
+
const fullscreen: IconInstance;
|
|
116
|
+
const fullscreenExit: IconInstance;
|
|
117
|
+
const gift: IconInstance;
|
|
118
|
+
const global: IconInstance;
|
|
119
|
+
const grid: IconInstance;
|
|
120
|
+
const heart: IconInstance;
|
|
121
|
+
const help: IconInstance;
|
|
122
|
+
const highlight: IconInstance;
|
|
123
|
+
const home: IconInstance;
|
|
124
|
+
const image: IconInstance;
|
|
125
|
+
const indent: IconInstance;
|
|
126
|
+
const info: IconInstance;
|
|
127
|
+
const italic: IconInstance;
|
|
128
|
+
const key: IconInstance;
|
|
129
|
+
const like: IconInstance;
|
|
130
|
+
const lineChart: IconInstance;
|
|
131
|
+
const link: IconInstance;
|
|
132
|
+
const list: IconInstance;
|
|
133
|
+
const loading: IconInstance;
|
|
134
|
+
const location: IconInstance;
|
|
135
|
+
const lock: IconInstance;
|
|
136
|
+
const mail: IconInstance;
|
|
137
|
+
const map: IconInstance;
|
|
138
|
+
const medal: IconInstance;
|
|
139
|
+
const menu: IconInstance;
|
|
140
|
+
const message: IconInstance;
|
|
141
|
+
const more: IconInstance;
|
|
142
|
+
const mute: IconInstance;
|
|
143
|
+
const notification: IconInstance;
|
|
144
|
+
const orderedList: IconInstance;
|
|
145
|
+
const outdent: IconInstance;
|
|
146
|
+
const pause: IconInstance;
|
|
147
|
+
const percentage: IconInstance;
|
|
148
|
+
const phone: IconInstance;
|
|
149
|
+
const pieChart: IconInstance;
|
|
150
|
+
const play: IconInstance;
|
|
151
|
+
const print: IconInstance;
|
|
152
|
+
const qrCode: IconInstance;
|
|
153
|
+
const redo: IconInstance;
|
|
154
|
+
const refresh: IconInstance;
|
|
155
|
+
const remove: IconInstance;
|
|
156
|
+
const resize: IconInstance;
|
|
157
|
+
const robot: IconInstance;
|
|
158
|
+
const rocket: IconInstance;
|
|
159
|
+
const safety: IconInstance;
|
|
160
|
+
const save: IconInstance;
|
|
161
|
+
const scan: IconInstance;
|
|
162
|
+
const scissors: IconInstance;
|
|
163
|
+
const search: IconInstance;
|
|
164
|
+
const settings: IconInstance;
|
|
165
|
+
const share: IconInstance;
|
|
166
|
+
const shoppingCart: IconInstance;
|
|
167
|
+
const smile: IconInstance;
|
|
168
|
+
const sort: IconInstance;
|
|
169
|
+
const sound: IconInstance;
|
|
170
|
+
const star: IconInstance;
|
|
171
|
+
const stop: IconInstance;
|
|
172
|
+
const strikethrough: IconInstance;
|
|
173
|
+
const success: IconInstance;
|
|
174
|
+
const table: IconInstance;
|
|
175
|
+
const tag: IconInstance;
|
|
176
|
+
const tags: IconInstance;
|
|
177
|
+
const thunder: IconInstance;
|
|
178
|
+
const tool: IconInstance;
|
|
179
|
+
const trophy: IconInstance;
|
|
180
|
+
const underline: IconInstance;
|
|
181
|
+
const undo: IconInstance;
|
|
182
|
+
const unlock: IconInstance;
|
|
183
|
+
const unorderedList: IconInstance;
|
|
184
|
+
const upload: IconInstance;
|
|
185
|
+
const user: IconInstance;
|
|
186
|
+
const userCircle: IconInstance;
|
|
187
|
+
const users: IconInstance;
|
|
188
|
+
const video: IconInstance;
|
|
189
|
+
const wallet: IconInstance;
|
|
190
|
+
const warning: IconInstance;
|
|
191
|
+
}
|
|
@@ -84,7 +84,7 @@ export type { FileWallMode, FileWallModeInterface, FileWallModeDescription } fro
|
|
|
84
84
|
// --- List --------------------------------------------------------------------
|
|
85
85
|
export type { List, ListInterface, ListDescription } from './list/types/List';
|
|
86
86
|
export type { ListGroup, ListGroupInterface, ListGroupDescription } from './list/types/ListGroup';
|
|
87
|
-
export type { ListItem,
|
|
87
|
+
export type { ListItem, ListItemDescription } from './list/types/ListItem';
|
|
88
88
|
|
|
89
89
|
// --- Menu --------------------------------------------------------------------
|
|
90
90
|
export type { Menu, MenuInterface, MenuDescription } from './menu/types/Menu';
|
|
@@ -158,3 +158,8 @@ export type { ToastWarning, ToastWarningInterface } from './toast/types/ToastWar
|
|
|
158
158
|
|
|
159
159
|
// --- Tooltip -----------------------------------------------------------------
|
|
160
160
|
export type { Tooltip, TooltipInterface, TooltipDescription } from './tooltip/types/Tooltip';
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
// --- Icon -----------------------------------------------------------------
|
|
164
|
+
|
|
165
|
+
export type { Icon } from './icon/types/Icon'
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import ListDivider from './ListDivider';
|
|
2
|
+
import List from './List';
|
|
3
|
+
import BaseComponent from '../BaseComponent';
|
|
4
|
+
|
|
5
|
+
const EMPTY_OPTIONS = {};
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Trait that adds item/group/divider management to List and ListGroup.
|
|
9
|
+
* Mirrors the HasMenuItem pattern.
|
|
10
|
+
*
|
|
11
|
+
* @constructor
|
|
12
|
+
*/
|
|
13
|
+
export default function HasListItem() {}
|
|
14
|
+
|
|
15
|
+
HasListItem.components = {
|
|
16
|
+
ListItem: null,
|
|
17
|
+
ListGroup: null,
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @param {ObservableArray<*>|*[]} list
|
|
23
|
+
* @returns {this}
|
|
24
|
+
*/
|
|
25
|
+
HasListItem.prototype.selectInto = function(list) {
|
|
26
|
+
this.$description.selectedValues = list;
|
|
27
|
+
return this;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @param {boolean|Observable<boolean>} [selectable=true]
|
|
32
|
+
* @returns {this}
|
|
33
|
+
*/
|
|
34
|
+
HasListItem.prototype.selectable = function(selectable = true) {
|
|
35
|
+
this.$description.selectable = BaseComponent.obs(selectable);
|
|
36
|
+
return this;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Select items on click. Mutually exclusive with selectByCheckbox.
|
|
41
|
+
* @returns {this}
|
|
42
|
+
*/
|
|
43
|
+
HasListItem.prototype.selectByClick = function() {
|
|
44
|
+
this.$description.selectByClick.set(true);
|
|
45
|
+
this.$description.selectByCheckbox.set(false);
|
|
46
|
+
return this;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Select items via a checkbox. Mutually exclusive with selectByClick.
|
|
51
|
+
* @returns {this}
|
|
52
|
+
*/
|
|
53
|
+
HasListItem.prototype.selectByCheckbox = function() {
|
|
54
|
+
this.$description.selectByClick.set(false);
|
|
55
|
+
this.$description.selectByCheckbox.set(true);
|
|
56
|
+
return this;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @param {boolean|Observable<boolean>} [multi=true]
|
|
61
|
+
* @returns {this}
|
|
62
|
+
*/
|
|
63
|
+
HasListItem.prototype.multiSelect = function(multi = true) {
|
|
64
|
+
this.$description.multiSelect = BaseComponent.obs(multi);
|
|
65
|
+
this.$description.selectable.set(true);
|
|
66
|
+
return this;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @param {boolean} loopOnKeyboard
|
|
71
|
+
* @returns {this}
|
|
72
|
+
*/
|
|
73
|
+
HasListItem.prototype.loopOnKeyboard = function(loopOnKeyboard) {
|
|
74
|
+
this.$description.loopOnKeyboard = loopOnKeyboard;
|
|
75
|
+
return this;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @param {ListItem|ListGroup|ListDivider} item
|
|
80
|
+
* @returns {this}
|
|
81
|
+
*/
|
|
82
|
+
HasListItem.prototype.add = function(item) {
|
|
83
|
+
if (item === this) {
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
item.$parent = this;
|
|
87
|
+
this.$description.items.push(item);
|
|
88
|
+
return this;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @param {NdChild} label
|
|
93
|
+
* @param {NdChild|((item: ListItem) => void)} [iconOrBuilder]
|
|
94
|
+
* @param {((item: ListItem) => void)} [builder]
|
|
95
|
+
* @returns {this}
|
|
96
|
+
*/
|
|
97
|
+
HasListItem.prototype.item = function(label, iconOrBuilder, builder) {
|
|
98
|
+
const ListItem = HasListItem.components.ListItem;
|
|
99
|
+
const item = new ListItem();
|
|
100
|
+
item.$parent = this;
|
|
101
|
+
|
|
102
|
+
item.label(label);
|
|
103
|
+
|
|
104
|
+
if (typeof iconOrBuilder === 'function') {
|
|
105
|
+
iconOrBuilder(item);
|
|
106
|
+
} else if (iconOrBuilder) {
|
|
107
|
+
item.icon(iconOrBuilder);
|
|
108
|
+
if (typeof builder === 'function') {
|
|
109
|
+
builder(item);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
this.$description.items.push(item);
|
|
114
|
+
return this;
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @param {NdChild} label
|
|
119
|
+
* @param {NdChild|((group: ListGroup) => void)} [iconOrBuilder]
|
|
120
|
+
* @param {((group: ListGroup) => void)} [builder]
|
|
121
|
+
* @returns {this}
|
|
122
|
+
*/
|
|
123
|
+
HasListItem.prototype.group = function(label, iconOrBuilder, builder) {
|
|
124
|
+
const ListGroup = HasListItem.components.ListGroup;
|
|
125
|
+
const group = new ListGroup(label);
|
|
126
|
+
group.$parent = this;
|
|
127
|
+
|
|
128
|
+
if (typeof iconOrBuilder === 'function') {
|
|
129
|
+
iconOrBuilder(group);
|
|
130
|
+
} else if (iconOrBuilder) {
|
|
131
|
+
group.icon(iconOrBuilder);
|
|
132
|
+
if (typeof builder === 'function') {
|
|
133
|
+
builder(group);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
this.$description.items.push(group);
|
|
138
|
+
return this;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* @returns {this}
|
|
143
|
+
*/
|
|
144
|
+
HasListItem.prototype.divider = function() {
|
|
145
|
+
const divider = new ListDivider();
|
|
146
|
+
divider.$parent = this;
|
|
147
|
+
this.$description.items.push(divider);
|
|
148
|
+
return this;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Populate items from a data source using a builder function.
|
|
154
|
+
* The builder receives each data item and must return a ListItem or ListGroup.
|
|
155
|
+
*
|
|
156
|
+
* @param {ObservableArray<*>|*[]} source
|
|
157
|
+
* @param {(item: *) => ListItem|ListGroup} builder
|
|
158
|
+
* @returns {this}
|
|
159
|
+
*/
|
|
160
|
+
HasListItem.prototype.from = function(source, builder) {
|
|
161
|
+
this.$description.items = source;
|
|
162
|
+
this.$description.itemBuilder = (...args) => {
|
|
163
|
+
if(args[0].__$ListInstance) {
|
|
164
|
+
return args[0];
|
|
165
|
+
}
|
|
166
|
+
const item = builder(...args);
|
|
167
|
+
item.$parent = this;
|
|
168
|
+
return item;
|
|
169
|
+
};
|
|
170
|
+
return this;
|
|
171
|
+
};
|