native-document 1.0.75 → 1.0.77

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.
Files changed (184) hide show
  1. package/components.js +26 -1
  2. package/dist/native-document.components.min.js +6401 -1979
  3. package/dist/native-document.dev.js +138 -82
  4. package/dist/native-document.dev.js.map +1 -1
  5. package/dist/native-document.devtools.min.js +1 -1
  6. package/dist/native-document.min.js +1 -1
  7. package/jsconfig.json +15 -0
  8. package/package.json +1 -1
  9. package/rollup.config.js +4 -2
  10. package/src/components/$traits/HasItems.js +38 -0
  11. package/src/components/BaseComponent.js +70 -0
  12. package/src/components/accordion/Accordion.js +133 -0
  13. package/src/components/accordion/AccordionItem.js +119 -0
  14. package/src/components/accordion/index.js +7 -0
  15. package/src/components/alert/Alert.js +155 -0
  16. package/src/components/alert/index.js +6 -0
  17. package/src/components/avatar/Avatar.js +178 -0
  18. package/src/components/avatar/index.js +5 -0
  19. package/src/components/badge/Badge.js +103 -0
  20. package/src/components/badge/index.js +6 -0
  21. package/src/components/breadcrumb/BreadCrumb.js +70 -0
  22. package/src/components/breadcrumb/index.js +5 -0
  23. package/src/components/button/Button.js +174 -0
  24. package/src/components/button/index.js +5 -0
  25. package/src/components/card/Card.js +110 -0
  26. package/src/components/card/index.js +5 -0
  27. package/src/components/context-menu/ContextMenu.js +60 -0
  28. package/src/components/context-menu/ContextMenuGroup.js +16 -0
  29. package/src/components/context-menu/ContextMenuItem.js +16 -0
  30. package/src/components/context-menu/index.js +10 -0
  31. package/src/components/divider/Divider.js +126 -0
  32. package/src/components/divider/index.js +6 -0
  33. package/src/components/dropdown/Dropdown.js +170 -0
  34. package/src/components/dropdown/DropdownDivider.js +24 -0
  35. package/src/components/dropdown/DropdownGroup.js +44 -0
  36. package/src/components/dropdown/DropdownItem.js +71 -0
  37. package/src/components/dropdown/DropdownTrigger.js +64 -0
  38. package/src/components/dropdown/index.js +13 -0
  39. package/src/components/{fom-control → form}/FormControl.js +30 -22
  40. package/src/components/{fom-control → form}/field/DefaultRender.js +2 -16
  41. package/src/components/{fom-control → form}/field/Field.js +67 -140
  42. package/src/components/{fom-control → form}/field/FieldCollection.js +42 -22
  43. package/src/components/{fom-control → form}/field/types/AutocompleteField.js +11 -0
  44. package/src/components/form/field/types/CheckboxField.js +36 -0
  45. package/src/components/{fom-control → form}/field/types/CheckboxGroupField.js +10 -0
  46. package/src/components/{fom-control → form}/field/types/ColorField.js +11 -1
  47. package/src/components/{fom-control → form}/field/types/DateField.js +11 -1
  48. package/src/components/{fom-control → form}/field/types/EmailField.js +11 -1
  49. package/src/components/{fom-control → form}/field/types/FileField.js +11 -1
  50. package/src/components/form/field/types/HiddenField.js +18 -0
  51. package/src/components/{fom-control → form}/field/types/ImageField.js +11 -1
  52. package/src/components/{fom-control → form}/field/types/NumberField.js +11 -1
  53. package/src/components/{fom-control → form}/field/types/PasswordField.js +11 -1
  54. package/src/components/{fom-control → form}/field/types/RadioField.js +28 -2
  55. package/src/components/{fom-control → form}/field/types/RangeField.js +10 -0
  56. package/src/components/{fom-control → form}/field/types/SearchField.js +10 -0
  57. package/src/components/{fom-control → form}/field/types/SelectField.js +10 -0
  58. package/src/components/{fom-control → form}/field/types/StringField.js +11 -1
  59. package/src/components/{fom-control → form}/field/types/TelField.js +11 -2
  60. package/src/components/{fom-control → form}/field/types/TextAreaField.js +10 -0
  61. package/src/components/{fom-control → form}/field/types/TimeField.js +11 -2
  62. package/src/components/{fom-control → form}/field/types/UrlField.js +10 -2
  63. package/src/components/form/index.js +49 -0
  64. package/src/components/{fom-control → form}/validation/Validation.js +1 -1
  65. package/src/components/list/List.js +106 -0
  66. package/src/components/list/ListGroup.js +67 -0
  67. package/src/components/list/ListItem.js +103 -0
  68. package/src/components/list/index.js +10 -0
  69. package/src/components/menu/Menu.js +82 -0
  70. package/src/components/menu/MenuDivider.js +22 -0
  71. package/src/components/menu/MenuGroup.js +42 -0
  72. package/src/components/menu/MenuItem.js +71 -0
  73. package/src/components/menu/index.js +13 -0
  74. package/src/components/modal/Modal.js +153 -0
  75. package/src/components/modal/index.js +5 -0
  76. package/src/components/pagination/Pagination.js +229 -0
  77. package/src/components/pagination/index.js +5 -0
  78. package/src/components/popover/Popover.js +185 -0
  79. package/src/components/popover/PopoverFooter.js +37 -0
  80. package/src/components/popover/PopoverHeader.js +43 -0
  81. package/src/components/popover/index.js +10 -0
  82. package/src/components/progress/Progress.js +220 -0
  83. package/src/components/progress/index.js +6 -0
  84. package/src/components/skeleton/Skeleton.js +98 -0
  85. package/src/components/skeleton/SkeletonCard.js +0 -0
  86. package/src/components/skeleton/SkeletonList.js +0 -0
  87. package/src/components/skeleton/SkeletonParagraph.js +0 -0
  88. package/src/components/skeleton/SkeletonTable.js +0 -0
  89. package/src/components/skeleton/index.js +6 -0
  90. package/src/components/slider/Slider.js +183 -0
  91. package/src/components/slider/index.js +5 -0
  92. package/src/components/spinner/Spinner.js +160 -0
  93. package/src/components/spinner/index.js +5 -0
  94. package/src/components/splitter/Splitter.js +95 -0
  95. package/src/components/splitter/SplitterGutter.js +57 -0
  96. package/src/components/splitter/SplitterPanel.js +82 -0
  97. package/src/components/splitter/index.js +8 -0
  98. package/src/components/stepper/Stepper.js +229 -0
  99. package/src/components/stepper/StepperStep.js +103 -0
  100. package/src/components/stepper/index.js +8 -0
  101. package/src/components/switch/Switch.js +99 -0
  102. package/src/components/switch/index.js +0 -0
  103. package/src/components/table/ColumnGroup.js +1 -1
  104. package/src/components/table/DataTable.js +5 -8
  105. package/src/components/table/SimpleTable.js +36 -32
  106. package/src/components/tabs/Tabs.js +110 -0
  107. package/src/components/tabs/index.js +6 -0
  108. package/src/components/toast/Toast.js +129 -0
  109. package/src/components/toast/ToastError.js +0 -0
  110. package/src/components/toast/ToastInfo.js +0 -0
  111. package/src/components/toast/ToastSuccess.js +0 -0
  112. package/src/components/toast/ToastWarning.js +0 -0
  113. package/src/components/toast/index.js +5 -0
  114. package/src/components/tooltip/Tooltip.js +98 -0
  115. package/src/components/tooltip/index.js +5 -0
  116. package/src/components/tooltip/prototypes.js +6 -0
  117. package/src/core/data/MemoryManager.js +2 -2
  118. package/src/core/data/Observable.js +1 -1
  119. package/src/core/data/ObservableArray.js +14 -8
  120. package/src/core/data/ObservableItem.js +5 -5
  121. package/src/core/data/observable-helpers/array.js +2 -2
  122. package/src/core/data/observable-helpers/batch.js +2 -2
  123. package/src/core/data/observable-helpers/computed.js +6 -6
  124. package/src/core/data/observable-helpers/object.js +2 -2
  125. package/src/core/elements/anchor.js +3 -3
  126. package/src/core/elements/content-formatter.js +1 -1
  127. package/src/core/elements/control/for-each-array.js +42 -68
  128. package/src/core/elements/control/for-each.js +7 -7
  129. package/src/core/elements/control/show-if.js +5 -5
  130. package/src/core/elements/control/show-when.js +2 -2
  131. package/src/core/elements/control/switch.js +4 -4
  132. package/src/core/elements/description-list.js +1 -1
  133. package/src/core/elements/form.js +1 -1
  134. package/src/core/elements/html5-semantics.js +1 -1
  135. package/src/core/elements/img.js +3 -3
  136. package/src/core/elements/index.js +1 -1
  137. package/src/core/elements/interactive.js +1 -1
  138. package/src/core/elements/list.js +1 -1
  139. package/src/core/elements/medias.js +1 -1
  140. package/src/core/elements/meta-data.js +1 -1
  141. package/src/core/elements/table.js +1 -1
  142. package/src/core/utils/EventEmitter.js +1 -1
  143. package/src/core/utils/args-types.js +2 -2
  144. package/src/core/utils/events.js +68 -0
  145. package/src/core/utils/filters/standard.js +1 -1
  146. package/src/core/utils/filters/utils.js +1 -1
  147. package/src/core/utils/helpers.js +10 -7
  148. package/src/core/utils/prototypes.js +2 -2
  149. package/src/core/utils/validator.js +6 -5
  150. package/src/core/wrappers/AttributesWrapper.js +22 -23
  151. package/src/core/wrappers/DocumentObserver.js +1 -1
  152. package/src/core/wrappers/ElementCreator.js +9 -14
  153. package/src/core/wrappers/HtmlElementWrapper.js +2 -2
  154. package/src/core/wrappers/NDElement.js +3 -3
  155. package/src/core/wrappers/NdPrototype.js +24 -31
  156. package/src/core/wrappers/SingletonView.js +1 -1
  157. package/src/core/wrappers/TemplateCloner.js +60 -18
  158. package/src/core/wrappers/constants.js +32 -1
  159. package/src/core/wrappers/prototypes/attributes-extensions.js +17 -36
  160. package/src/core/wrappers/prototypes/bind-class-extensions.js +18 -0
  161. package/src/core/wrappers/prototypes/nd-element-extensions.js +6 -6
  162. package/src/devtools/app/App.js +2 -2
  163. package/src/devtools/hrm/ComponentRegistry.js +2 -2
  164. package/src/devtools/plugin.js +1 -1
  165. package/src/devtools/widget/DevToolsWidget.js +2 -2
  166. package/src/router/Route.js +1 -1
  167. package/src/router/RouteGroupHelper.js +1 -1
  168. package/src/router/Router.js +4 -4
  169. package/src/router/RouterComponent.js +1 -1
  170. package/src/router/link.js +3 -3
  171. package/src/router/modes/HistoryRouter.js +1 -2
  172. package/types/filters/dates.d.ts +1 -1
  173. package/types/filters/standard.d.ts +0 -1
  174. package/types/filters/types.d.ts +1 -1
  175. package/utils.js +3 -3
  176. package/src/components/fom-control/default/DefaultLayout.js +0 -8
  177. package/src/components/fom-control/default/collection/DefaultCollectionLayout.js +0 -12
  178. package/src/components/fom-control/default/collection/DefaultCollectionTemplate.js +0 -6
  179. package/src/components/fom-control/field/types/CheckboxField.js +0 -17
  180. package/src/components/fom-control/field/types/HiddenField.js +0 -8
  181. package/src/components/fom-control/index.js +0 -8
  182. /package/src/components/{fom-control → form}/field/FieldFactory.js +0 -0
  183. /package/src/components/{fom-control → form}/merge +0 -0
  184. /package/src/components/{fom-control → form}/utils.js +0 -0
@@ -1,7 +1,11 @@
1
- import {Validation} from "../../validation/Validation";
1
+ import {Validation} from "@components/form/validation/Validation";
2
2
  import StringField from "./StringField";
3
3
 
4
4
  export default function PasswordField(name, defaultConfig) {
5
+ if(!(this instanceof PasswordField)) {
6
+ return new PasswordField(name, defaultConfig);
7
+ }
8
+
5
9
  StringField.call(this, name, 'password', defaultConfig);
6
10
  Object.assign(this.$description, {
7
11
  visibilityToggle: false,
@@ -9,6 +13,12 @@ export default function PasswordField(name, defaultConfig) {
9
13
  });
10
14
  }
11
15
 
16
+ PasswordField.defaultTemplate = null;
17
+
18
+ PasswordField.use = function(template) {
19
+ PasswordField.defaultTemplate = template.passwordField;
20
+ };
21
+
12
22
  PasswordField.prototype = Object.create(StringField.prototype);
13
23
  PasswordField.prototype.constructor = PasswordField;
14
24
 
@@ -1,14 +1,27 @@
1
1
  import Field from "../Field";
2
+ import {Validator} from "@core";
3
+ import CheckboxField from "./CheckboxField";
4
+
5
+ export default function RadioField(name, options, defaultConfig = {}) {
6
+ if(!(this instanceof RadioField)) {
7
+ return new RadioField(name, defaultConfig);
8
+ }
2
9
 
3
- export default function RadioField(name, options, defaultConfig) {
4
10
  Field.call(this, name, 'radio', defaultConfig);
5
11
 
6
12
  Object.assign(this.$description, {
7
13
  options: options || [],
8
- layout: 'vertical'
14
+ layout: 'vertical' || defaultConfig?.layout,
15
+ checked: false
9
16
  });
10
17
  }
11
18
 
19
+ RadioField.defaultTemplate = null;
20
+
21
+ RadioField.use = function(template) {
22
+ RadioField.defaultTemplate = template.radioField;
23
+ };
24
+
12
25
  RadioField.prototype = Object.create(Field.prototype);
13
26
  RadioField.prototype.constructor = RadioField;
14
27
 
@@ -17,6 +30,19 @@ RadioField.prototype.options = function(opts) {
17
30
  return this;
18
31
  };
19
32
 
33
+ RadioField.prototype.model = function(observable) {
34
+ this.$description.checked = observable;
35
+ return this;
36
+ };
37
+
38
+ CheckboxField.prototype.checked = function() {
39
+ const checked = this.$description.checked;
40
+ if(Validator.isObservable(checked)) {
41
+ return checked.val();
42
+ }
43
+ return checked;
44
+ };
45
+
20
46
  RadioField.prototype.layout = function(value) {
21
47
  const allowedLayouts = ['vertical', 'horizontal', 'grid'];
22
48
 
@@ -1,6 +1,10 @@
1
1
  import NumberField from "./NumberField";
2
2
 
3
3
  export default function RangeField(name, defaultConfig) {
4
+ if(!(this instanceof RangeField)) {
5
+ return new RangeField(name, defaultConfig);
6
+ }
7
+
4
8
  NumberField.call(this, name, 'range', defaultConfig);
5
9
 
6
10
  Object.assign(this.$description, {
@@ -8,6 +12,12 @@ export default function RangeField(name, defaultConfig) {
8
12
  });
9
13
  }
10
14
 
15
+ RangeField.defaultTemplate = null;
16
+
17
+ RangeField.use = function(template) {
18
+ RangeField.defaultTemplate = template.rangeField;
19
+ };
20
+
11
21
  RangeField.prototype = Object.create(NumberField.prototype);
12
22
  RangeField.prototype.constructor = RangeField;
13
23
 
@@ -1,6 +1,10 @@
1
1
  import StringField from "./StringField";
2
2
 
3
3
  export default function SearchField(name, defaultConfig) {
4
+ if(!(this instanceof SearchField)) {
5
+ return new SearchField(name, defaultConfig);
6
+ }
7
+
4
8
  StringField.call(this, name, 'search', defaultConfig);
5
9
 
6
10
  Object.assign(this.$description, {
@@ -8,6 +12,12 @@ export default function SearchField(name, defaultConfig) {
8
12
  });
9
13
  }
10
14
 
15
+ SearchField.defaultTemplate = null;
16
+
17
+ SearchField.use = function(template) {
18
+ SearchField.defaultTemplate = template.searchField;
19
+ };
20
+
11
21
  SearchField.prototype = Object.create(StringField.prototype);
12
22
  SearchField.prototype.constructor = SearchField;
13
23
 
@@ -1,6 +1,10 @@
1
1
  import Field from "../Field";
2
2
 
3
3
  export default function SelectField(name, options, defaultConfig) {
4
+ if(!(this instanceof SelectField)) {
5
+ return new SelectField(name, defaultConfig);
6
+ }
7
+
4
8
  Field.call(this, name, 'select', defaultConfig);
5
9
 
6
10
  Object.assign(this.$description, {
@@ -12,6 +16,12 @@ export default function SelectField(name, options, defaultConfig) {
12
16
  });
13
17
  }
14
18
 
19
+ SelectField.defaultTemplate = null;
20
+
21
+ SelectField.use = function(template) {
22
+ SelectField.defaultTemplate = template.selectField;
23
+ };
24
+
15
25
  SelectField.prototype = Object.create(Field.prototype);
16
26
  SelectField.prototype.constructor = SelectField;
17
27
 
@@ -1,10 +1,20 @@
1
1
  import Field from "../Field";
2
- import {Validation} from "../../validation/Validation";
2
+ import {Validation} from "@components/form/validation/Validation";
3
3
 
4
4
  export default function StringField(name, type = 'text', defaultConfig = {}) {
5
+ if(!(this instanceof StringField)) {
6
+ return new StringField(name, defaultConfig);
7
+ }
8
+
5
9
  Field.call(this, name, type, defaultConfig);
6
10
  }
7
11
 
12
+ StringField.defaultTemplate = null;
13
+
14
+ StringField.use = function(template) {
15
+ StringField.defaultTemplate = template.stringField;
16
+ };
17
+
8
18
  StringField.prototype = Object.create(Field.prototype);
9
19
  StringField.prototype.constructor = StringField;
10
20
 
@@ -1,8 +1,11 @@
1
- // TelField.js
2
1
  import StringField from "./StringField";
3
- import {Validation} from "../../validation/Validation";
2
+ import {Validation} from "@components/form/validation/Validation";
4
3
 
5
4
  export default function TelField(name, defaultConfig) {
5
+ if(!(this instanceof TelField)) {
6
+ return new TelField(name, defaultConfig);
7
+ }
8
+
6
9
  StringField.call(this, name, 'tel', defaultConfig);
7
10
 
8
11
  Object.assign(this.$description, {
@@ -11,6 +14,12 @@ export default function TelField(name, defaultConfig) {
11
14
  });
12
15
  }
13
16
 
17
+ TelField.defaultTemplate = null;
18
+
19
+ TelField.use = function(template) {
20
+ TelField.defaultTemplate = template.telField;
21
+ };
22
+
14
23
  TelField.prototype = Object.create(StringField.prototype);
15
24
  TelField.prototype.constructor = TelField;
16
25
 
@@ -1,6 +1,10 @@
1
1
  import StringField from "./StringField";
2
2
 
3
3
  export default function TextAreaField(name, defaultConfig) {
4
+ if(!(this instanceof TextAreaField)) {
5
+ return new TextAreaField(name, defaultConfig);
6
+ }
7
+
4
8
  StringField.call(this, name, 'textarea', defaultConfig);
5
9
 
6
10
  Object.assign(this.$description, {
@@ -13,6 +17,12 @@ export default function TextAreaField(name, defaultConfig) {
13
17
  });
14
18
  }
15
19
 
20
+ TextAreaField.defaultTemplate = null;
21
+
22
+ TextAreaField.use = function(template) {
23
+ TextAreaField.defaultTemplate = template.textareaField;
24
+ };
25
+
16
26
  TextAreaField.prototype = Object.create(StringField.prototype);
17
27
  TextAreaField.prototype.constructor = TextAreaField;
18
28
 
@@ -1,8 +1,11 @@
1
- // TimeField.js
2
1
  import Field from "../Field";
3
- import {Validation} from "../../validation/Validation";
2
+ import {Validation} from "@components/form/validation/Validation";
4
3
 
5
4
  export default function TimeField(name, defaultConfig) {
5
+ if(!(this instanceof TimeField)) {
6
+ return new TimeField(name, defaultConfig);
7
+ }
8
+
6
9
  Field.call(this, name, 'time', defaultConfig);
7
10
 
8
11
  Object.assign(this.$description, {
@@ -11,6 +14,12 @@ export default function TimeField(name, defaultConfig) {
11
14
  });
12
15
  }
13
16
 
17
+ TimeField.defaultTemplate = null;
18
+
19
+ TimeField.use = function(template) {
20
+ TimeField.defaultTemplate = template.timeField;
21
+ };
22
+
14
23
  TimeField.prototype = Object.create(Field.prototype);
15
24
  TimeField.prototype.constructor = TimeField;
16
25
 
@@ -1,14 +1,22 @@
1
- // UrlField.js
2
1
  import StringField from "./StringField";
3
- import {Validation} from "../../validation/Validation";
2
+ import {Validation} from "@components/form/validation/Validation";
4
3
 
5
4
  export default function UrlField(name, defaultConfig) {
5
+ if(!(this instanceof UrlField)) {
6
+ return new UrlField(name, defaultConfig);
7
+ }
6
8
  StringField.call(this, name, 'url', defaultConfig);
7
9
 
8
10
  // Auto-apply url validation
9
11
  this.addRule(Validation.url, []);
10
12
  }
11
13
 
14
+ UrlField.defaultTemplate = null;
15
+
16
+ UrlField.use = function(template) {
17
+ UrlField.defaultTemplate = template.urlField;
18
+ };
19
+
12
20
  UrlField.prototype = Object.create(StringField.prototype);
13
21
  UrlField.prototype.constructor = UrlField;
14
22
 
@@ -0,0 +1,49 @@
1
+ import Field from "./field/Field";
2
+ import FormControl from "./FormControl";
3
+ import StringField from "./field/types/StringField";
4
+ import EmailField from "./field/types/EmailField";
5
+ import PasswordField from "./field/types/PasswordField";
6
+ import NumberField from "./field/types/NumberField";
7
+ import TextAreaField from "./field/types/TextAreaField";
8
+ import CheckboxField from "./field/types/CheckboxField";
9
+ import RadioField from "./field/types/RadioField";
10
+ import SelectField from "./field/types/SelectField";
11
+ import HiddenField from "./field/types/HiddenField";
12
+ import FileField from "./field/types/FileField";
13
+ import DateField from "./field/types/DateField";
14
+ import TimeField from "./field/types/TimeField";
15
+ import TelField from "./field/types/TelField";
16
+ import UrlField from "./field/types/UrlField";
17
+ import ColorField from "./field/types/ColorField";
18
+ import RangeField from "./field/types/RangeField";
19
+ import ImageField from "./field/types/ImageField";
20
+ import CheckboxGroupField from "./field/types/CheckboxGroupField";
21
+ import AutocompleteField from "./field/types/AutocompleteField";
22
+ import FieldCollection from "./field/FieldCollection";
23
+
24
+ import './field/FieldFactory';
25
+
26
+ export {
27
+ Field,
28
+ FormControl,
29
+ StringField,
30
+ EmailField,
31
+ PasswordField,
32
+ NumberField,
33
+ TextAreaField,
34
+ CheckboxField,
35
+ RadioField,
36
+ SelectField,
37
+ HiddenField,
38
+ FileField,
39
+ DateField,
40
+ TimeField,
41
+ TelField,
42
+ UrlField,
43
+ ColorField,
44
+ RangeField,
45
+ ImageField,
46
+ CheckboxGroupField,
47
+ AutocompleteField,
48
+ FieldCollection
49
+ }
@@ -1,4 +1,4 @@
1
- import {Validator} from "../../../../index";
1
+ import {Validator} from "@core";
2
2
 
3
3
  export const Validation = {
4
4
 
@@ -0,0 +1,106 @@
1
+
2
+ import BaseComponent from "@components/BaseComponent";
3
+ import EventEmitter from "@src/core/utils/EventEmitter";
4
+ import HasItems from "@components/$traits/HasItems";
5
+ import Dropdown from "@components/dropdown/Dropdown";
6
+
7
+ export default function List(config = {}) {
8
+ if(!(this instanceof List)) {
9
+ return new List(config);
10
+ }
11
+
12
+ this.$description = {
13
+ selectable: false,
14
+ multiSelect: false,
15
+ selectedValues: null,
16
+ inset: false,
17
+ divider: false,
18
+ data: null,
19
+ render: null,
20
+ selectByCheckbox: false,
21
+ selectByClick: false,
22
+ loopOnKeyboard: true,
23
+ ...config
24
+ };
25
+
26
+ }
27
+
28
+ List.defaultTemplate = null;
29
+
30
+ List.use = function(template) {
31
+ List.defaultTemplate = template.list;
32
+ };
33
+
34
+ BaseComponent.extends(List, HasItems, EventEmitter);
35
+
36
+ List.defaultTemplate = null;
37
+
38
+ List.use = function(template) {
39
+ List.defaultTemplate = template.list;
40
+ };
41
+
42
+ List.prototype.selectable = function(selectable = true) {
43
+ this.$description.selectable = selectable;
44
+ return this;
45
+ };
46
+
47
+ List.prototype.selectByClick = function() {
48
+ this.$description.selectByClick = true;
49
+ this.$description.selectByCheckbox = false;
50
+ };
51
+ List.prototype.selectByCheckbox = function() {
52
+ this.$description.selectByClick = false;
53
+ this.$description.selectByCheckbox = true;
54
+ };
55
+
56
+ List.prototype.multiSelect = function(multi = true) {
57
+ this.$description.multiSelect = multi;
58
+ this.$description.selectable = true;
59
+ return this;
60
+ };
61
+
62
+ List.prototype.selectedValuesModel = function(observable) {
63
+ this.$description.selectedValues = observable;
64
+ return this;
65
+ };
66
+
67
+ List.prototype.inset = function(inset = true) {
68
+ this.$description.inset = inset;
69
+ return this;
70
+ };
71
+
72
+ Dropdown.prototype.next = function() {
73
+
74
+ };
75
+
76
+ Dropdown.prototype.preview = function() {
77
+
78
+ };
79
+ Dropdown.prototype.loopOnKeyboard = function(loopOnKeyboard) {
80
+ this.$description.loopOnKeyboard = loopOnKeyboard;
81
+ return this;
82
+ };
83
+
84
+ List.prototype.withDivider = function(divider = true) {
85
+ this.$description.divider = divider;
86
+ return this;
87
+ };
88
+
89
+ List.prototype.data = function(data) {
90
+ this.$description.data = data;
91
+ return this;
92
+ };
93
+
94
+ List.prototype.onItemClick = function(handler) {
95
+ this.on('itemClick', handler);
96
+ return this;
97
+ };
98
+
99
+ List.prototype.onItemSelect = function(handler) {
100
+ this.on('itemSelect', handler);
101
+ return this;
102
+ };
103
+
104
+ List.prototype.$build = function() {
105
+
106
+ };
@@ -0,0 +1,67 @@
1
+ import BaseComponent from "@components/BaseComponent";
2
+ import HasItems from "@components/$traits/HasItems";
3
+
4
+ export default function ListGroup(label, config = {}) {
5
+ if(!(this instanceof ListGroup)) {
6
+ return new ListGroup(label, config);
7
+ }
8
+
9
+ this.$description = {
10
+ header: label || null,
11
+ footer: null,
12
+ items: [],
13
+ inset: false,
14
+ data: null,
15
+ renderHeader: null,
16
+ renderFooter: null,
17
+ render: null,
18
+ ...config
19
+ };
20
+ }
21
+
22
+ BaseComponent.extends(ListGroup, HasItems);
23
+
24
+ ListGroup.defaultTemplate = null;
25
+
26
+ ListGroup.use = function(template) {
27
+ ListGroup.defaultTemplate = template.listGroup;
28
+ };
29
+
30
+ ListGroup.prototype.header = function(header) {
31
+ this.$description.header = header;
32
+ return this;
33
+ };
34
+
35
+ ListGroup.prototype.title = function(title) {
36
+ return this.header(title);
37
+ };
38
+
39
+ ListGroup.prototype.footer = function(footer) {
40
+ this.$description.footer = footer;
41
+ return this;
42
+ };
43
+
44
+ ListGroup.prototype.inset = function(inset = true) {
45
+ this.$description.inset = inset;
46
+ return this;
47
+ };
48
+
49
+ ListGroup.prototype.data = function(data) {
50
+ this.$description.data = data;
51
+ return this;
52
+ };
53
+
54
+ ListGroup.prototype.renderHeader = function(renderFn) {
55
+ this.$description.renderHeader = renderFn;
56
+ return this;
57
+ };
58
+
59
+ ListGroup.prototype.renderFooter = function(renderFn) {
60
+ this.$description.renderFooter = renderFn;
61
+ return this;
62
+ };
63
+
64
+
65
+ ListGroup.prototype.$build = function() {
66
+
67
+ };
@@ -0,0 +1,103 @@
1
+ import BaseComponent from "@components/BaseComponent";
2
+ import {Validator} from "@core";
3
+
4
+ export default function ListItem(content, config = {}) {
5
+ if(!(this instanceof ListItem)) {
6
+ return new ListItem(content, config);
7
+ }
8
+
9
+ this.$description = {
10
+ content: content || null,
11
+ icon: null,
12
+ trailing: null,
13
+ leading: null,
14
+ disabled: false,
15
+ selectable: false,
16
+ selected: false,
17
+ divider: false,
18
+ data: null,
19
+ render: null,
20
+ ...config
21
+ };
22
+ }
23
+
24
+ BaseComponent.extends(ListItem);
25
+
26
+ ListItem.defaultTemplate = null;
27
+
28
+ ListItem.use = function(template) {
29
+ ListItem.defaultTemplate = template.listItem;
30
+ };
31
+
32
+ ListItem.prototype.content = function(content) {
33
+ this.$description.content = content;
34
+ return this;
35
+ };
36
+
37
+ ListItem.prototype.label = function(label) {
38
+ this.$description.content = label;
39
+ return this;
40
+ };
41
+
42
+ ListItem.prototype.icon = function(icon) {
43
+ this.$description.icon = icon;
44
+ return this;
45
+ };
46
+
47
+ ListItem.prototype.leading = function(leading) {
48
+ this.$description.leading = leading;
49
+ return this;
50
+ };
51
+
52
+ ListItem.prototype.trailing = function(trailing) {
53
+ this.$description.trailing = trailing;
54
+ return this;
55
+ };
56
+
57
+ ListItem.prototype.leading = function(leading) {
58
+ this.$description.leading = leading;
59
+ return this;
60
+ };
61
+
62
+ ListItem.prototype.disabled = function(disabled = true) {
63
+ this.$description.disabled = disabled;
64
+ return this;
65
+ };
66
+
67
+ ListItem.prototype.selectable = function() {
68
+ this.$description.selectable = true;
69
+ if(Validator.isObservable(this.$description.selected)) {
70
+ return this;
71
+ }
72
+ this.$description.selected = $(false);
73
+ return this;
74
+ };
75
+
76
+ ListItem.prototype.selected = function(selected = true) {
77
+ if(Validator.isObservable(this.$description.selected)) {
78
+ this.$description.selected.set(selected);
79
+ return this;
80
+ }
81
+ this.$description.selected = selected;
82
+ return this;
83
+ };
84
+
85
+ ListItem.prototype.divider = function(show = true) {
86
+ this.$description.divider = show;
87
+ return this;
88
+ };
89
+
90
+ ListItem.prototype.data = function(data) {
91
+ this.$description.data = data;
92
+ return this;
93
+ };
94
+
95
+ ListItem.prototype.render = function(renderFn) {
96
+ this.$description.render = renderFn;
97
+ return this;
98
+ };
99
+
100
+
101
+ ListItem.prototype.$build = function() {
102
+
103
+ };
@@ -0,0 +1,10 @@
1
+ import List from "./List";
2
+ import ListItem from "./ListItem";
3
+ import ListGroup from "./ListGroup";
4
+
5
+
6
+ export default {
7
+ List,
8
+ ListItem,
9
+ ListGroup
10
+ }